From 77eb4b2da3d7bbc6bc4c7731d2ea9565e9b8c704 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 09:27:15 +0300 Subject: [PATCH 01/78] Support syntax: ALTER VITESS_MIGRATION {DISABLE|ENABLE|THRESHOLD='...') Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/ast.go | 11 + go/vt/sqlparser/ast_clone.go | 14 + go/vt/sqlparser/ast_equals.go | 25 + go/vt/sqlparser/ast_format.go | 13 + go/vt/sqlparser/ast_format_fast.go | 15 + go/vt/sqlparser/ast_rewrite.go | 31 + go/vt/sqlparser/ast_visit.go | 16 + go/vt/sqlparser/cached_size.go | 14 + go/vt/sqlparser/constants.go | 7 + go/vt/sqlparser/keywords.go | 2 + go/vt/sqlparser/parse_test.go | 8 + go/vt/sqlparser/sql.go | 16003 +++++++++++++-------------- go/vt/sqlparser/sql.y | 37 + 13 files changed, 8183 insertions(+), 8013 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 90ddab990be..293858a53d3 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -474,6 +474,16 @@ type ( Comments Comments } + // AlterThrottlerType represents the type of operation in an ALTER VITESS_THROTTLER statement + AlterThrottlerType int8 + + // AlterThrottler represents a ALTER VITESS_THROTTLER statement + AlterThrottler struct { + Type AlterThrottlerType + Threshold string + Comments *ParsedComments + } + // RevertMigration represents a REVERT VITESS_MIGRATION statement RevertMigration struct { UUID string @@ -726,6 +736,7 @@ func (*AlterTable) iStatement() {} func (*AlterVschema) iStatement() {} func (*AlterMigration) iStatement() {} func (*RevertMigration) iStatement() {} +func (*AlterThrottler) iStatement() {} func (*ShowMigrationLogs) iStatement() {} func (*ShowThrottledApps) iStatement() {} func (*DropTable) iStatement() {} diff --git a/go/vt/sqlparser/ast_clone.go b/go/vt/sqlparser/ast_clone.go index 4fd88d4beb9..461b88980e5 100644 --- a/go/vt/sqlparser/ast_clone.go +++ b/go/vt/sqlparser/ast_clone.go @@ -51,6 +51,8 @@ func CloneSQLNode(in SQLNode) SQLNode { return CloneRefOfAlterMigration(in) case *AlterTable: return CloneRefOfAlterTable(in) + case *AlterThrottler: + return CloneRefOfAlterThrottler(in) case *AlterView: return CloneRefOfAlterView(in) case *AlterVschema: @@ -651,6 +653,16 @@ func CloneRefOfAlterTable(n *AlterTable) *AlterTable { return &out } +// CloneRefOfAlterThrottler creates a deep clone of the input. +func CloneRefOfAlterThrottler(n *AlterThrottler) *AlterThrottler { + if n == nil { + return nil + } + out := *n + out.Comments = CloneRefOfParsedComments(n.Comments) + return &out +} + // CloneRefOfAlterView creates a deep clone of the input. func CloneRefOfAlterView(n *AlterView) *AlterView { if n == nil { @@ -3746,6 +3758,8 @@ func CloneStatement(in Statement) Statement { return CloneRefOfAlterMigration(in) case *AlterTable: return CloneRefOfAlterTable(in) + case *AlterThrottler: + return CloneRefOfAlterThrottler(in) case *AlterView: return CloneRefOfAlterView(in) case *AlterVschema: diff --git a/go/vt/sqlparser/ast_equals.go b/go/vt/sqlparser/ast_equals.go index c4631140588..653f6e1035a 100644 --- a/go/vt/sqlparser/ast_equals.go +++ b/go/vt/sqlparser/ast_equals.go @@ -110,6 +110,12 @@ func EqualsSQLNode(inA, inB SQLNode) bool { return false } return EqualsRefOfAlterTable(a, b) + case *AlterThrottler: + b, ok := inB.(*AlterThrottler) + if !ok { + return false + } + return EqualsRefOfAlterThrottler(a, b) case *AlterView: b, ok := inB.(*AlterView) if !ok { @@ -1659,6 +1665,19 @@ func EqualsRefOfAlterTable(a, b *AlterTable) bool { EqualsRefOfParsedComments(a.Comments, b.Comments) } +// EqualsRefOfAlterThrottler does deep equals between the two objects. +func EqualsRefOfAlterThrottler(a, b *AlterThrottler) bool { + if a == b { + return true + } + if a == nil || b == nil { + return false + } + return a.Threshold == b.Threshold && + a.Type == b.Type && + EqualsRefOfParsedComments(a.Comments, b.Comments) +} + // EqualsRefOfAlterView does deep equals between the two objects. func EqualsRefOfAlterView(a, b *AlterView) bool { if a == b { @@ -6090,6 +6109,12 @@ func EqualsStatement(inA, inB Statement) bool { return false } return EqualsRefOfAlterTable(a, b) + case *AlterThrottler: + b, ok := inB.(*AlterThrottler) + if !ok { + return false + } + return EqualsRefOfAlterThrottler(a, b) case *AlterView: b, ok := inB.(*AlterView) if !ok { diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go index e94a1b24ab4..d399b24abc0 100644 --- a/go/vt/sqlparser/ast_format.go +++ b/go/vt/sqlparser/ast_format.go @@ -326,6 +326,19 @@ func (node *ShowThrottledApps) Format(buf *TrackedBuffer) { buf.astPrintf(node, "show vitess_throttled_apps") } +// Format formats the node. +func (node *AlterThrottler) Format(buf *TrackedBuffer) { + buf.astPrintf(node, "alter vitess_throttler") + switch node.Type { + case AlterThrottlerDisableType: + buf.astPrintf(node, " disable") + case AlterThrottlerEnableType: + buf.astPrintf(node, " enable") + case AlterThrottlerParamsType: + buf.astPrintf(node, " threshold '%s'", node.Threshold) + } +} + // Format formats the node. func (node *OptLike) Format(buf *TrackedBuffer) { buf.astPrintf(node, "like %v", node.LikeTable) diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index f8483506e9f..d648e9dbda2 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -466,6 +466,21 @@ func (node *ShowThrottledApps) formatFast(buf *TrackedBuffer) { buf.WriteString("show vitess_throttled_apps") } +// formatFast formats the node. +func (node *AlterThrottler) formatFast(buf *TrackedBuffer) { + buf.WriteString("alter vitess_throttler") + switch node.Type { + case AlterThrottlerDisableType: + buf.WriteString(" disable") + case AlterThrottlerEnableType: + buf.WriteString(" enable") + case AlterThrottlerParamsType: + buf.WriteString(" threshold '") + buf.WriteString(node.Threshold) + buf.WriteByte('\'') + } +} + // formatFast formats the node. func (node *OptLike) formatFast(buf *TrackedBuffer) { buf.WriteString("like ") diff --git a/go/vt/sqlparser/ast_rewrite.go b/go/vt/sqlparser/ast_rewrite.go index 9914b89afc2..93b804ce150 100644 --- a/go/vt/sqlparser/ast_rewrite.go +++ b/go/vt/sqlparser/ast_rewrite.go @@ -50,6 +50,8 @@ func (a *application) rewriteSQLNode(parent SQLNode, node SQLNode, replacer repl return a.rewriteRefOfAlterMigration(parent, node, replacer) case *AlterTable: return a.rewriteRefOfAlterTable(parent, node, replacer) + case *AlterThrottler: + return a.rewriteRefOfAlterThrottler(parent, node, replacer) case *AlterView: return a.rewriteRefOfAlterView(parent, node, replacer) case *AlterVschema: @@ -901,6 +903,33 @@ func (a *application) rewriteRefOfAlterTable(parent SQLNode, node *AlterTable, r } return true } +func (a *application) rewriteRefOfAlterThrottler(parent SQLNode, node *AlterThrottler, replacer replacerFunc) bool { + if node == nil { + return true + } + if a.pre != nil { + a.cur.replacer = replacer + a.cur.parent = parent + a.cur.node = node + if !a.pre(&a.cur) { + return true + } + } + if !a.rewriteRefOfParsedComments(node, node.Comments, func(newNode, parent SQLNode) { + parent.(*AlterThrottler).Comments = newNode.(*ParsedComments) + }) { + return false + } + if a.post != nil { + a.cur.replacer = replacer + a.cur.parent = parent + a.cur.node = node + if !a.post(&a.cur) { + return false + } + } + return true +} func (a *application) rewriteRefOfAlterView(parent SQLNode, node *AlterView, replacer replacerFunc) bool { if node == nil { return true @@ -8811,6 +8840,8 @@ func (a *application) rewriteStatement(parent SQLNode, node Statement, replacer return a.rewriteRefOfAlterMigration(parent, node, replacer) case *AlterTable: return a.rewriteRefOfAlterTable(parent, node, replacer) + case *AlterThrottler: + return a.rewriteRefOfAlterThrottler(parent, node, replacer) case *AlterView: return a.rewriteRefOfAlterView(parent, node, replacer) case *AlterVschema: diff --git a/go/vt/sqlparser/ast_visit.go b/go/vt/sqlparser/ast_visit.go index 27d1fdf2636..77f6c0db3c2 100644 --- a/go/vt/sqlparser/ast_visit.go +++ b/go/vt/sqlparser/ast_visit.go @@ -50,6 +50,8 @@ func VisitSQLNode(in SQLNode, f Visit) error { return VisitRefOfAlterMigration(in, f) case *AlterTable: return VisitRefOfAlterTable(in, f) + case *AlterThrottler: + return VisitRefOfAlterThrottler(in, f) case *AlterView: return VisitRefOfAlterView(in, f) case *AlterVschema: @@ -695,6 +697,18 @@ func VisitRefOfAlterTable(in *AlterTable, f Visit) error { } return nil } +func VisitRefOfAlterThrottler(in *AlterThrottler, f Visit) error { + if in == nil { + return nil + } + if cont, err := f(in); err != nil || !cont { + return err + } + if err := VisitRefOfParsedComments(in.Comments, f); err != nil { + return err + } + return nil +} func VisitRefOfAlterView(in *AlterView, f Visit) error { if in == nil { return nil @@ -4609,6 +4623,8 @@ func VisitStatement(in Statement, f Visit) error { return VisitRefOfAlterMigration(in, f) case *AlterTable: return VisitRefOfAlterTable(in, f) + case *AlterThrottler: + return VisitRefOfAlterThrottler(in, f) case *AlterView: return VisitRefOfAlterView(in, f) case *AlterVschema: diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go index e818a18e8ab..8c4beae9df4 100644 --- a/go/vt/sqlparser/cached_size.go +++ b/go/vt/sqlparser/cached_size.go @@ -245,6 +245,20 @@ func (cached *AlterTable) CachedSize(alloc bool) int64 { size += cached.Comments.CachedSize(true) return size } +func (cached *AlterThrottler) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(32) + } + // field Threshold string + size += hack.RuntimeAllocSize(int64(len(cached.Threshold))) + // field Comments *vitess.io/vitess/go/vt/sqlparser.ParsedComments + size += cached.Comments.CachedSize(true) + return size +} func (cached *AlterView) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 4204f34b376..89f40bcc137 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -822,6 +822,13 @@ const ( ExclusiveType ) +// AlterMigrationType constants +const ( + AlterThrottlerParamsType AlterThrottlerType = iota + AlterThrottlerDisableType + AlterThrottlerEnableType +) + // AlterMigrationType constants const ( RetryMigrationType AlterMigrationType = iota diff --git a/go/vt/sqlparser/keywords.go b/go/vt/sqlparser/keywords.go index ec980a05c65..0d8802c2c46 100644 --- a/go/vt/sqlparser/keywords.go +++ b/go/vt/sqlparser/keywords.go @@ -599,6 +599,7 @@ var keywords = []keyword{ {"text", TEXT}, {"than", THAN}, {"then", THEN}, + {"threshold", THRESHOLD}, {"throttle", THROTTLE}, {"time", TIME}, {"timestamp", TIMESTAMP}, @@ -663,6 +664,7 @@ var keywords = []keyword{ {"vitess_tablets", VITESS_TABLETS}, {"vitess_target", VITESS_TARGET}, {"vitess_throttled_apps", VITESS_THROTTLED_APPS}, + {"vitess_throttler", VITESS_THROTTLER}, {"vschema", VSCHEMA}, {"vstream", VSTREAM}, {"vtexplain", VTEXPLAIN}, diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 46f18963759..f2ff635a413 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2052,6 +2052,14 @@ var ( input: "alter vitess_migration throttle all ratio 0.7", }, { input: "alter vitess_migration throttle all expire '1h' ratio 0.7", + }, { + input: "show vitess_throttled_apps", + }, { + input: "alter vitess_throttler disable", + }, { + input: "alter vitess_throttler enable", + }, { + input: "alter vitess_throttler threshold '2s'", }, { input: "show warnings", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index ae153bc1b47..742d626e187 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -335,352 +335,354 @@ const THROTTLE = 57632 const UNTHROTTLE = 57633 const EXPIRE = 57634 const RATIO = 57635 -const BEGIN = 57636 -const START = 57637 -const TRANSACTION = 57638 -const COMMIT = 57639 -const ROLLBACK = 57640 -const SAVEPOINT = 57641 -const RELEASE = 57642 -const WORK = 57643 -const BIT = 57644 -const TINYINT = 57645 -const SMALLINT = 57646 -const MEDIUMINT = 57647 -const INT = 57648 -const INTEGER = 57649 -const BIGINT = 57650 -const INTNUM = 57651 -const REAL = 57652 -const DOUBLE = 57653 -const FLOAT_TYPE = 57654 -const DECIMAL_TYPE = 57655 -const NUMERIC = 57656 -const TIME = 57657 -const TIMESTAMP = 57658 -const DATETIME = 57659 -const YEAR = 57660 -const CHAR = 57661 -const VARCHAR = 57662 -const BOOL = 57663 -const CHARACTER = 57664 -const VARBINARY = 57665 -const NCHAR = 57666 -const TEXT = 57667 -const TINYTEXT = 57668 -const MEDIUMTEXT = 57669 -const LONGTEXT = 57670 -const BLOB = 57671 -const TINYBLOB = 57672 -const MEDIUMBLOB = 57673 -const LONGBLOB = 57674 -const JSON = 57675 -const JSON_SCHEMA_VALID = 57676 -const JSON_SCHEMA_VALIDATION_REPORT = 57677 -const ENUM = 57678 -const GEOMETRY = 57679 -const POINT = 57680 -const LINESTRING = 57681 -const POLYGON = 57682 -const GEOMCOLLECTION = 57683 -const GEOMETRYCOLLECTION = 57684 -const MULTIPOINT = 57685 -const MULTILINESTRING = 57686 -const MULTIPOLYGON = 57687 -const ASCII = 57688 -const UNICODE = 57689 -const NULLX = 57690 -const AUTO_INCREMENT = 57691 -const APPROXNUM = 57692 -const SIGNED = 57693 -const UNSIGNED = 57694 -const ZEROFILL = 57695 -const CODE = 57696 -const COLLATION = 57697 -const COLUMNS = 57698 -const DATABASES = 57699 -const ENGINES = 57700 -const EVENT = 57701 -const EXTENDED = 57702 -const FIELDS = 57703 -const FULL = 57704 -const FUNCTION = 57705 -const GTID_EXECUTED = 57706 -const KEYSPACES = 57707 -const OPEN = 57708 -const PLUGINS = 57709 -const PRIVILEGES = 57710 -const PROCESSLIST = 57711 -const SCHEMAS = 57712 -const TABLES = 57713 -const TRIGGERS = 57714 -const USER = 57715 -const VGTID_EXECUTED = 57716 -const VITESS_KEYSPACES = 57717 -const VITESS_METADATA = 57718 -const VITESS_MIGRATIONS = 57719 -const VITESS_REPLICATION_STATUS = 57720 -const VITESS_SHARDS = 57721 -const VITESS_TABLETS = 57722 -const VITESS_TARGET = 57723 -const VSCHEMA = 57724 -const VITESS_THROTTLED_APPS = 57725 -const NAMES = 57726 -const GLOBAL = 57727 -const SESSION = 57728 -const ISOLATION = 57729 -const LEVEL = 57730 -const READ = 57731 -const WRITE = 57732 -const ONLY = 57733 -const REPEATABLE = 57734 -const COMMITTED = 57735 -const UNCOMMITTED = 57736 -const SERIALIZABLE = 57737 -const CURRENT_TIMESTAMP = 57738 -const DATABASE = 57739 -const CURRENT_DATE = 57740 -const NOW = 57741 -const CURRENT_TIME = 57742 -const LOCALTIME = 57743 -const LOCALTIMESTAMP = 57744 -const CURRENT_USER = 57745 -const UTC_DATE = 57746 -const UTC_TIME = 57747 -const UTC_TIMESTAMP = 57748 -const DAY = 57749 -const DAY_HOUR = 57750 -const DAY_MICROSECOND = 57751 -const DAY_MINUTE = 57752 -const DAY_SECOND = 57753 -const HOUR = 57754 -const HOUR_MICROSECOND = 57755 -const HOUR_MINUTE = 57756 -const HOUR_SECOND = 57757 -const MICROSECOND = 57758 -const MINUTE = 57759 -const MINUTE_MICROSECOND = 57760 -const MINUTE_SECOND = 57761 -const MONTH = 57762 -const QUARTER = 57763 -const SECOND = 57764 -const SECOND_MICROSECOND = 57765 -const YEAR_MONTH = 57766 -const WEEK = 57767 -const REPLACE = 57768 -const CONVERT = 57769 -const CAST = 57770 -const SUBSTR = 57771 -const SUBSTRING = 57772 -const SEPARATOR = 57773 -const TIMESTAMPADD = 57774 -const TIMESTAMPDIFF = 57775 -const WEIGHT_STRING = 57776 -const LTRIM = 57777 -const RTRIM = 57778 -const TRIM = 57779 -const JSON_ARRAY = 57780 -const JSON_OBJECT = 57781 -const JSON_QUOTE = 57782 -const JSON_DEPTH = 57783 -const JSON_TYPE = 57784 -const JSON_LENGTH = 57785 -const JSON_VALID = 57786 -const JSON_ARRAY_APPEND = 57787 -const JSON_ARRAY_INSERT = 57788 -const JSON_INSERT = 57789 -const JSON_MERGE = 57790 -const JSON_MERGE_PATCH = 57791 -const JSON_MERGE_PRESERVE = 57792 -const JSON_REMOVE = 57793 -const JSON_REPLACE = 57794 -const JSON_SET = 57795 -const JSON_UNQUOTE = 57796 -const COUNT = 57797 -const AVG = 57798 -const MAX = 57799 -const MIN = 57800 -const SUM = 57801 -const GROUP_CONCAT = 57802 -const BIT_AND = 57803 -const BIT_OR = 57804 -const BIT_XOR = 57805 -const STD = 57806 -const STDDEV = 57807 -const STDDEV_POP = 57808 -const STDDEV_SAMP = 57809 -const VAR_POP = 57810 -const VAR_SAMP = 57811 -const VARIANCE = 57812 -const REGEXP_INSTR = 57813 -const REGEXP_LIKE = 57814 -const REGEXP_REPLACE = 57815 -const REGEXP_SUBSTR = 57816 -const ExtractValue = 57817 -const UpdateXML = 57818 -const GET_LOCK = 57819 -const RELEASE_LOCK = 57820 -const RELEASE_ALL_LOCKS = 57821 -const IS_FREE_LOCK = 57822 -const IS_USED_LOCK = 57823 -const LOCATE = 57824 -const POSITION = 57825 -const MATCH = 57826 -const AGAINST = 57827 -const BOOLEAN = 57828 -const LANGUAGE = 57829 -const WITH = 57830 -const QUERY = 57831 -const EXPANSION = 57832 -const WITHOUT = 57833 -const VALIDATION = 57834 -const UNUSED = 57835 -const ARRAY = 57836 -const BYTE = 57837 -const CUME_DIST = 57838 -const DESCRIPTION = 57839 -const DENSE_RANK = 57840 -const EMPTY = 57841 -const EXCEPT = 57842 -const FIRST_VALUE = 57843 -const GROUPING = 57844 -const GROUPS = 57845 -const JSON_TABLE = 57846 -const LAG = 57847 -const LAST_VALUE = 57848 -const LATERAL = 57849 -const LEAD = 57850 -const NTH_VALUE = 57851 -const NTILE = 57852 -const OF = 57853 -const OVER = 57854 -const PERCENT_RANK = 57855 -const RANK = 57856 -const RECURSIVE = 57857 -const ROW_NUMBER = 57858 -const SYSTEM = 57859 -const WINDOW = 57860 -const ACTIVE = 57861 -const ADMIN = 57862 -const AUTOEXTEND_SIZE = 57863 -const BUCKETS = 57864 -const CLONE = 57865 -const COLUMN_FORMAT = 57866 -const COMPONENT = 57867 -const DEFINITION = 57868 -const ENFORCED = 57869 -const ENGINE_ATTRIBUTE = 57870 -const EXCLUDE = 57871 -const FOLLOWING = 57872 -const GET_MASTER_PUBLIC_KEY = 57873 -const HISTOGRAM = 57874 -const HISTORY = 57875 -const INACTIVE = 57876 -const INVISIBLE = 57877 -const LOCKED = 57878 -const MASTER_COMPRESSION_ALGORITHMS = 57879 -const MASTER_PUBLIC_KEY_PATH = 57880 -const MASTER_TLS_CIPHERSUITES = 57881 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57882 -const NESTED = 57883 -const NETWORK_NAMESPACE = 57884 -const NOWAIT = 57885 -const NULLS = 57886 -const OJ = 57887 -const OLD = 57888 -const OPTIONAL = 57889 -const ORDINALITY = 57890 -const ORGANIZATION = 57891 -const OTHERS = 57892 -const PARTIAL = 57893 -const PATH = 57894 -const PERSIST = 57895 -const PERSIST_ONLY = 57896 -const PRECEDING = 57897 -const PRIVILEGE_CHECKS_USER = 57898 -const PROCESS = 57899 -const RANDOM = 57900 -const REFERENCE = 57901 -const REQUIRE_ROW_FORMAT = 57902 -const RESOURCE = 57903 -const RESPECT = 57904 -const RESTART = 57905 -const RETAIN = 57906 -const REUSE = 57907 -const ROLE = 57908 -const SECONDARY = 57909 -const SECONDARY_ENGINE = 57910 -const SECONDARY_ENGINE_ATTRIBUTE = 57911 -const SECONDARY_LOAD = 57912 -const SECONDARY_UNLOAD = 57913 -const SIMPLE = 57914 -const SKIP = 57915 -const SRID = 57916 -const THREAD_PRIORITY = 57917 -const TIES = 57918 -const UNBOUNDED = 57919 -const VCPU = 57920 -const VISIBLE = 57921 -const RETURNING = 57922 -const FORMAT_BYTES = 57923 -const FORMAT_PICO_TIME = 57924 -const PS_CURRENT_THREAD_ID = 57925 -const PS_THREAD_ID = 57926 -const GTID_SUBSET = 57927 -const GTID_SUBTRACT = 57928 -const WAIT_FOR_EXECUTED_GTID_SET = 57929 -const WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 57930 -const FORMAT = 57931 -const TREE = 57932 -const VITESS = 57933 -const TRADITIONAL = 57934 -const VTEXPLAIN = 57935 -const LOCAL = 57936 -const LOW_PRIORITY = 57937 -const NO_WRITE_TO_BINLOG = 57938 -const LOGS = 57939 -const ERROR = 57940 -const GENERAL = 57941 -const HOSTS = 57942 -const OPTIMIZER_COSTS = 57943 -const USER_RESOURCES = 57944 -const SLOW = 57945 -const CHANNEL = 57946 -const RELAY = 57947 -const EXPORT = 57948 -const CURRENT = 57949 -const ROW = 57950 -const ROWS = 57951 -const AVG_ROW_LENGTH = 57952 -const CONNECTION = 57953 -const CHECKSUM = 57954 -const DELAY_KEY_WRITE = 57955 -const ENCRYPTION = 57956 -const ENGINE = 57957 -const INSERT_METHOD = 57958 -const MAX_ROWS = 57959 -const MIN_ROWS = 57960 -const PACK_KEYS = 57961 -const PASSWORD = 57962 -const FIXED = 57963 -const DYNAMIC = 57964 -const COMPRESSED = 57965 -const REDUNDANT = 57966 -const COMPACT = 57967 -const ROW_FORMAT = 57968 -const STATS_AUTO_RECALC = 57969 -const STATS_PERSISTENT = 57970 -const STATS_SAMPLE_PAGES = 57971 -const STORAGE = 57972 -const MEMORY = 57973 -const DISK = 57974 -const PARTITIONS = 57975 -const LINEAR = 57976 -const RANGE = 57977 -const LIST = 57978 -const SUBPARTITION = 57979 -const SUBPARTITIONS = 57980 -const HASH = 57981 +const VITESS_THROTTLER = 57636 +const THRESHOLD = 57637 +const BEGIN = 57638 +const START = 57639 +const TRANSACTION = 57640 +const COMMIT = 57641 +const ROLLBACK = 57642 +const SAVEPOINT = 57643 +const RELEASE = 57644 +const WORK = 57645 +const BIT = 57646 +const TINYINT = 57647 +const SMALLINT = 57648 +const MEDIUMINT = 57649 +const INT = 57650 +const INTEGER = 57651 +const BIGINT = 57652 +const INTNUM = 57653 +const REAL = 57654 +const DOUBLE = 57655 +const FLOAT_TYPE = 57656 +const DECIMAL_TYPE = 57657 +const NUMERIC = 57658 +const TIME = 57659 +const TIMESTAMP = 57660 +const DATETIME = 57661 +const YEAR = 57662 +const CHAR = 57663 +const VARCHAR = 57664 +const BOOL = 57665 +const CHARACTER = 57666 +const VARBINARY = 57667 +const NCHAR = 57668 +const TEXT = 57669 +const TINYTEXT = 57670 +const MEDIUMTEXT = 57671 +const LONGTEXT = 57672 +const BLOB = 57673 +const TINYBLOB = 57674 +const MEDIUMBLOB = 57675 +const LONGBLOB = 57676 +const JSON = 57677 +const JSON_SCHEMA_VALID = 57678 +const JSON_SCHEMA_VALIDATION_REPORT = 57679 +const ENUM = 57680 +const GEOMETRY = 57681 +const POINT = 57682 +const LINESTRING = 57683 +const POLYGON = 57684 +const GEOMCOLLECTION = 57685 +const GEOMETRYCOLLECTION = 57686 +const MULTIPOINT = 57687 +const MULTILINESTRING = 57688 +const MULTIPOLYGON = 57689 +const ASCII = 57690 +const UNICODE = 57691 +const NULLX = 57692 +const AUTO_INCREMENT = 57693 +const APPROXNUM = 57694 +const SIGNED = 57695 +const UNSIGNED = 57696 +const ZEROFILL = 57697 +const CODE = 57698 +const COLLATION = 57699 +const COLUMNS = 57700 +const DATABASES = 57701 +const ENGINES = 57702 +const EVENT = 57703 +const EXTENDED = 57704 +const FIELDS = 57705 +const FULL = 57706 +const FUNCTION = 57707 +const GTID_EXECUTED = 57708 +const KEYSPACES = 57709 +const OPEN = 57710 +const PLUGINS = 57711 +const PRIVILEGES = 57712 +const PROCESSLIST = 57713 +const SCHEMAS = 57714 +const TABLES = 57715 +const TRIGGERS = 57716 +const USER = 57717 +const VGTID_EXECUTED = 57718 +const VITESS_KEYSPACES = 57719 +const VITESS_METADATA = 57720 +const VITESS_MIGRATIONS = 57721 +const VITESS_REPLICATION_STATUS = 57722 +const VITESS_SHARDS = 57723 +const VITESS_TABLETS = 57724 +const VITESS_TARGET = 57725 +const VSCHEMA = 57726 +const VITESS_THROTTLED_APPS = 57727 +const NAMES = 57728 +const GLOBAL = 57729 +const SESSION = 57730 +const ISOLATION = 57731 +const LEVEL = 57732 +const READ = 57733 +const WRITE = 57734 +const ONLY = 57735 +const REPEATABLE = 57736 +const COMMITTED = 57737 +const UNCOMMITTED = 57738 +const SERIALIZABLE = 57739 +const CURRENT_TIMESTAMP = 57740 +const DATABASE = 57741 +const CURRENT_DATE = 57742 +const NOW = 57743 +const CURRENT_TIME = 57744 +const LOCALTIME = 57745 +const LOCALTIMESTAMP = 57746 +const CURRENT_USER = 57747 +const UTC_DATE = 57748 +const UTC_TIME = 57749 +const UTC_TIMESTAMP = 57750 +const DAY = 57751 +const DAY_HOUR = 57752 +const DAY_MICROSECOND = 57753 +const DAY_MINUTE = 57754 +const DAY_SECOND = 57755 +const HOUR = 57756 +const HOUR_MICROSECOND = 57757 +const HOUR_MINUTE = 57758 +const HOUR_SECOND = 57759 +const MICROSECOND = 57760 +const MINUTE = 57761 +const MINUTE_MICROSECOND = 57762 +const MINUTE_SECOND = 57763 +const MONTH = 57764 +const QUARTER = 57765 +const SECOND = 57766 +const SECOND_MICROSECOND = 57767 +const YEAR_MONTH = 57768 +const WEEK = 57769 +const REPLACE = 57770 +const CONVERT = 57771 +const CAST = 57772 +const SUBSTR = 57773 +const SUBSTRING = 57774 +const SEPARATOR = 57775 +const TIMESTAMPADD = 57776 +const TIMESTAMPDIFF = 57777 +const WEIGHT_STRING = 57778 +const LTRIM = 57779 +const RTRIM = 57780 +const TRIM = 57781 +const JSON_ARRAY = 57782 +const JSON_OBJECT = 57783 +const JSON_QUOTE = 57784 +const JSON_DEPTH = 57785 +const JSON_TYPE = 57786 +const JSON_LENGTH = 57787 +const JSON_VALID = 57788 +const JSON_ARRAY_APPEND = 57789 +const JSON_ARRAY_INSERT = 57790 +const JSON_INSERT = 57791 +const JSON_MERGE = 57792 +const JSON_MERGE_PATCH = 57793 +const JSON_MERGE_PRESERVE = 57794 +const JSON_REMOVE = 57795 +const JSON_REPLACE = 57796 +const JSON_SET = 57797 +const JSON_UNQUOTE = 57798 +const COUNT = 57799 +const AVG = 57800 +const MAX = 57801 +const MIN = 57802 +const SUM = 57803 +const GROUP_CONCAT = 57804 +const BIT_AND = 57805 +const BIT_OR = 57806 +const BIT_XOR = 57807 +const STD = 57808 +const STDDEV = 57809 +const STDDEV_POP = 57810 +const STDDEV_SAMP = 57811 +const VAR_POP = 57812 +const VAR_SAMP = 57813 +const VARIANCE = 57814 +const REGEXP_INSTR = 57815 +const REGEXP_LIKE = 57816 +const REGEXP_REPLACE = 57817 +const REGEXP_SUBSTR = 57818 +const ExtractValue = 57819 +const UpdateXML = 57820 +const GET_LOCK = 57821 +const RELEASE_LOCK = 57822 +const RELEASE_ALL_LOCKS = 57823 +const IS_FREE_LOCK = 57824 +const IS_USED_LOCK = 57825 +const LOCATE = 57826 +const POSITION = 57827 +const MATCH = 57828 +const AGAINST = 57829 +const BOOLEAN = 57830 +const LANGUAGE = 57831 +const WITH = 57832 +const QUERY = 57833 +const EXPANSION = 57834 +const WITHOUT = 57835 +const VALIDATION = 57836 +const UNUSED = 57837 +const ARRAY = 57838 +const BYTE = 57839 +const CUME_DIST = 57840 +const DESCRIPTION = 57841 +const DENSE_RANK = 57842 +const EMPTY = 57843 +const EXCEPT = 57844 +const FIRST_VALUE = 57845 +const GROUPING = 57846 +const GROUPS = 57847 +const JSON_TABLE = 57848 +const LAG = 57849 +const LAST_VALUE = 57850 +const LATERAL = 57851 +const LEAD = 57852 +const NTH_VALUE = 57853 +const NTILE = 57854 +const OF = 57855 +const OVER = 57856 +const PERCENT_RANK = 57857 +const RANK = 57858 +const RECURSIVE = 57859 +const ROW_NUMBER = 57860 +const SYSTEM = 57861 +const WINDOW = 57862 +const ACTIVE = 57863 +const ADMIN = 57864 +const AUTOEXTEND_SIZE = 57865 +const BUCKETS = 57866 +const CLONE = 57867 +const COLUMN_FORMAT = 57868 +const COMPONENT = 57869 +const DEFINITION = 57870 +const ENFORCED = 57871 +const ENGINE_ATTRIBUTE = 57872 +const EXCLUDE = 57873 +const FOLLOWING = 57874 +const GET_MASTER_PUBLIC_KEY = 57875 +const HISTOGRAM = 57876 +const HISTORY = 57877 +const INACTIVE = 57878 +const INVISIBLE = 57879 +const LOCKED = 57880 +const MASTER_COMPRESSION_ALGORITHMS = 57881 +const MASTER_PUBLIC_KEY_PATH = 57882 +const MASTER_TLS_CIPHERSUITES = 57883 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57884 +const NESTED = 57885 +const NETWORK_NAMESPACE = 57886 +const NOWAIT = 57887 +const NULLS = 57888 +const OJ = 57889 +const OLD = 57890 +const OPTIONAL = 57891 +const ORDINALITY = 57892 +const ORGANIZATION = 57893 +const OTHERS = 57894 +const PARTIAL = 57895 +const PATH = 57896 +const PERSIST = 57897 +const PERSIST_ONLY = 57898 +const PRECEDING = 57899 +const PRIVILEGE_CHECKS_USER = 57900 +const PROCESS = 57901 +const RANDOM = 57902 +const REFERENCE = 57903 +const REQUIRE_ROW_FORMAT = 57904 +const RESOURCE = 57905 +const RESPECT = 57906 +const RESTART = 57907 +const RETAIN = 57908 +const REUSE = 57909 +const ROLE = 57910 +const SECONDARY = 57911 +const SECONDARY_ENGINE = 57912 +const SECONDARY_ENGINE_ATTRIBUTE = 57913 +const SECONDARY_LOAD = 57914 +const SECONDARY_UNLOAD = 57915 +const SIMPLE = 57916 +const SKIP = 57917 +const SRID = 57918 +const THREAD_PRIORITY = 57919 +const TIES = 57920 +const UNBOUNDED = 57921 +const VCPU = 57922 +const VISIBLE = 57923 +const RETURNING = 57924 +const FORMAT_BYTES = 57925 +const FORMAT_PICO_TIME = 57926 +const PS_CURRENT_THREAD_ID = 57927 +const PS_THREAD_ID = 57928 +const GTID_SUBSET = 57929 +const GTID_SUBTRACT = 57930 +const WAIT_FOR_EXECUTED_GTID_SET = 57931 +const WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 57932 +const FORMAT = 57933 +const TREE = 57934 +const VITESS = 57935 +const TRADITIONAL = 57936 +const VTEXPLAIN = 57937 +const LOCAL = 57938 +const LOW_PRIORITY = 57939 +const NO_WRITE_TO_BINLOG = 57940 +const LOGS = 57941 +const ERROR = 57942 +const GENERAL = 57943 +const HOSTS = 57944 +const OPTIMIZER_COSTS = 57945 +const USER_RESOURCES = 57946 +const SLOW = 57947 +const CHANNEL = 57948 +const RELAY = 57949 +const EXPORT = 57950 +const CURRENT = 57951 +const ROW = 57952 +const ROWS = 57953 +const AVG_ROW_LENGTH = 57954 +const CONNECTION = 57955 +const CHECKSUM = 57956 +const DELAY_KEY_WRITE = 57957 +const ENCRYPTION = 57958 +const ENGINE = 57959 +const INSERT_METHOD = 57960 +const MAX_ROWS = 57961 +const MIN_ROWS = 57962 +const PACK_KEYS = 57963 +const PASSWORD = 57964 +const FIXED = 57965 +const DYNAMIC = 57966 +const COMPRESSED = 57967 +const REDUNDANT = 57968 +const COMPACT = 57969 +const ROW_FORMAT = 57970 +const STATS_AUTO_RECALC = 57971 +const STATS_PERSISTENT = 57972 +const STATS_SAMPLE_PAGES = 57973 +const STORAGE = 57974 +const MEMORY = 57975 +const DISK = 57976 +const PARTITIONS = 57977 +const LINEAR = 57978 +const RANGE = 57979 +const LIST = 57980 +const SUBPARTITION = 57981 +const SUBPARTITIONS = 57982 +const HASH = 57983 var yyToknames = [...]string{ "$end", @@ -993,6 +995,8 @@ var yyToknames = [...]string{ "UNTHROTTLE", "EXPIRE", "RATIO", + "VITESS_THROTTLER", + "THRESHOLD", "BEGIN", "START", "TRANSACTION", @@ -1359,29 +1363,29 @@ var yyExca = [...]int{ -2, 37, -1, 49, 1, 147, - 657, 147, + 659, 147, -2, 155, -1, 50, 135, 155, 176, 155, - 339, 155, - -2, 505, + 341, 155, + -2, 507, -1, 57, - 36, 751, - 238, 751, - 249, 751, - 284, 765, - 285, 765, - -2, 753, + 36, 756, + 238, 756, + 249, 756, + 284, 770, + 285, 770, + -2, 758, -1, 62, - 240, 782, - -2, 780, + 240, 787, + -2, 785, -1, 116, - 237, 1438, + 237, 1443, -2, 121, -1, 118, 1, 148, - 657, 148, + 659, 148, -2, 155, -1, 129, 136, 391, @@ -1390,1085 +1394,1000 @@ var yyExca = [...]int{ -1, 148, 135, 155, 176, 155, - 339, 155, - -2, 514, - -1, 798, - 87, 1455, - -2, 1300, - -1, 799, - 87, 1456, - 221, 1460, - -2, 1301, + 341, 155, + -2, 516, -1, 800, - 221, 1459, + 87, 1460, + -2, 1305, + -1, 801, + 87, 1461, + 221, 1465, + -2, 1306, + -1, 802, + 221, 1464, -2, 39, - -1, 880, - 60, 851, - -2, 866, - -1, 966, + -1, 882, + 60, 856, + -2, 871, + -1, 968, 248, 40, 253, 40, -2, 402, - -1, 1051, - 1, 562, - 657, 562, + -1, 1054, + 1, 564, + 659, 564, -2, 155, - -1, 1340, - 221, 1460, - -2, 1301, - -1, 1488, - 60, 852, - -2, 871, - -1, 1489, - 60, 853, - -2, 872, - -1, 1540, + -1, 1343, + 221, 1465, + -2, 1306, + -1, 1491, + 60, 857, + -2, 876, + -1, 1492, + 60, 858, + -2, 877, + -1, 1543, 135, 155, 176, 155, - 339, 155, + 341, 155, -2, 441, - -1, 1619, + -1, 1622, 136, 391, 243, 391, -2, 494, - -1, 1628, + -1, 1631, 248, 41, 253, 41, -2, 403, - -1, 1982, - 221, 1464, - -2, 1458, - -1, 1983, - 221, 1460, - -2, 1456, - -1, 2082, + -1, 1989, + 221, 1469, + -2, 1463, + -1, 1990, + 221, 1465, + -2, 1461, + -1, 2089, 135, 155, 176, 155, - 339, 155, + 341, 155, -2, 442, - -1, 2089, + -1, 2096, 26, 176, -2, 178, - -1, 2452, + -1, 2460, 78, 95, 88, 95, - -2, 930, - -1, 2520, - 632, 678, - -2, 652, - -1, 2687, - 50, 1397, - -2, 1391, - -1, 2985, + -2, 935, + -1, 2528, + 634, 683, + -2, 657, + -1, 2695, + 50, 1402, + -2, 1396, + -1, 2993, 8, 54, 19, 54, 21, 54, 89, 54, - -2, 900, - -1, 3344, - 632, 678, - -2, 666, - -1, 3432, - 23, 1816, - 33, 1816, - 177, 1816, - 260, 1816, - 319, 1816, - 320, 1816, - 321, 1816, - 322, 1816, - 323, 1816, - 324, 1816, - 325, 1816, - 327, 1816, - 328, 1816, - 329, 1816, - 330, 1816, - 331, 1816, - 332, 1816, - 333, 1816, - 334, 1816, - 335, 1816, - 336, 1816, - 337, 1816, - 338, 1816, - 340, 1816, - 342, 1816, - 343, 1816, - 344, 1816, - 345, 1816, - 346, 1816, - 347, 1816, - 348, 1816, - 349, 1816, - 350, 1816, - 353, 1816, - 354, 1816, - 355, 1816, - 356, 1816, - 357, 1816, - 359, 1816, - 360, 1816, - 361, 1816, - 362, 1816, - 503, 1816, - -2, 610, + -2, 905, + -1, 3352, + 634, 683, + -2, 671, + -1, 3440, + 23, 1821, + 33, 1821, + 177, 1821, + 260, 1821, + 321, 1821, + 322, 1821, + 323, 1821, + 324, 1821, + 325, 1821, + 326, 1821, + 327, 1821, + 329, 1821, + 330, 1821, + 331, 1821, + 332, 1821, + 333, 1821, + 334, 1821, + 335, 1821, + 336, 1821, + 337, 1821, + 338, 1821, + 339, 1821, + 340, 1821, + 342, 1821, + 344, 1821, + 345, 1821, + 346, 1821, + 347, 1821, + 348, 1821, + 349, 1821, + 350, 1821, + 351, 1821, + 352, 1821, + 355, 1821, + 356, 1821, + 357, 1821, + 358, 1821, + 359, 1821, + 361, 1821, + 362, 1821, + 363, 1821, + 364, 1821, + 505, 1821, + -2, 615, } const yyPrivate = 57344 -const yyLast = 47178 +const yyLast = 46443 var yyAct = [...]int{ - 1496, 3514, 3503, 802, 3473, 3092, 3093, 3409, 3091, 3472, - 2079, 3430, 2031, 3062, 1543, 3325, 2917, 3375, 2839, 3398, - 809, 2742, 2749, 2011, 3257, 2799, 801, 672, 3309, 768, - 1849, 2804, 39, 2801, 2800, 2798, 2803, 2802, 2790, 652, - 3307, 1114, 3049, 2700, 2350, 5, 3121, 2013, 2703, 2646, - 873, 799, 2819, 3297, 2384, 2757, 654, 2701, 2149, 2704, - 2956, 2950, 2581, 682, 2818, 896, 3126, 2976, 763, 2821, - 2051, 762, 1466, 2698, 1503, 2035, 2688, 2410, 1973, 2942, - 650, 2112, 2485, 2517, 769, 2565, 2137, 2423, 2117, 2845, - 2446, 1597, 928, 2486, 2067, 2487, 157, 998, 2180, 2435, - 40, 1116, 2416, 897, 189, 38, 2055, 189, 1490, 877, - 632, 881, 2056, 2402, 2386, 638, 1970, 875, 1978, 1944, - 1845, 1864, 1092, 1803, 1943, 189, 2557, 2158, 1626, 2197, - 899, 2043, 2136, 974, 2479, 143, 956, 961, 2119, 1532, - 189, 2454, 646, 98, 1063, 664, 1512, 2058, 1352, 1470, - 94, 1868, 764, 1822, 1747, 935, 1743, 99, 1280, 932, - 1633, 967, 1725, 964, 2134, 638, 189, 638, 936, 962, - 963, 2108, 2036, 1531, 1517, 914, 659, 916, 887, 1940, - 10, 1644, 883, 1312, 1979, 1336, 1106, 882, 884, 9, - 101, 79, 1877, 8, 1752, 1618, 126, 651, 161, 121, - 119, 120, 1592, 1047, 127, 885, 1112, 658, 909, 78, - 2003, 100, 1356, 3334, 2510, 87, 1360, 641, 92, 3504, - 2151, 2152, 2153, 2151, 3050, 2787, 2508, 904, 908, 2195, - 588, 2540, 2539, 3360, 3042, 3005, 89, 89, 1281, 3456, - 2573, 2574, 3355, 1000, 890, 1003, 128, 2809, 122, 93, - 1710, 929, 627, 3356, 627, 2, 1017, 1018, 1019, 3361, - 1022, 1023, 1024, 1025, 978, 621, 1028, 1029, 1030, 1031, - 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 924, 1810, 642, 1011, 923, 1809, 876, - 874, 818, 819, 820, 977, 953, 621, 105, 106, 107, - 1808, 110, 3096, 2807, 116, 891, 954, 185, 3096, 1807, - 583, 2809, 1281, 1004, 1007, 1008, 898, 122, 952, 951, - 950, 640, 2238, 1806, 2806, 1805, 818, 819, 820, 2813, - 869, 870, 871, 872, 1020, 89, 880, 1783, 618, 3451, - 3410, 3356, 2382, 2008, 2009, 1291, 2684, 922, 766, 767, - 922, 766, 767, 89, 1825, 644, 2184, 645, 3476, 1497, - 2530, 2412, 940, 3460, 911, 912, 945, 2807, 2650, 3524, - 1297, 3458, 3471, 3494, 3440, 2922, 2921, 2182, 2533, 3310, - 2351, 1815, 2864, 3253, 3252, 122, 604, 621, 3459, 3095, - 2745, 621, 3438, 2813, 621, 3095, 3457, 1002, 602, 1001, - 2183, 3444, 3445, 3055, 3485, 2247, 3056, 2128, 3263, 2759, - 2760, 3454, 3074, 80, 3063, 3416, 3439, 3399, 3406, 1291, - 2177, 3339, 3262, 3073, 1854, 80, 3435, 1607, 2884, 2039, - 2122, 2383, 2547, 2548, 80, 2746, 2463, 82, 599, 2462, - 2810, 1533, 2464, 1534, 80, 2738, 1287, 613, 2073, 1279, - 3416, 1050, 2739, 2740, 2074, 2075, 2572, 1313, 2556, 2748, - 2244, 1082, 609, 949, 1109, 1056, 1057, 867, 2426, 622, - 2245, 866, 3326, 1070, 3139, 1083, 2475, 2743, 1071, 2861, - 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1322, 1321, 1323, - 1324, 89, 621, 2427, 2759, 2760, 2511, 1059, 1076, 2841, - 622, 2744, 2953, 89, 2810, 1294, 2872, 1295, 1296, 2870, - 944, 635, 89, 946, 1070, 2615, 2758, 1087, 1088, 1071, - 1287, 947, 89, 2092, 2091, 2419, 2420, 1069, 2761, 1068, - 633, 1791, 639, 589, 2750, 591, 605, 621, 624, 2846, - 623, 595, 1474, 593, 597, 606, 598, 3477, 592, 2010, - 603, 2558, 1046, 594, 607, 608, 611, 614, 615, 616, - 612, 610, 1084, 601, 625, 1530, 621, 2518, 3478, 915, - 2159, 2543, 1108, 3285, 2203, 3286, 2121, 1700, 1021, 2239, - 2240, 2242, 2241, 2198, 1731, 1077, 2842, 3506, 2834, 1726, - 2218, 622, 2219, 1103, 2220, 622, 2835, 1091, 622, 1085, - 1086, 2758, 1052, 2560, 2843, 949, 1045, 3044, 2039, 2202, - 949, 3043, 941, 2761, 1089, 2037, 2038, 2221, 2200, 943, - 942, 1701, 1027, 1702, 1090, 1026, 1099, 3237, 1101, 2204, - 3040, 1477, 2162, 957, 189, 987, 189, 958, 3100, 189, - 985, 948, 2210, 2206, 2208, 2209, 2207, 2211, 2212, 2052, - 958, 2201, 996, 995, 994, 1611, 993, 925, 919, 917, - 925, 919, 917, 3452, 992, 991, 1098, 1100, 947, 638, - 1049, 638, 638, 990, 2616, 1286, 1283, 1284, 1285, 1290, - 1292, 1289, 997, 1288, 989, 984, 933, 2245, 2761, 933, - 931, 638, 189, 1282, 970, 1327, 622, 3525, 1632, 3483, - 1330, 1331, 1332, 1333, 1080, 1327, 2649, 933, 3518, 2564, - 1344, 1006, 910, 1348, 969, 2561, 2780, 969, 1744, 1340, - 2135, 1005, 2387, 2389, 2747, 2188, 2187, 1740, 1272, 1014, - 976, 1104, 3333, 2509, 1066, 2542, 1072, 1073, 1074, 1075, - 1605, 622, 1604, 3039, 1603, 3322, 2528, 184, 1741, 1286, - 1283, 1284, 1285, 1290, 1292, 1289, 2992, 1288, 2513, 1110, - 1111, 955, 2545, 1601, 2477, 1096, 2179, 1282, 1048, 1097, - 622, 123, 626, 145, 815, 815, 587, 1267, 2181, 1102, - 2577, 988, 2512, 948, 166, 582, 986, 1529, 948, 3412, - 2259, 2417, 2954, 619, 2037, 2038, 1734, 2555, 1732, 1733, - 2554, 1735, 1736, 1095, 2080, 1631, 1328, 1329, 620, 2972, - 2459, 2422, 1334, 2359, 1327, 156, 1857, 1521, 1429, 3411, - 1338, 144, 2862, 1061, 3412, 3443, 1268, 1269, 118, 1324, - 1730, 975, 1878, 2737, 2125, 893, 2811, 2812, 1107, 1065, - 163, 3003, 3004, 164, 1464, 3347, 1879, 1093, 999, 2815, - 2567, 1753, 3072, 3035, 3411, 2566, 1712, 1711, 1713, 1714, - 1715, 1340, 1620, 1621, 155, 154, 183, 918, 83, 3442, - 918, 113, 2567, 815, 2126, 2966, 2199, 2566, 1800, 1737, - 2532, 2124, 1535, 1498, 1500, 3094, 1297, 2246, 2388, 3486, - 1013, 3094, 2601, 1869, 1358, 976, 1359, 2501, 1296, 2751, - 2811, 2812, 1362, 2755, 1480, 3135, 1079, 3010, 1484, 88, - 2754, 976, 3009, 2815, 877, 2127, 2166, 1081, 189, 1641, - 1465, 88, 638, 638, 2531, 2123, 3516, 1481, 1640, 3517, - 88, 3515, 1319, 1320, 1322, 1321, 1323, 1324, 189, 1478, - 88, 1295, 1296, 114, 2756, 1869, 1055, 2276, 1630, 2752, - 1058, 2176, 1067, 2171, 2753, 2174, 987, 976, 638, 3479, - 2178, 189, 985, 2906, 976, 149, 1622, 152, 2171, 1619, - 2993, 150, 151, 638, 889, 1876, 1975, 167, 1727, 189, - 1728, 1482, 1064, 1729, 1465, 98, 173, 1435, 1436, 1437, - 1438, 1439, 2175, 3520, 1094, 1483, 975, 3377, 1754, 99, - 3526, 976, 969, 972, 973, 3315, 933, 2173, 3245, 3244, - 966, 970, 975, 1720, 1471, 1051, 638, 1458, 969, 972, - 973, 1294, 933, 1295, 1296, 1718, 966, 970, 3235, 1340, - 2603, 965, 101, 3085, 1707, 638, 638, 3069, 638, 3070, - 638, 638, 3378, 638, 638, 638, 638, 638, 638, 3084, - 3316, 1608, 1609, 1610, 3017, 3016, 1340, 1624, 975, 1340, - 638, 1340, 189, 979, 969, 975, 3006, 2788, 981, 1297, - 979, 969, 982, 980, 2838, 981, 2776, 1719, 1695, 982, - 980, 1297, 189, 1468, 2483, 1297, 2482, 3527, 874, 1717, - 1479, 2303, 1502, 1499, 876, 638, 1617, 189, 1706, 2131, - 983, 1677, 975, 1636, 1012, 158, 1634, 1634, 1009, 2044, - 2045, 638, 1721, 189, 2251, 2252, 2253, 1705, 1685, 1686, - 1526, 1527, 1704, 1827, 1691, 1692, 818, 819, 820, 189, - 1638, 1703, 1693, 1687, 1635, 1485, 189, 1828, 1325, 1326, - 1826, 1684, 2582, 1600, 1297, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 638, 1614, 1615, 1673, 1683, 1682, - 1676, 1271, 1678, 1749, 1613, 1918, 1646, 1653, 1647, 1627, - 1649, 1651, 3000, 627, 1655, 1657, 1659, 1661, 1663, 1817, - 1819, 1820, 627, 153, 2466, 627, 1530, 1681, 2147, 2146, - 1506, 1755, 1756, 1317, 1318, 1319, 1320, 1322, 1321, 1323, - 1324, 1606, 3480, 1818, 1294, 1760, 1295, 1296, 2145, 2144, - 2143, 2142, 1767, 1768, 1769, 1745, 1294, 3342, 1295, 1296, - 1294, 1757, 1295, 1296, 3341, 2584, 1297, 1497, 1761, 1497, - 1763, 1764, 1765, 1766, 1874, 104, 1507, 1770, 2408, 3505, - 3467, 1497, 1497, 1875, 146, 3319, 103, 147, 102, 1782, - 122, 952, 951, 950, 1910, 1899, 1900, 1901, 1902, 1912, - 1903, 1904, 1905, 1917, 1913, 1906, 1907, 1914, 1915, 1916, - 1908, 1909, 1911, 1759, 3335, 1297, 1975, 159, 3318, 1294, - 1972, 1295, 1296, 3317, 171, 1297, 2273, 1293, 1497, 1974, - 1781, 95, 2594, 2593, 2592, 2586, 3240, 2590, 97, 2585, - 3224, 2583, 96, 813, 3223, 39, 2588, 2264, 3134, 1780, - 3490, 1497, 1313, 1297, 2576, 2587, 1497, 2313, 638, 638, - 1297, 1796, 2408, 3405, 3271, 179, 638, 1293, 1497, 2408, - 3385, 189, 3132, 2589, 2591, 1314, 1315, 1316, 1317, 1318, - 1319, 1320, 1322, 1321, 1323, 1324, 2408, 3381, 3270, 1852, - 1852, 1831, 3368, 1497, 3228, 1850, 1850, 1497, 1872, 2272, - 1853, 1294, 1873, 1295, 1296, 3081, 160, 165, 162, 168, - 169, 170, 172, 174, 175, 176, 177, 1464, 1463, 638, - 1462, 1821, 178, 180, 181, 182, 3053, 3332, 3227, 1340, - 1297, 3248, 1497, 1823, 1461, 1297, 1936, 3488, 1497, 3061, - 638, 2408, 3236, 2519, 3422, 1497, 1340, 1297, 3014, 2879, - 1294, 2999, 1295, 1296, 1313, 3053, 1497, 1309, 2847, 1310, - 1294, 2497, 1295, 1296, 1968, 2408, 3051, 2171, 1497, 2970, - 1497, 638, 638, 1311, 1325, 1326, 1308, 1314, 1315, 1316, - 1317, 1318, 1319, 1320, 1322, 1321, 1323, 1324, 1294, 1997, - 1295, 1296, 2844, 1465, 1824, 1294, 1799, 1295, 1296, 1297, - 2324, 1497, 1930, 2779, 79, 1797, 1498, 2004, 2778, 1798, - 2492, 1980, 1941, 1788, 1789, 1497, 2088, 1510, 2480, 3420, - 1497, 1983, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1299, - 1338, 3418, 1497, 1829, 1971, 95, 2769, 2768, 2765, 2766, - 2028, 1297, 184, 2765, 2764, 2965, 96, 1870, 1830, 1460, - 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, - 1842, 1843, 1844, 1856, 189, 1294, 123, 1295, 1296, 638, - 1294, 1982, 1295, 1296, 1863, 1865, 2432, 1497, 1293, 166, - 2005, 2193, 1294, 1509, 1295, 1296, 1941, 2021, 2192, 2022, - 1985, 1986, 2034, 189, 2089, 2016, 638, 1880, 1881, 1882, - 1883, 1497, 1297, 1980, 2245, 2541, 189, 1784, 98, 97, - 638, 1894, 1297, 1983, 189, 1750, 189, 1716, 189, 189, - 1708, 1313, 99, 1698, 1981, 3294, 1497, 2967, 98, 1932, - 1596, 2522, 3373, 638, 1294, 163, 1295, 1296, 164, 2027, - 2132, 2404, 99, 2315, 1314, 1315, 1316, 1317, 1318, 1319, - 1320, 1322, 1321, 1323, 1324, 1984, 97, 2054, 1987, 1988, - 1694, 183, 2455, 1982, 2515, 2516, 2408, 2407, 1497, 2455, - 2098, 2099, 2100, 2101, 2084, 1690, 1294, 2083, 1295, 1296, - 2093, 1689, 2094, 2095, 2096, 2097, 3292, 1497, 638, 1688, - 890, 2065, 1508, 2015, 2269, 1497, 3289, 1497, 2104, 2105, - 2106, 2107, 1315, 1316, 1317, 1318, 1319, 1320, 1322, 1321, - 1323, 1324, 2026, 2114, 2269, 638, 2049, 1105, 2160, 2087, - 2029, 638, 2120, 1855, 1497, 2456, 1596, 1595, 1541, 1540, - 2172, 2431, 2456, 2047, 1313, 2458, 2258, 1294, 2424, 1295, - 1296, 924, 2245, 2071, 2070, 923, 2069, 1294, 2424, 1295, - 1296, 2086, 2085, 3346, 1297, 103, 2157, 1314, 1315, 1316, - 1317, 1318, 1319, 1320, 1322, 1321, 1323, 1324, 638, 2130, - 2732, 104, 167, 638, 2699, 2408, 2432, 638, 638, 2926, - 2245, 173, 103, 2767, 102, 2965, 2432, 2672, 2171, 2840, - 2072, 2269, 2115, 97, 2324, 2300, 978, 3018, 2299, 2165, - 2110, 2111, 2168, 2133, 2169, 2129, 1634, 2171, 2154, 2185, - 2432, 2141, 2042, 1501, 2006, 189, 1855, 1801, 1297, 1739, - 2965, 1528, 189, 960, 1293, 2164, 977, 2115, 1669, 2163, - 1313, 189, 189, 2167, 879, 189, 959, 189, 3275, 1497, - 89, 3448, 2189, 3388, 189, 2186, 2190, 2191, 3019, 3020, - 3021, 189, 1497, 1314, 1315, 1316, 1317, 1318, 1319, 1320, - 1322, 1321, 1323, 1324, 1314, 1315, 1316, 1317, 1318, 1319, - 1320, 1322, 1321, 1323, 1324, 3259, 1504, 189, 3225, 1670, - 1671, 1672, 638, 3260, 3146, 3034, 1297, 2196, 3031, 1294, - 3012, 1295, 1296, 2889, 2888, 1297, 1598, 2262, 2113, 2836, - 158, 2267, 2941, 1497, 2270, 2793, 2271, 2789, 2256, 2523, - 2109, 2278, 89, 2103, 2102, 2280, 2281, 2282, 1723, 1629, - 1297, 1625, 1594, 115, 2488, 2288, 2289, 2290, 2291, 2292, - 2293, 2294, 2295, 2296, 2297, 2791, 2489, 3022, 2224, 2263, - 2231, 2232, 1050, 2977, 2978, 2234, 2128, 1340, 2019, 1983, - 3500, 1823, 1786, 1294, 2235, 1295, 1296, 1297, 3498, 2025, - 2266, 2304, 2305, 2306, 2307, 2308, 1297, 2310, 1665, 3474, - 2265, 2312, 2489, 3354, 3280, 2317, 2318, 2980, 2319, 2934, - 1497, 2322, 3350, 2323, 3023, 3024, 3025, 2326, 2785, 1297, - 2283, 2330, 2784, 3261, 2783, 2335, 2336, 2337, 2338, 1982, - 2243, 2699, 2502, 2225, 2931, 1497, 1297, 2298, 2349, 2983, - 2352, 2353, 1824, 2982, 1787, 1666, 1667, 1668, 2355, 2357, - 2254, 1294, 1297, 1295, 1296, 2360, 2361, 2362, 2363, 2364, - 1294, 2718, 1295, 1296, 2717, 2721, 2371, 2372, 2033, 2373, - 2722, 3266, 2376, 2378, 2028, 1505, 2380, 1297, 2261, 2719, - 2929, 1497, 1981, 2971, 2720, 1294, 2392, 1295, 1296, 2275, - 3314, 2723, 1297, 2441, 2442, 2255, 2677, 2257, 2676, 3116, - 3125, 3115, 159, 2894, 1497, 2958, 2689, 2691, 1852, 171, - 2961, 894, 3127, 2957, 1850, 2692, 2686, 2763, 2393, 895, - 2877, 1497, 1294, 1738, 1295, 1296, 865, 2473, 189, 2493, - 1016, 1294, 2391, 1295, 1296, 1015, 189, 3481, 1878, 2437, - 2440, 2441, 2442, 2438, 2309, 2439, 2443, 638, 1297, 3114, - 179, 39, 1879, 95, 1294, 2855, 1295, 1296, 638, 2488, - 2448, 2379, 1497, 1297, 96, 2570, 2394, 2428, 2396, 1297, - 1270, 1294, 95, 1295, 1296, 1297, 2377, 1497, 2529, 97, - 2409, 1297, 189, 96, 123, 2963, 189, 1294, 97, 1295, - 1296, 160, 165, 162, 168, 169, 170, 172, 174, 175, - 176, 177, 2044, 2045, 2217, 3512, 2405, 178, 180, 181, - 182, 2418, 1294, 1297, 1295, 1296, 2781, 2228, 3427, 3331, - 3255, 2762, 2445, 2030, 1471, 647, 2381, 1294, 2216, 1295, - 1296, 2675, 2356, 1497, 902, 903, 2447, 1297, 2514, 2674, - 2476, 2478, 2215, 2214, 1297, 2213, 2406, 2401, 3330, 2469, - 638, 2943, 1297, 2339, 1497, 2311, 189, 2249, 2453, 2421, - 3232, 104, 102, 189, 1297, 2331, 1497, 3302, 1297, 3301, - 2538, 3283, 103, 103, 102, 2120, 3133, 638, 2457, 1297, - 3122, 3131, 2460, 1294, 638, 1295, 1296, 1297, 2467, 2491, - 3130, 3123, 2470, 638, 2494, 2495, 1297, 2987, 1294, 3032, - 1295, 1296, 1297, 2951, 1294, 2962, 1295, 1296, 2481, 1340, - 1294, 1297, 1295, 1296, 2960, 2794, 1294, 2155, 1295, 1296, - 1612, 2936, 189, 189, 189, 189, 189, 2490, 900, 1497, - 901, 906, 906, 2499, 2498, 2424, 3104, 3036, 3502, 3501, - 2535, 2503, 2504, 2505, 2404, 1297, 189, 189, 1294, 2484, - 1295, 1296, 2932, 104, 2605, 2606, 2607, 2608, 2609, 1297, - 1617, 2617, 2301, 2904, 103, 2524, 2525, 189, 1297, 2579, - 3501, 2900, 1294, 2614, 1295, 1296, 2017, 1522, 1297, 1294, - 2886, 1295, 1296, 2534, 1514, 1297, 2885, 1294, 638, 1295, - 1296, 108, 109, 3502, 3, 2882, 3320, 2998, 2595, 1294, - 892, 1295, 1296, 1294, 91, 1295, 1296, 1, 3002, 2578, - 2536, 2597, 3437, 2559, 1294, 600, 1295, 1296, 2562, 2610, - 2007, 1469, 1294, 2568, 1295, 1296, 2569, 3475, 3433, 2375, - 3434, 1294, 1709, 1295, 1296, 638, 1699, 1294, 3064, 1295, - 1296, 1942, 104, 2374, 3256, 2797, 1294, 2161, 1295, 1296, - 3030, 2118, 2370, 103, 968, 102, 148, 2596, 2081, 2082, - 3401, 2598, 2369, 112, 97, 926, 111, 971, 2651, 2368, - 2627, 2656, 2629, 638, 1078, 2653, 2156, 3054, 2474, 2090, - 1294, 638, 1295, 1296, 1547, 1545, 1546, 1544, 2640, 2641, - 2642, 2643, 1549, 1971, 1294, 1971, 1295, 1296, 1548, 2863, - 2708, 2302, 2905, 1294, 2619, 1295, 1296, 1790, 634, 2444, - 628, 186, 638, 1294, 2625, 1295, 1296, 2726, 2727, 1536, - 1294, 1515, 1295, 1296, 1297, 2918, 189, 1010, 2580, 881, - 638, 590, 2770, 2194, 2656, 2635, 2636, 2637, 2638, 2639, - 596, 2652, 1345, 2654, 638, 2711, 2731, 2655, 1340, 1484, - 2448, 638, 638, 1340, 189, 189, 189, 189, 189, 2696, - 2679, 1785, 2673, 2461, 921, 2680, 189, 913, 2018, 2395, - 2667, 189, 920, 3233, 189, 2707, 189, 2955, 2685, 189, - 189, 189, 2705, 2687, 2681, 2678, 2693, 2694, 1495, 1491, - 2411, 2668, 2669, 2670, 2690, 2683, 3313, 3124, 3386, 2471, - 883, 1511, 2925, 1492, 2274, 882, 2817, 1867, 2367, 2712, - 1335, 2059, 2715, 2724, 3099, 2733, 2713, 2714, 2734, 2716, - 1297, 1816, 98, 2735, 189, 2728, 2729, 656, 2023, 2024, - 1494, 1749, 1493, 655, 653, 2741, 99, 638, 2397, 2425, - 1340, 1300, 2671, 803, 2385, 638, 2857, 1523, 2436, 2702, - 189, 2773, 2772, 2771, 2702, 2434, 2774, 2775, 2433, 1294, - 2226, 1295, 1296, 2066, 189, 2979, 2874, 2875, 2876, 2824, - 2878, 2880, 2825, 2975, 3429, 1297, 2061, 2057, 2795, 2120, - 2403, 2816, 2710, 189, 2887, 754, 189, 2859, 2831, 2891, - 2892, 2893, 2895, 2896, 2897, 2898, 184, 753, 2899, 665, - 2901, 2902, 2903, 1297, 2366, 2907, 2908, 2909, 2910, 2911, - 2912, 2913, 2914, 2915, 2916, 657, 2851, 649, 2850, 2848, - 123, 1297, 752, 2923, 751, 1297, 2927, 2858, 2928, 2930, - 1297, 2933, 2935, 166, 2937, 2938, 2939, 2940, 2868, 2995, - 2823, 2796, 2946, 1297, 2865, 2866, 3413, 2867, 2544, 2837, - 2869, 2546, 2871, 2472, 2873, 1294, 2833, 1295, 1296, 2365, - 1278, 2920, 1487, 643, 939, 2860, 638, 3337, 2924, 2248, - 2883, 1486, 1897, 1898, 3344, 2805, 2468, 2968, 2969, 3048, - 2786, 2973, 1297, 2853, 2854, 2520, 2148, 2354, 65, 163, - 43, 3308, 164, 3374, 750, 189, 747, 3101, 3102, 2985, - 2986, 3103, 1297, 2647, 2648, 2348, 1297, 3357, 3358, 2347, - 1294, 1297, 1295, 1296, 2346, 183, 746, 3359, 1925, 2944, - 2945, 2947, 2437, 2440, 2441, 2442, 2438, 2345, 2439, 2443, - 1275, 2952, 2977, 2978, 2959, 3450, 2949, 1792, 1294, 90, - 1295, 1296, 34, 33, 2964, 32, 31, 30, 1297, 25, - 24, 23, 1297, 2981, 189, 22, 1294, 21, 1295, 1296, - 1294, 27, 1295, 1296, 20, 1294, 2344, 1295, 1296, 2974, - 2984, 1297, 2988, 19, 1298, 18, 3037, 3038, 1294, 2996, - 1295, 1296, 2808, 189, 2824, 2997, 2343, 2825, 1297, 3052, - 2342, 2990, 2991, 2989, 1297, 2341, 3470, 3511, 1297, 117, - 3058, 3059, 189, 1353, 52, 189, 189, 189, 49, 1297, - 3013, 47, 3015, 1297, 125, 638, 638, 1294, 1297, 1295, - 1296, 124, 50, 3007, 3008, 46, 167, 1297, 1053, 44, - 29, 3071, 2340, 28, 3075, 173, 2334, 1294, 1297, 1295, - 1296, 1294, 17, 1295, 1296, 16, 1294, 15, 1295, 1296, - 14, 13, 12, 11, 7, 2333, 6, 37, 36, 1495, - 1491, 3086, 638, 638, 638, 638, 35, 1795, 1297, 26, - 4, 2507, 2332, 1297, 1492, 3041, 3090, 3060, 2329, 3045, - 3046, 3047, 2328, 1294, 2150, 1295, 1296, 1294, 3098, 1295, - 1296, 0, 0, 2327, 0, 1297, 3105, 2325, 0, 1488, - 1489, 1494, 2321, 1493, 0, 0, 1294, 0, 1295, 1296, - 0, 2320, 3076, 0, 0, 0, 0, 0, 0, 3080, - 0, 0, 2316, 1294, 0, 1295, 1296, 0, 0, 1294, - 0, 1295, 1296, 1294, 0, 1295, 1296, 0, 0, 3097, - 3119, 0, 0, 3088, 1294, 0, 1295, 1296, 1294, 0, - 1295, 1296, 2314, 1294, 158, 1295, 1296, 2279, 0, 0, - 0, 0, 1294, 0, 1295, 1296, 0, 0, 189, 39, - 0, 0, 0, 1294, 0, 1295, 1296, 0, 1852, 2268, - 0, 3120, 0, 0, 1850, 3140, 3129, 1340, 3148, 0, - 3142, 3128, 638, 3136, 638, 3144, 0, 3138, 0, 0, - 0, 0, 0, 1294, 0, 1295, 1296, 0, 1294, 0, - 1295, 1296, 0, 0, 0, 0, 0, 3234, 0, 3247, - 0, 0, 2705, 0, 0, 3152, 2705, 1513, 3254, 0, - 1294, 0, 1295, 1296, 0, 0, 0, 814, 0, 0, - 81, 0, 0, 0, 0, 0, 3149, 3150, 3264, 3265, - 0, 3267, 0, 3268, 3269, 0, 638, 0, 3272, 3273, - 3274, 3231, 3276, 3279, 1599, 3246, 3230, 3277, 3278, 189, - 0, 3229, 638, 0, 0, 3258, 3251, 3250, 3288, 3290, - 3291, 3293, 3295, 3296, 3298, 638, 0, 1852, 2702, 0, - 0, 0, 0, 1850, 0, 3238, 0, 3281, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3241, 3242, 3243, 0, 0, 0, 0, 878, 0, 81, - 3282, 3284, 3328, 0, 0, 3287, 159, 0, 0, 3324, - 0, 0, 0, 171, 0, 638, 0, 3306, 878, 638, - 638, 3303, 3304, 0, 3305, 0, 0, 0, 0, 0, - 0, 0, 0, 938, 0, 0, 0, 0, 3321, 0, - 0, 0, 0, 0, 0, 0, 3312, 0, 638, 0, - 3327, 0, 0, 0, 179, 0, 0, 0, 0, 0, - 3323, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1751, 0, 0, 2705, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3329, 0, - 0, 0, 0, 0, 0, 160, 165, 162, 168, 169, - 170, 172, 174, 175, 176, 177, 0, 0, 0, 0, - 0, 178, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 3348, 0, 0, 0, 0, 638, 3353, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 3340, - 0, 3343, 0, 189, 0, 0, 0, 0, 3369, 0, - 0, 3345, 0, 0, 3370, 3371, 0, 0, 0, 0, - 0, 638, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3336, 0, 0, 0, 3382, 0, 0, 3363, - 0, 0, 3364, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3372, 3352, 0, - 0, 0, 3407, 3408, 0, 0, 3362, 0, 0, 0, - 0, 39, 638, 3414, 3379, 0, 3417, 3419, 3421, 0, - 3392, 3400, 1340, 3389, 638, 0, 3397, 3387, 3394, 3393, - 3391, 3396, 3395, 0, 0, 0, 0, 3415, 3258, 3402, - 0, 3449, 0, 3384, 0, 0, 0, 0, 638, 638, - 0, 0, 3425, 0, 0, 0, 3428, 3446, 3436, 3441, - 0, 0, 0, 0, 3414, 0, 0, 0, 3455, 0, - 638, 0, 0, 0, 3453, 0, 0, 0, 0, 0, - 3466, 0, 0, 0, 189, 638, 0, 0, 3415, 0, - 0, 0, 0, 0, 3464, 0, 3469, 0, 0, 1811, - 1812, 1813, 1814, 0, 0, 0, 1348, 0, 0, 0, - 0, 3482, 3487, 3489, 3491, 0, 0, 3484, 0, 0, - 0, 0, 0, 2702, 0, 0, 0, 3497, 638, 3493, - 3495, 0, 3492, 3499, 0, 0, 0, 0, 0, 0, - 3414, 1852, 0, 3510, 3507, 0, 0, 1850, 1858, 1859, - 638, 3496, 0, 1861, 3519, 906, 906, 1866, 3521, 3522, - 3523, 1871, 3513, 0, 3415, 0, 0, 638, 0, 638, - 0, 0, 0, 0, 1884, 1885, 1886, 1887, 1888, 1889, - 1890, 1891, 1892, 1893, 3530, 3531, 3278, 3529, 1919, 1920, - 1921, 1922, 1923, 1924, 1926, 1852, 1931, 0, 1933, 1934, - 1935, 1850, 1937, 1938, 1939, 3528, 1945, 1946, 1947, 1948, - 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 0, - 1969, 0, 1976, 1977, 906, 0, 906, 906, 906, 906, - 906, 0, 0, 0, 0, 0, 1989, 1990, 1991, 1992, - 1993, 1994, 1995, 1996, 0, 1998, 1999, 2000, 2001, 2002, + 1499, 3511, 3522, 3100, 3333, 3480, 3101, 3417, 3099, 811, + 674, 804, 3481, 2086, 3438, 2925, 2038, 3070, 1546, 803, + 3383, 1856, 2847, 3406, 2018, 2750, 2757, 3317, 3265, 770, + 2798, 2807, 39, 2812, 654, 2809, 2808, 2806, 2811, 1117, + 2810, 5, 3315, 2708, 2358, 3057, 2020, 2711, 3305, 2654, + 875, 801, 3129, 2827, 2392, 2826, 656, 2709, 2156, 2712, + 2964, 2589, 2958, 2431, 2042, 898, 3134, 2765, 765, 1506, + 684, 764, 1469, 766, 2829, 2058, 2984, 2706, 2696, 2418, + 1980, 2950, 2493, 652, 2119, 2573, 2144, 2853, 2454, 771, + 1600, 2494, 2525, 2187, 2124, 2495, 157, 2074, 899, 2063, + 2443, 1119, 38, 1951, 189, 2062, 877, 189, 2424, 879, + 634, 883, 40, 2410, 1493, 640, 2394, 1871, 1852, 1095, + 2565, 2126, 2487, 1810, 2165, 189, 1950, 143, 1647, 930, + 901, 2143, 1985, 2050, 2204, 1977, 976, 958, 98, 1535, + 189, 2462, 648, 1066, 963, 1629, 99, 1515, 2065, 94, + 666, 1473, 1355, 1875, 1829, 1754, 1750, 1636, 1283, 937, + 969, 966, 1728, 934, 2141, 640, 189, 640, 938, 964, + 965, 2115, 2043, 1534, 1520, 661, 916, 918, 889, 1947, + 1000, 1339, 1986, 1315, 884, 886, 1115, 10, 79, 101, + 653, 1109, 9, 1759, 885, 8, 1595, 161, 121, 119, + 120, 1621, 126, 1049, 887, 127, 643, 78, 660, 100, + 1359, 3342, 2518, 92, 911, 2010, 3512, 3058, 2795, 1363, + 3368, 87, 1884, 906, 910, 2158, 2516, 2, 2202, 3013, + 590, 2158, 2159, 2160, 2548, 2547, 623, 629, 3050, 1713, + 3464, 89, 89, 892, 89, 1005, 3369, 122, 2581, 2582, + 3364, 3104, 128, 629, 93, 924, 768, 769, 931, 2015, + 2016, 1832, 820, 821, 822, 2817, 1817, 980, 3363, 105, + 106, 107, 1284, 110, 644, 1816, 116, 956, 2814, 185, + 1815, 623, 585, 926, 1814, 3104, 925, 878, 876, 1013, + 1813, 1812, 979, 642, 1790, 955, 2246, 3459, 646, 623, + 647, 2390, 871, 872, 873, 874, 2692, 89, 882, 1284, + 893, 1006, 1009, 1010, 947, 942, 122, 954, 953, 952, + 2658, 2815, 900, 620, 3484, 2420, 1002, 3532, 820, 821, + 822, 924, 768, 769, 1022, 3479, 913, 914, 3103, 1019, + 1020, 1021, 1500, 1024, 1025, 1026, 1027, 2821, 3502, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1045, 1046, 2817, 3364, 2538, 1300, + 3448, 606, 3103, 2191, 3468, 623, 184, 3418, 3466, 1294, + 2930, 2929, 2189, 604, 122, 2541, 3424, 3318, 3446, 2359, + 1822, 2872, 2135, 3261, 3260, 1004, 623, 3452, 3453, 3467, + 123, 3063, 145, 3465, 3064, 2767, 2768, 1003, 3493, 3271, + 3462, 80, 3447, 166, 3082, 2129, 1294, 2190, 3071, 80, + 3407, 2255, 2815, 601, 80, 80, 3347, 82, 3414, 2184, + 3270, 3081, 615, 1861, 3443, 2434, 2892, 1610, 2046, 2555, + 2556, 2391, 624, 2471, 156, 2746, 2470, 611, 2821, 2472, + 144, 2580, 3424, 1053, 2747, 2748, 2081, 2082, 2818, 1536, + 2435, 1537, 2252, 2080, 946, 2017, 2564, 948, 3147, 163, + 1112, 1085, 164, 869, 868, 1073, 2519, 3334, 2483, 917, + 1074, 951, 1290, 1059, 1060, 1282, 2253, 624, 1072, 89, + 1071, 132, 133, 155, 154, 183, 1073, 89, 2099, 2098, + 1048, 1074, 89, 89, 1297, 624, 1298, 1299, 2427, 2428, + 1090, 1091, 2766, 3485, 2961, 1062, 623, 623, 2623, 1290, + 591, 1086, 593, 607, 2769, 626, 2880, 625, 597, 2849, + 595, 599, 608, 600, 3486, 594, 1079, 605, 2878, 949, + 596, 609, 610, 613, 616, 617, 618, 614, 612, 637, + 603, 627, 1798, 2247, 2248, 2250, 2249, 1023, 635, 2818, + 1316, 2128, 641, 1102, 951, 1104, 943, 927, 921, 919, + 623, 2566, 1533, 945, 944, 2854, 1741, 1740, 1477, 2526, + 1111, 624, 2869, 1317, 1318, 1319, 1320, 1321, 1322, 1323, + 1325, 1324, 1326, 1327, 149, 130, 152, 137, 129, 2166, + 150, 151, 624, 1101, 1103, 2551, 167, 951, 1047, 1092, + 1087, 3293, 2046, 3294, 2210, 173, 138, 1734, 2850, 1093, + 1703, 2842, 949, 3460, 2205, 1080, 2044, 2045, 3514, 2843, + 141, 139, 134, 135, 136, 140, 189, 1106, 189, 1729, + 1094, 189, 131, 927, 921, 919, 2226, 1055, 2227, 2568, + 2228, 142, 2217, 2213, 2215, 2216, 2214, 2218, 2219, 2209, + 2657, 950, 1088, 1089, 1704, 3052, 1705, 3051, 2229, 2211, + 2851, 640, 1051, 640, 640, 1029, 1028, 3245, 2207, 2624, + 3048, 989, 1052, 959, 987, 2169, 3108, 960, 1330, 1614, + 2059, 960, 998, 640, 189, 1480, 997, 1333, 1334, 1335, + 1336, 2208, 996, 995, 1099, 994, 993, 1347, 1100, 978, + 1351, 1289, 1286, 1287, 1288, 1293, 1295, 1292, 1105, 1291, + 992, 1343, 624, 624, 999, 991, 986, 1330, 2769, 1285, + 1107, 1083, 3341, 2517, 957, 1069, 158, 1075, 1076, 1077, + 1078, 935, 1098, 1341, 950, 933, 184, 3533, 1289, 1286, + 1287, 1288, 1293, 1295, 1292, 3491, 1291, 935, 2253, 628, + 1113, 1114, 3420, 1743, 2520, 978, 1285, 2572, 971, 935, + 123, 2553, 1050, 2585, 972, 2485, 624, 920, 1270, 1751, + 621, 817, 817, 166, 817, 2188, 1635, 950, 1008, 2142, + 912, 2788, 3419, 3047, 971, 622, 1532, 978, 1007, 2569, + 2044, 2045, 2195, 3526, 2194, 1747, 2962, 1275, 1271, 1272, + 977, 1016, 2267, 2550, 153, 1608, 971, 974, 975, 1337, + 935, 2132, 1607, 3451, 968, 972, 2476, 990, 3420, 1737, + 988, 1735, 1736, 1606, 1738, 1739, 3102, 3011, 3012, 163, + 2536, 1748, 164, 1604, 2753, 967, 1467, 1715, 1714, 1716, + 1717, 1718, 589, 920, 584, 3330, 2819, 2820, 3419, 3000, + 83, 2133, 3080, 1343, 2980, 183, 977, 3450, 2131, 2823, + 3102, 2186, 971, 974, 975, 146, 935, 1733, 147, 2563, + 968, 972, 2562, 2467, 2430, 1501, 1503, 1331, 1332, 2754, + 2540, 2395, 2397, 1634, 1361, 2367, 1362, 1864, 977, 1524, + 1061, 1058, 2134, 1432, 1064, 2254, 1483, 1365, 159, 88, + 1487, 2425, 2130, 2756, 118, 171, 879, 88, 1070, 1468, + 189, 2575, 88, 88, 640, 640, 2574, 2870, 2087, 1484, + 2575, 2751, 1330, 1082, 2539, 2574, 1327, 2745, 1885, 895, + 189, 1481, 1096, 1110, 1084, 3355, 1001, 113, 2767, 2768, + 3043, 1834, 1886, 2974, 2206, 2752, 179, 2819, 2820, 1068, + 640, 1760, 1807, 189, 2914, 1835, 1328, 1329, 1833, 1744, + 2823, 978, 1538, 2609, 1876, 640, 167, 1876, 1485, 2284, + 2509, 189, 98, 1468, 1015, 173, 1486, 3494, 2758, 1299, + 99, 3143, 1438, 1439, 1440, 1441, 1442, 160, 165, 162, + 168, 169, 170, 172, 174, 175, 176, 177, 1824, 1826, + 1827, 1298, 1299, 178, 180, 181, 182, 1474, 640, 114, + 1461, 3524, 3018, 3017, 3525, 1730, 3523, 1731, 2173, 1644, + 1732, 1343, 1825, 101, 1643, 1300, 1633, 640, 640, 2183, + 640, 2181, 640, 640, 989, 640, 640, 640, 640, 640, + 640, 987, 2178, 1641, 3487, 2766, 3001, 2396, 1343, 3385, + 3534, 1343, 640, 1343, 189, 2185, 2178, 2769, 3323, 891, + 978, 3077, 977, 3078, 1471, 3528, 3253, 981, 971, 1698, + 1676, 1883, 983, 1679, 189, 1681, 984, 982, 876, 1097, + 1620, 2182, 3252, 1505, 878, 978, 1627, 640, 1482, 189, + 1502, 1054, 1067, 3243, 3386, 2180, 158, 2590, 1761, 1488, + 3093, 1637, 1637, 3324, 640, 1649, 189, 1650, 1723, 1652, + 1654, 3092, 1639, 1658, 1660, 1662, 1664, 1666, 1529, 1530, + 1721, 3025, 189, 1638, 1300, 1710, 1611, 1612, 1613, 189, + 1680, 2259, 2260, 2261, 3024, 1603, 3014, 3535, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 640, 2051, 2052, + 820, 821, 822, 1617, 1618, 1630, 1756, 1616, 1300, 2796, + 1297, 977, 1298, 1299, 1982, 1609, 981, 971, 1979, 2611, + 2755, 983, 1722, 2784, 2491, 984, 982, 1981, 2490, 1684, + 2592, 1762, 1763, 2138, 1720, 1300, 977, 1724, 1014, 1709, + 1300, 815, 1011, 1688, 1689, 1767, 985, 1708, 1707, 1694, + 1695, 2281, 1774, 1775, 1776, 1500, 1706, 1316, 1752, 2584, + 1696, 1690, 1881, 1764, 1322, 1323, 1325, 1324, 1326, 1327, + 1768, 1882, 1770, 1771, 1772, 1773, 1687, 1686, 1685, 1777, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, + 1327, 1789, 122, 954, 953, 952, 1656, 1982, 1300, 2602, + 2601, 2600, 2594, 2846, 2598, 1274, 2593, 629, 2591, 1297, + 95, 1298, 1299, 2596, 1533, 1766, 3488, 2887, 159, 3498, + 1500, 96, 2595, 3350, 2280, 171, 1316, 3349, 2266, 3008, + 629, 3327, 1787, 2474, 629, 1300, 2154, 2153, 1788, 3326, + 2597, 2599, 1509, 1297, 3325, 1298, 1299, 3248, 39, 1317, + 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, + 1803, 640, 640, 1300, 2152, 2151, 179, 2150, 2149, 640, + 1297, 3232, 1298, 1299, 189, 1297, 1500, 1298, 1299, 2416, + 3513, 1859, 1859, 1500, 1500, 104, 95, 3231, 1510, 1838, + 3142, 1857, 1857, 97, 1860, 2759, 103, 96, 102, 2763, + 3140, 1879, 3475, 1500, 3343, 1880, 2762, 160, 165, 162, + 168, 169, 170, 172, 174, 175, 176, 177, 3089, 3274, + 1467, 3279, 640, 178, 180, 181, 182, 1828, 1300, 1296, + 1500, 3278, 1343, 1297, 1466, 1298, 1299, 2416, 3413, 1943, + 2764, 1830, 1300, 640, 1465, 2760, 1464, 3496, 1500, 1343, + 2761, 3022, 1500, 3236, 1341, 3007, 1300, 1316, 2321, 2855, + 1312, 2852, 1313, 2787, 2311, 2786, 1500, 1975, 1296, 1500, + 1297, 1877, 1298, 1299, 640, 640, 1314, 1328, 1329, 1311, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, + 1327, 2500, 2004, 1468, 2416, 3393, 1795, 1796, 1297, 2488, + 1298, 1299, 1831, 1300, 79, 1937, 1806, 2416, 3389, 1501, + 2011, 1804, 1987, 1500, 1805, 1948, 1320, 1321, 1322, 1323, + 1325, 1324, 1326, 1327, 1990, 1317, 1318, 1319, 1320, 1321, + 1322, 1323, 1325, 1324, 1326, 1327, 1836, 1978, 3376, 1500, + 3430, 1500, 3235, 2035, 1837, 1463, 1839, 1840, 1841, 1842, + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 2225, + 1300, 2200, 1863, 1297, 2463, 1298, 1299, 189, 3061, 3340, + 3256, 1500, 640, 104, 1989, 1870, 1872, 1297, 2199, 1298, + 1299, 2041, 2272, 2012, 103, 2023, 102, 3428, 1500, 1948, + 2028, 1297, 2029, 1298, 1299, 97, 189, 2416, 3244, 640, + 2096, 3061, 1500, 3069, 1987, 1300, 98, 1992, 1993, 189, + 2416, 3059, 2527, 640, 99, 1791, 1990, 189, 1757, 189, + 2463, 189, 189, 2178, 1500, 1939, 98, 2464, 1988, 97, + 1887, 1888, 1889, 1890, 99, 1719, 640, 2466, 1297, 2505, + 1298, 1299, 1711, 2139, 1901, 1316, 2978, 1500, 2034, 2332, + 1500, 2777, 2776, 2095, 1500, 2973, 1991, 1300, 2061, 1994, + 1995, 1701, 2105, 2106, 2107, 2108, 1989, 2323, 1317, 1318, + 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, 1697, + 2090, 1693, 2100, 2464, 2101, 2102, 2103, 2104, 1500, 3426, + 1500, 640, 892, 2253, 2072, 1297, 2022, 1298, 1299, 1692, + 2111, 2112, 2113, 2114, 1304, 1305, 1306, 1307, 1308, 1309, + 1310, 1302, 1691, 2033, 2091, 2773, 2774, 2179, 640, 2121, + 2056, 1511, 2167, 2036, 640, 2127, 2773, 2772, 89, 2094, + 1108, 2274, 1296, 1316, 2440, 1500, 2054, 2253, 2549, 2432, + 1297, 2273, 1298, 1299, 926, 1300, 2078, 925, 2077, 2076, + 1300, 1599, 2530, 2975, 2093, 2092, 1317, 1318, 1319, 1320, + 1321, 1322, 1323, 1325, 1324, 1326, 1327, 3381, 1300, 2432, + 1925, 640, 2523, 2524, 2137, 2178, 640, 2416, 2415, 3354, + 640, 640, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, + 1326, 1327, 1297, 1300, 1298, 1299, 2164, 2277, 1500, 2122, + 1862, 1500, 980, 2117, 2118, 2416, 2140, 2440, 2136, 1599, + 1598, 2440, 1637, 2412, 2148, 1300, 1544, 1543, 189, 2172, + 2934, 2775, 2175, 103, 2176, 189, 2707, 979, 97, 3302, + 1500, 2170, 2171, 2174, 2122, 3489, 2740, 2973, 189, 189, + 2439, 2973, 189, 2196, 189, 2193, 2253, 2197, 2198, 2192, + 2680, 189, 3300, 1500, 2079, 2277, 2332, 2308, 189, 1917, + 1906, 1907, 1908, 1909, 1919, 1910, 1911, 1912, 1924, 1920, + 1913, 1914, 1921, 1922, 1923, 1915, 1916, 1918, 3338, 2307, + 1297, 2178, 1298, 1299, 189, 1297, 2277, 1298, 1299, 640, + 2203, 2161, 1296, 2049, 1504, 2440, 2013, 1862, 1808, 3297, + 1500, 1746, 1300, 1297, 2270, 1298, 1299, 1531, 2275, 962, + 2264, 2278, 961, 2279, 3026, 881, 3456, 1300, 2286, 3396, + 3267, 1507, 2288, 2289, 2290, 3233, 3154, 3042, 1297, 3039, + 1298, 1299, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, + 2304, 2305, 3020, 2897, 2271, 2232, 2239, 2240, 2896, 1601, + 1297, 2242, 1298, 1299, 1343, 2120, 1990, 1300, 1672, 2844, + 2243, 2801, 2797, 1830, 2531, 3027, 3028, 3029, 2312, 2313, + 2314, 2315, 2316, 2116, 2318, 2110, 2269, 1300, 2320, 2109, + 1726, 1300, 2325, 2326, 1632, 2327, 3283, 1500, 2330, 1628, + 2331, 1597, 1300, 89, 2334, 115, 1300, 2291, 2338, 2496, + 2799, 2995, 2343, 2344, 2345, 2346, 1989, 2251, 3508, 1673, + 1674, 1675, 2497, 1300, 2306, 2357, 1053, 2360, 2361, 1300, + 2985, 2986, 3030, 1300, 1831, 2363, 2365, 2848, 2262, 3268, + 2135, 1793, 2368, 2369, 2370, 2371, 2372, 1297, 1300, 1298, + 1299, 2949, 1500, 2379, 2380, 2026, 2381, 2497, 3506, 2384, + 2386, 2035, 1297, 2388, 1298, 1299, 3482, 3362, 1300, 3288, + 1988, 2942, 1500, 2400, 2988, 2263, 3240, 2265, 2283, 3031, + 3032, 3033, 2793, 2792, 1859, 2791, 2939, 1500, 2707, 1300, + 2937, 1500, 2510, 1300, 1857, 2233, 2401, 2991, 2990, 2726, + 2319, 2729, 1297, 1794, 1298, 1299, 2730, 2902, 1500, 2725, + 3358, 1300, 3269, 2885, 1500, 189, 1300, 2944, 2399, 2040, + 1508, 2032, 1297, 189, 1298, 1299, 1297, 2979, 1298, 1299, + 2685, 2684, 2387, 1500, 640, 2317, 3322, 1297, 39, 1298, + 1299, 1297, 1668, 1298, 1299, 640, 2727, 2456, 3133, 3135, + 2436, 2728, 2385, 1500, 1300, 2402, 2417, 2404, 1297, 2969, + 1298, 1299, 2694, 1745, 1297, 867, 1298, 1299, 1297, 189, + 1298, 1299, 2966, 189, 1500, 2771, 2481, 2364, 1500, 1300, + 2965, 2501, 1018, 1297, 1300, 1298, 1299, 1017, 2863, 1669, + 1670, 1671, 2496, 2697, 2699, 2347, 1500, 1513, 2578, 2413, + 2339, 1500, 2700, 1297, 2426, 1298, 1299, 2445, 2448, 2449, + 2450, 2446, 1474, 2447, 2451, 2389, 2484, 2486, 1885, 1300, + 2455, 2971, 1273, 3124, 1297, 3123, 1298, 1299, 1297, 2522, + 1298, 1299, 1886, 2409, 649, 2537, 2477, 640, 2414, 3044, + 1300, 123, 97, 189, 896, 2461, 1297, 2429, 1298, 1299, + 189, 1297, 897, 1298, 1299, 2731, 95, 2449, 2450, 3520, + 2546, 2789, 2127, 1512, 640, 2465, 1300, 96, 2940, 2468, + 2236, 640, 3435, 3122, 95, 3339, 2475, 1475, 1300, 3263, + 640, 97, 1300, 2489, 2770, 96, 2478, 1300, 102, 1297, + 2453, 1298, 1299, 2051, 2052, 1300, 1343, 2498, 2037, 1300, + 904, 905, 2951, 2912, 1300, 2224, 2223, 2683, 2222, 189, + 189, 189, 189, 189, 1297, 2682, 1298, 1299, 2544, 1297, + 2221, 1298, 1299, 2506, 2908, 2507, 2220, 2511, 2512, 2513, + 1300, 2257, 3310, 587, 189, 189, 2543, 902, 3309, 1620, + 908, 908, 2613, 2614, 2615, 2616, 2617, 1300, 3291, 3141, + 2894, 870, 2587, 3139, 1297, 189, 1298, 1299, 3138, 2499, + 1300, 2622, 2893, 103, 2502, 2503, 2890, 2542, 3131, 2532, + 2533, 104, 2492, 3040, 2970, 1297, 640, 1298, 1299, 2383, + 2968, 2802, 103, 2382, 102, 2603, 2162, 1615, 2378, 903, + 3130, 104, 936, 97, 2567, 2959, 2432, 3510, 3509, 2605, + 2586, 1297, 103, 1298, 1299, 3112, 2570, 2618, 2576, 2412, + 2625, 2577, 2309, 1297, 2377, 1298, 1299, 1297, 1300, 1298, + 1299, 2024, 1297, 640, 1298, 1299, 1525, 104, 1517, 3509, + 1297, 2376, 1298, 1299, 1297, 3510, 1298, 1299, 103, 1297, + 102, 1298, 1299, 2604, 2375, 2606, 108, 109, 3328, 3006, + 1300, 894, 3, 91, 1, 1742, 2659, 2664, 2635, 3010, + 2637, 640, 3445, 2661, 602, 1297, 2014, 1298, 1299, 640, + 1472, 3483, 3441, 3442, 1712, 1702, 2648, 2649, 2650, 2651, + 3072, 1978, 1297, 1978, 1298, 1299, 2633, 1949, 2716, 3264, + 2627, 2805, 1300, 2168, 3038, 1297, 2125, 1298, 1299, 970, + 640, 148, 2374, 2088, 2089, 2734, 2735, 3409, 112, 2588, + 928, 1300, 111, 973, 189, 1081, 2163, 883, 640, 3062, + 2664, 2482, 2097, 1550, 2687, 2643, 2644, 2645, 2646, 2647, + 1548, 1300, 640, 2719, 2373, 2739, 1343, 1487, 2456, 640, + 640, 1343, 189, 189, 189, 189, 189, 2704, 2660, 2663, + 2662, 2688, 1549, 1297, 189, 1298, 1299, 1547, 2710, 189, + 2675, 1552, 189, 2710, 189, 1551, 2871, 189, 189, 189, + 2310, 2913, 1797, 2686, 636, 2713, 2362, 2679, 2689, 2452, + 2701, 2702, 2676, 2677, 2678, 1297, 630, 1298, 1299, 186, + 884, 2721, 2722, 1539, 2724, 2356, 2720, 1518, 2825, 2723, + 885, 2741, 2732, 2926, 2742, 98, 1012, 1300, 592, 2778, + 2736, 2737, 189, 99, 2743, 2355, 2201, 2718, 598, 1756, + 1348, 1792, 2681, 2749, 1300, 640, 2469, 1297, 1343, 1298, + 1299, 923, 915, 640, 2865, 2025, 2779, 2781, 189, 2403, + 2780, 922, 1300, 3241, 2715, 2963, 1297, 2693, 1298, 1299, + 2804, 2695, 189, 2419, 2882, 2883, 2884, 2832, 2886, 2888, + 2833, 2698, 2691, 3321, 1300, 3132, 1297, 2127, 1298, 1299, + 2867, 189, 2895, 3394, 189, 2824, 2479, 2899, 2900, 2901, + 2903, 2904, 2905, 2906, 1514, 2839, 2907, 2933, 2909, 2910, + 2911, 2354, 1300, 2915, 2916, 2917, 2918, 2919, 2920, 2921, + 2922, 2923, 2924, 2803, 2859, 2856, 2858, 2282, 2353, 1300, + 1874, 2931, 1338, 2066, 2935, 3107, 2936, 2938, 2866, 2941, + 2943, 1823, 2945, 2946, 2947, 2948, 2352, 2782, 2783, 2876, + 2954, 2873, 2874, 658, 2875, 657, 655, 2877, 2405, 2879, + 2433, 2881, 1297, 1303, 1298, 1299, 805, 2393, 2351, 2928, + 1526, 2444, 2442, 2441, 640, 2234, 2932, 2073, 2987, 1297, + 2983, 1298, 1299, 3437, 1300, 2976, 2977, 2068, 2064, 2981, + 2861, 2862, 2411, 1300, 756, 755, 2350, 1297, 667, 1298, + 1299, 659, 651, 189, 754, 753, 1300, 2993, 2994, 3003, + 2831, 3421, 1300, 2349, 2552, 2845, 1300, 2554, 2480, 1297, + 2957, 1298, 1299, 2841, 1300, 1281, 1490, 645, 1300, 2952, + 2953, 2955, 2445, 2448, 2449, 2450, 2446, 941, 2447, 2451, + 2868, 2960, 2985, 2986, 2967, 3345, 2256, 1297, 1300, 1298, + 1299, 2891, 1300, 2982, 1489, 1904, 2972, 1905, 3352, 2813, + 3056, 2794, 189, 2528, 1297, 2155, 1298, 1299, 2348, 65, + 2989, 43, 3316, 2992, 3382, 2998, 2999, 2342, 752, 749, + 3109, 3110, 1057, 1300, 1063, 2996, 3111, 1065, 3045, 3046, + 2341, 189, 2832, 1300, 3004, 2833, 2340, 3060, 3005, 2997, + 2337, 2655, 2656, 3365, 1300, 1301, 3366, 3021, 2336, 3023, + 189, 748, 2335, 189, 189, 189, 3066, 3067, 1300, 1297, + 3367, 1298, 1299, 640, 640, 1932, 1300, 1278, 1297, 3458, + 1298, 1299, 2333, 1799, 1356, 90, 2329, 34, 33, 3079, + 1277, 1297, 3083, 1298, 1299, 32, 31, 1297, 30, 1298, + 1299, 1297, 25, 1298, 1299, 24, 23, 22, 21, 1297, + 27, 1298, 1299, 1297, 20, 1298, 1299, 2328, 19, 3094, + 640, 640, 640, 640, 18, 2816, 3478, 2324, 3519, 117, + 3068, 52, 49, 1297, 3098, 1298, 1299, 1297, 2322, 1298, + 1299, 47, 1498, 1494, 125, 124, 3106, 50, 46, 1056, + 44, 29, 2287, 28, 3113, 17, 16, 1495, 15, 3084, + 2276, 14, 13, 12, 3015, 3016, 11, 7, 1297, 6, + 1298, 1299, 37, 36, 35, 1802, 26, 3088, 1297, 4, + 1298, 1299, 2030, 2031, 1497, 2515, 1496, 2157, 0, 1297, + 0, 1298, 1299, 0, 0, 0, 3105, 0, 0, 3127, + 0, 3096, 0, 1297, 0, 1298, 1299, 0, 0, 0, + 0, 1297, 0, 1298, 1299, 0, 3049, 1498, 1494, 0, + 3053, 3054, 3055, 0, 0, 1859, 189, 39, 0, 0, + 0, 0, 1495, 0, 0, 1857, 0, 3156, 0, 3148, + 3128, 0, 0, 0, 3137, 1343, 0, 3150, 0, 3136, + 640, 3144, 640, 3152, 0, 3146, 0, 1491, 1492, 1497, + 0, 1496, 0, 0, 0, 0, 0, 2710, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3255, 0, 3242, + 3157, 3158, 0, 3160, 0, 2713, 3262, 0, 0, 2713, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3272, 3273, 1516, 3275, + 0, 3276, 3277, 0, 640, 3238, 3280, 3281, 3282, 3239, + 3284, 3287, 3254, 3285, 3237, 0, 3286, 189, 0, 0, + 640, 3266, 0, 0, 1859, 3259, 3296, 3298, 3299, 3301, + 3303, 3304, 3306, 640, 1857, 1602, 3289, 3258, 0, 816, + 0, 0, 81, 0, 0, 0, 0, 0, 3246, 1528, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1545, 3290, 3292, + 3336, 0, 0, 3295, 0, 0, 0, 0, 0, 0, + 0, 3332, 0, 640, 3311, 3312, 0, 640, 640, 0, + 0, 3314, 3313, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3329, 0, 0, 0, 0, + 0, 0, 0, 0, 3320, 0, 640, 0, 3335, 880, + 0, 81, 0, 0, 0, 0, 0, 0, 3331, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 880, 3249, 3250, 3251, 0, 0, 0, 2713, 0, 0, + 1682, 0, 0, 0, 0, 940, 0, 0, 0, 0, + 3337, 0, 0, 1758, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1727, 0, 0, 0, 0, + 0, 0, 0, 0, 3356, 640, 3361, 0, 0, 0, + 0, 0, 0, 39, 0, 0, 3348, 0, 0, 0, + 0, 189, 3351, 0, 0, 3353, 3377, 0, 1765, 0, + 0, 0, 3378, 3379, 0, 1769, 0, 0, 0, 640, + 189, 0, 0, 0, 0, 0, 1780, 1781, 1782, 1783, + 1784, 1785, 1786, 0, 3390, 3344, 0, 3371, 0, 0, + 3372, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3360, 3380, 0, 0, + 3415, 3416, 0, 0, 3370, 0, 0, 0, 0, 39, + 640, 0, 3387, 3397, 3425, 3427, 3429, 0, 3423, 3422, + 1343, 3395, 640, 3408, 3400, 0, 3405, 0, 3402, 3401, + 3399, 3404, 0, 3403, 3266, 3410, 0, 0, 0, 3457, + 0, 3392, 2710, 0, 0, 0, 640, 640, 0, 3433, + 0, 0, 0, 0, 0, 3436, 0, 0, 0, 3454, + 3444, 3449, 0, 0, 0, 0, 3463, 0, 640, 3423, + 3422, 0, 0, 0, 0, 0, 3461, 0, 3474, 0, + 0, 0, 189, 640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3472, 0, 0, 3477, 1351, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3495, 3497, 3499, 3490, 0, 0, 0, 0, 0, 3492, + 0, 1818, 1819, 1820, 1821, 0, 640, 3507, 1859, 3500, + 3501, 3503, 0, 3505, 0, 0, 0, 0, 1857, 0, + 3504, 3518, 3515, 0, 0, 3423, 3422, 0, 640, 3521, + 1811, 0, 0, 3527, 0, 3529, 0, 3530, 3531, 0, + 0, 0, 0, 0, 0, 640, 0, 640, 0, 0, + 1865, 1866, 0, 0, 0, 1868, 0, 908, 908, 1873, + 3538, 3539, 1859, 1878, 3286, 3537, 0, 0, 0, 0, + 0, 0, 1857, 0, 3536, 0, 1891, 1892, 1893, 1894, + 1895, 1896, 1897, 1898, 1899, 1900, 0, 0, 0, 0, + 1926, 1927, 1928, 1929, 1930, 1931, 1933, 0, 1938, 0, + 1940, 1941, 1942, 0, 1944, 1945, 1946, 0, 1952, 1953, + 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, + 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, + 1974, 0, 1976, 0, 1983, 1984, 908, 0, 908, 908, + 908, 908, 908, 0, 0, 0, 0, 0, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 0, 2005, 2006, 2007, + 2008, 2009, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2047, 2048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2040, 2041, 0, 0, 0, + 0, 0, 0, 2085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1113, 0, 1113, 1113, 0, - 0, 2078, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2053, 0, 0, 0, 1116, + 0, 1116, 1116, 2057, 0, 2060, 0, 0, 1811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2123, 3178, 3180, 3179, 3197, 3198, 3199, 3200, + 3201, 3202, 3203, 706, 0, 0, 0, 0, 880, 1340, + 1345, 1346, 0, 1349, 0, 1350, 1352, 1353, 1354, 0, + 1357, 1358, 1360, 1360, 0, 1360, 1364, 1364, 1366, 1367, + 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, + 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, + 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, + 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, + 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, + 1428, 1429, 1430, 0, 0, 0, 0, 1431, 0, 1433, + 1434, 1435, 1436, 1437, 0, 0, 0, 0, 0, 0, + 0, 0, 1364, 1364, 1364, 1364, 1364, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1443, 1444, 1445, 1446, + 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 878, 1337, 1342, 1343, 0, 1346, - 0, 1347, 1349, 1350, 1351, 0, 1354, 1355, 1357, 1357, - 2116, 1357, 1361, 1361, 1363, 1364, 1365, 1366, 1367, 1368, - 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, - 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, - 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, - 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 0, - 3468, 0, 0, 1428, 0, 1430, 1431, 1432, 1433, 1434, - 1564, 0, 0, 0, 0, 0, 0, 0, 1361, 1361, - 1361, 1361, 1361, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, - 1448, 1449, 1450, 1451, 1452, 1453, 1472, 3170, 3172, 3171, - 3189, 3190, 3191, 3192, 3193, 3194, 3195, 704, 0, 0, - 0, 0, 0, 1467, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 816, 0, 1975, 0, 0, 817, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1851, + 0, 0, 0, 0, 0, 0, 0, 1470, 0, 0, + 0, 0, 0, 0, 1811, 0, 0, 0, 184, 0, + 0, 2212, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2230, 2231, 0, 0, 2235, 0, + 0, 0, 123, 0, 0, 0, 0, 2238, 0, 0, + 0, 0, 0, 0, 2241, 166, 0, 0, 0, 0, + 1476, 0, 0, 0, 0, 0, 880, 0, 0, 0, + 880, 0, 0, 3184, 0, 0, 880, 0, 0, 0, + 2244, 0, 0, 0, 0, 0, 0, 0, 3192, 3193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 585, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1473, 0, 0, 0, - 868, 0, 878, 0, 0, 0, 878, 0, 0, 0, - 0, 0, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1552, 0, 0, 0, 0, 0, - 0, 934, 823, 824, 825, 826, 827, 828, 829, 830, + 0, 163, 0, 0, 164, 0, 0, 0, 0, 0, + 0, 2285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2292, 2293, 2294, 2295, 0, 183, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 772, 0, 685, 776, 687, 773, 774, 0, 683, 686, + 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1356, 0, 0, + 0, 0, 0, 0, 0, 0, 704, 705, 3177, 3181, + 3182, 3183, 3194, 3195, 3196, 3204, 3206, 737, 3205, 3207, + 3208, 3209, 3212, 3213, 3214, 3215, 3210, 3211, 3216, 3161, + 3165, 3162, 3163, 3164, 3176, 3166, 3167, 3168, 3169, 3170, + 3171, 3172, 3173, 3174, 3175, 3217, 3218, 3219, 3220, 3221, + 3222, 3187, 3191, 3190, 3188, 3189, 3185, 3186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, + 777, 0, 778, 0, 184, 782, 0, 173, 0, 784, + 783, 0, 785, 751, 750, 2521, 0, 779, 780, 0, + 781, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 166, 0, 0, 1516, 1116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 156, 0, 0, 0, 0, 0, 144, 0, + 0, 0, 0, 0, 0, 3223, 3224, 3225, 3226, 3227, + 3228, 3229, 3230, 0, 0, 0, 0, 163, 0, 0, + 164, 0, 0, 0, 0, 0, 0, 0, 0, 2460, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1623, + 1624, 155, 154, 183, 0, 0, 0, 0, 158, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2508, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 619, 0, 1116, + 1116, 0, 0, 639, 0, 0, 0, 0, 81, 0, + 0, 0, 149, 1625, 152, 0, 1622, 0, 150, 151, + 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 0, 2557, 2558, 2559, 2560, 2561, + 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 639, 0, 0, 0, 0, + 1811, 2571, 908, 0, 0, 2607, 2608, 0, 0, 2610, + 0, 0, 2612, 0, 0, 0, 0, 0, 0, 0, + 0, 2579, 0, 0, 0, 0, 0, 0, 0, 0, + 159, 0, 2619, 2620, 2621, 0, 0, 171, 0, 0, + 0, 0, 0, 0, 2626, 0, 0, 2628, 2629, 2630, + 0, 0, 0, 2631, 2632, 0, 0, 1952, 2634, 0, + 0, 2636, 0, 0, 2638, 2639, 2640, 2641, 0, 0, + 0, 0, 2642, 1952, 1952, 1952, 1952, 1952, 179, 0, + 3476, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1567, 908, 0, 0, 158, 0, 0, 0, 2665, 2666, + 2667, 2668, 2669, 2670, 0, 0, 0, 2671, 2672, 0, + 2673, 0, 2674, 0, 0, 0, 0, 0, 0, 160, + 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, + 0, 0, 0, 0, 0, 178, 180, 181, 182, 1567, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2705, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2738, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 146, 1555, 0, 147, 0, 0, 0, + 0, 0, 0, 0, 2800, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 159, 0, 0, 940, + 0, 0, 0, 171, 0, 0, 0, 0, 2790, 0, + 0, 0, 0, 1555, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 940, 0, 2828, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 179, 0, 0, 1568, 2840, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2889, 2857, 0, 0, + 2860, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2898, 0, 0, 0, 0, 160, 165, 162, 168, 169, + 170, 172, 174, 175, 176, 177, 1568, 0, 0, 0, + 0, 178, 180, 181, 182, 0, 0, 0, 1581, 1584, + 1585, 1586, 1587, 1588, 1589, 0, 1590, 1591, 1592, 1593, + 1594, 1569, 1570, 1571, 1572, 1553, 1554, 1582, 0, 1556, + 0, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, + 0, 0, 1566, 1573, 1574, 1575, 1576, 0, 1577, 1578, + 1579, 1580, 0, 0, 0, 0, 0, 1581, 1584, 1585, + 1586, 1587, 1588, 1589, 0, 1590, 1591, 1592, 1593, 1594, + 1569, 1570, 1571, 1572, 1553, 1554, 1582, 0, 1556, 2956, + 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 0, + 0, 1566, 1573, 1574, 1575, 1576, 0, 1577, 1578, 1579, + 1580, 0, 0, 89, 0, 0, 818, 0, 0, 0, + 806, 819, 820, 821, 822, 807, 0, 0, 808, 809, + 0, 810, 2258, 0, 0, 0, 0, 0, 0, 639, + 1269, 639, 639, 0, 0, 815, 823, 824, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 639, 3041, 0, 0, 0, 0, 0, 0, 0, + 0, 2268, 0, 0, 0, 0, 0, 3019, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1342, + 0, 0, 2834, 2835, 0, 3065, 3034, 0, 0, 3035, + 3036, 3037, 1583, 0, 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, 0, 2277, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2284, 2285, 2286, 2287, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1565, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1353, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3176, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3184, 3185, 0, 0, 0, 0, 1578, 1581, 1582, 1583, - 1584, 1585, 1586, 0, 1587, 1588, 1589, 1590, 1591, 1566, - 1567, 1568, 1569, 1550, 1551, 1579, 0, 1553, 0, 1554, - 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 0, 0, - 1563, 1570, 1571, 1572, 1573, 0, 1574, 1575, 1576, 1577, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1113, 0, 770, 0, 683, 774, 685, 771, 772, 0, - 681, 684, 773, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1513, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 702, 703, - 3169, 3173, 3174, 3175, 3186, 3187, 3188, 3196, 3198, 735, - 3197, 3199, 3200, 3201, 3204, 3205, 3206, 3207, 3202, 3203, - 3208, 3153, 3157, 3154, 3155, 3156, 3168, 3158, 3159, 3160, - 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3209, 3210, 3211, - 3212, 3213, 3214, 3179, 3183, 3182, 3180, 3181, 3177, 3178, - 0, 0, 0, 0, 0, 0, 0, 798, 0, 0, - 0, 0, 775, 0, 776, 0, 0, 780, 0, 0, - 0, 782, 781, 0, 783, 749, 748, 0, 0, 777, - 778, 0, 779, 0, 0, 0, 0, 0, 0, 0, - 1580, 1564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 617, 0, 0, 0, 0, - 0, 637, 0, 0, 1113, 1113, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3215, 3216, 3217, - 3218, 3219, 3220, 3221, 3222, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 637, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2575, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 906, 0, 0, 2599, 2600, - 0, 0, 2602, 0, 0, 2604, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1552, 0, 0, 816, 1054, - 0, 1060, 0, 817, 1062, 2611, 2612, 2613, 0, 0, - 0, 0, 0, 1851, 0, 0, 0, 2618, 0, 0, - 2620, 2621, 2622, 0, 0, 0, 2623, 2624, 0, 0, - 1945, 2626, 0, 0, 2628, 0, 0, 2630, 2631, 2632, - 2633, 0, 0, 0, 0, 2634, 1945, 1945, 1945, 1945, - 1945, 0, 0, 0, 0, 0, 0, 1274, 0, 0, - 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, - 0, 2657, 2658, 2659, 2660, 2661, 2662, 0, 1565, 0, - 2663, 2664, 0, 2665, 0, 2666, 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, 0, 0, - 2697, 0, 0, 0, 0, 0, 0, 1578, 1581, 1582, - 1583, 1584, 1585, 1586, 2060, 1587, 1588, 1589, 1590, 1591, - 1566, 1567, 1568, 1569, 1550, 1551, 1579, 2730, 1553, 0, - 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 0, - 0, 1563, 1570, 1571, 1572, 1573, 0, 1574, 1575, 1576, - 1577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 938, 0, 0, 2792, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 938, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 861, 862, 863, 864, 865, 866, 0, 0, 0, 0, + 3085, 1583, 3086, 0, 0, 3087, 0, 0, 3090, 3091, + 0, 0, 0, 0, 0, 0, 0, 3095, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3097, 0, 0, + 0, 0, 0, 0, 0, 0, 2836, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2366, 0, 3114, + 0, 0, 3115, 0, 3116, 3117, 0, 3118, 757, 3119, + 0, 0, 0, 0, 3120, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2398, + 0, 1342, 0, 0, 0, 0, 0, 0, 0, 3145, + 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, + 3153, 0, 0, 3155, 0, 0, 0, 0, 0, 0, + 2837, 2838, 0, 0, 0, 0, 0, 3159, 2437, 2438, + 0, 0, 638, 0, 0, 0, 0, 2457, 0, 2458, + 2459, 0, 0, 0, 0, 3234, 0, 0, 80, 41, + 42, 82, 639, 639, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, + 0, 0, 45, 71, 72, 0, 69, 73, 0, 0, + 0, 0, 932, 0, 939, 70, 0, 0, 639, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 772, 0, 639, 776, 0, 773, 774, 0, 0, + 0, 775, 0, 1596, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 1605, 0, 0, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 1631, 2535, + 0, 0, 0, 0, 0, 3319, 1640, 0, 0, 1342, + 1642, 0, 0, 1645, 1646, 639, 639, 0, 639, 0, + 639, 639, 0, 639, 639, 639, 639, 639, 639, 0, + 0, 0, 0, 0, 0, 0, 1342, 1677, 1678, 1342, + 639, 1342, 0, 1683, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1749, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, + 0, 0, 0, 0, 48, 51, 54, 53, 56, 1619, + 68, 0, 0, 77, 74, 0, 0, 0, 0, 0, + 0, 0, 123, 0, 145, 639, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 166, 57, 85, 84, 3359, + 0, 66, 67, 55, 0, 0, 0, 0, 0, 75, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3373, 0, 0, 3374, 156, 3375, 0, 2652, + 0, 0, 144, 0, 0, 0, 3357, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 163, 59, 60, 164, 61, 62, 63, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1623, 1624, 155, 154, 183, 0, 0, + 0, 0, 2067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2714, 0, 81, 0, 0, + 2067, 2067, 2067, 2067, 2067, 0, 0, 0, 758, 0, + 0, 3455, 0, 0, 0, 0, 0, 2457, 880, 0, + 0, 0, 2067, 0, 0, 2067, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 639, 3469, 0, 3470, 0, 3471, 0, 639, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 187, 0, 0, 588, 0, 149, 1625, 152, 0, + 1622, 0, 150, 151, 83, 0, 0, 0, 167, 0, + 0, 0, 588, 0, 0, 0, 0, 173, 2822, 0, + 0, 0, 0, 0, 0, 0, 0, 890, 2830, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1342, 3516, 0, 3517, 909, 909, 0, 0, 0, 1867, + 0, 639, 0, 588, 0, 0, 0, 1342, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 639, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0, + 1118, 1118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1276, 0, 639, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, + 0, 639, 0, 0, 639, 0, 0, 0, 0, 0, + 2067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3002, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 0, 0, 0, 0, 0, 0, 2145, 2146, 2147, 0, + 159, 0, 0, 0, 0, 0, 0, 171, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 639, 1640, 0, 0, 1640, 0, 1640, 0, + 0, 0, 0, 0, 2177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, + 0, 1478, 1479, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 0, 0, 0, 0, 639, 0, 0, 0, 639, 639, + 0, 0, 0, 0, 0, 0, 0, 1522, 0, 160, + 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, + 0, 0, 1540, 0, 0, 178, 180, 181, 182, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3121, 0, 3125, 3126, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 932, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2714, 0, 81, 0, 2714, + 0, 0, 0, 0, 1648, 1648, 0, 1648, 0, 1648, + 1648, 0, 1657, 1648, 1648, 1648, 1648, 1648, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 932, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 588, 0, 588, 0, 0, 588, 0, + 0, 0, 0, 0, 1725, 0, 0, 0, 3247, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1753, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1342, 0, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2714, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1385, 1386, 1387, + 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, + 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1416, 1417, 1418, + 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1443, 1444, 1445, + 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, + 1456, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 3346, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, + 1344, 0, 0, 81, 0, 0, 0, 0, 1118, 1118, + 0, 0, 0, 0, 0, 0, 1800, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2473, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1853, + 0, 0, 0, 0, 3391, 0, 0, 890, 0, 81, + 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, + 1869, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 588, 639, + 0, 1902, 1903, 1640, 1640, 0, 0, 0, 639, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1342, 2545, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, + 0, 1118, 0, 0, 0, 3473, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1344, 0, 0, 1344, 0, + 1344, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2027, + 0, 1699, 0, 0, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2039, 0, 0, 0, + 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, + 1522, 0, 0, 1118, 0, 0, 0, 0, 0, 588, + 0, 639, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 932, 0, 1778, 1779, 588, 588, 588, + 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 939, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 932, 639, 0, 0, 0, + 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, + 639, 0, 0, 0, 1342, 0, 0, 639, 639, 1342, + 0, 0, 0, 0, 818, 0, 1982, 0, 0, 819, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, + 0, 0, 0, 0, 0, 0, 0, 0, 932, 0, + 0, 0, 0, 1853, 0, 0, 0, 1853, 1853, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2785, 0, 0, 0, 0, 0, 0, 0, 818, + 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, + 0, 588, 0, 639, 1858, 0, 1342, 0, 0, 0, + 0, 639, 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, 0, 0, 0, 0, 0, 1344, + 0, 0, 2864, 0, 0, 0, 2245, 0, 0, 0, + 0, 909, 909, 0, 0, 0, 1344, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 123, 0, 145, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 0, 0, 0, 2881, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1580, 0, 2890, 0, 0, 1525, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, - 0, 0, 144, 0, 1542, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 41, 42, 82, 0, 0, 0, - 0, 163, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 86, 0, 0, 0, 45, 71, 72, - 0, 69, 73, 132, 133, 155, 154, 183, 0, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, - 0, 0, 0, 0, 0, 0, 0, 1679, 0, 0, - 0, 89, 0, 2250, 0, 637, 1266, 637, 637, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, - 0, 0, 1724, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1339, 149, 130, 152, 137, - 129, 0, 150, 151, 1758, 3033, 0, 0, 167, 0, - 0, 1762, 0, 0, 0, 0, 0, 173, 138, 0, - 0, 0, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 0, - 0, 0, 141, 139, 134, 135, 136, 140, 3057, 0, - 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 51, 54, 53, 56, 0, 68, 0, 0, 77, 74, - 0, 0, 0, 3077, 0, 3078, 0, 0, 3079, 0, - 0, 3082, 3083, 0, 0, 0, 0, 0, 2358, 0, - 3087, 57, 85, 84, 0, 0, 66, 67, 55, 0, - 3089, 0, 0, 0, 75, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 158, 1339, 0, 0, - 2390, 0, 3106, 0, 0, 3107, 0, 3108, 3109, 755, - 3110, 0, 3111, 0, 0, 0, 0, 3112, 878, 0, - 0, 0, 0, 0, 0, 59, 60, 0, 61, 62, - 63, 64, 0, 0, 0, 0, 0, 0, 0, 2429, - 2430, 0, 3137, 0, 0, 0, 0, 0, 2449, 0, - 2450, 2451, 0, 3145, 0, 0, 3147, 0, 637, 637, - 0, 0, 0, 0, 0, 0, 1804, 0, 0, 0, - 3151, 0, 0, 636, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3226, 0, - 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1593, - 0, 0, 0, 930, 0, 937, 0, 0, 0, 1602, - 0, 0, 0, 0, 0, 146, 0, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 637, 0, 1628, 0, 0, 83, 0, 0, - 2527, 0, 1637, 0, 0, 1339, 1639, 0, 159, 1642, - 1643, 637, 637, 0, 637, 171, 637, 637, 0, 637, - 637, 637, 637, 637, 637, 0, 0, 0, 0, 0, - 0, 0, 1339, 1674, 1675, 1339, 637, 1339, 3311, 1680, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 184, 0, 0, 0, 0, 179, 0, 0, 88, - 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 123, 0, 145, 0, 0, - 0, 0, 0, 0, 1742, 0, 0, 637, 166, 0, - 0, 0, 0, 0, 0, 0, 0, 160, 165, 162, - 168, 169, 170, 172, 174, 175, 176, 177, 0, 0, - 0, 0, 0, 178, 180, 181, 182, 0, 0, 156, - 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, - 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2046, 0, 0, 163, 0, 0, 164, 0, 2050, - 0, 2053, 0, 0, 1804, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1620, 1621, 155, 154, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 2644, - 0, 0, 3351, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3365, 0, 0, 3366, 0, - 3367, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2060, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2706, 0, 81, 0, 0, - 2060, 2060, 2060, 2060, 2060, 0, 0, 0, 0, 149, - 1622, 152, 0, 1619, 0, 150, 151, 2449, 878, 0, - 0, 167, 2060, 0, 0, 2060, 0, 0, 0, 0, - 173, 0, 0, 0, 637, 637, 0, 0, 0, 0, - 0, 0, 637, 0, 3447, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3461, 0, 3462, 0, 3463, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2814, 0, - 1804, 0, 0, 0, 0, 637, 0, 2205, 2822, 0, - 0, 0, 0, 0, 0, 1339, 2222, 2223, 0, 0, - 2227, 0, 0, 0, 1860, 0, 637, 0, 0, 2230, - 0, 0, 1339, 0, 0, 0, 2233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3508, 0, 3509, 637, 637, 158, - 0, 0, 2236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1115, 0, 1115, - 1115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 153, 0, 1273, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 637, 0, 146, 637, - 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, - 2060, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 0, 2994, 0, 0, 0, 0, 0, 0, - 0, 159, 0, 0, 0, 0, 0, 0, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 0, 0, 179, - 0, 2138, 2139, 2140, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 0, 0, 637, 1637, 0, - 0, 1637, 0, 1637, 0, 0, 0, 0, 0, 2170, - 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, - 177, 0, 0, 0, 0, 0, 178, 180, 181, 182, - 0, 2452, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 0, 0, 637, - 0, 0, 0, 637, 637, 0, 0, 0, 0, 0, - 1475, 1476, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, - 0, 2500, 0, 0, 0, 0, 0, 0, 0, 0, - 3113, 1537, 3117, 3118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2706, 0, 81, 0, 2706, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 930, 0, 0, 0, 637, 0, - 0, 0, 0, 0, 0, 0, 0, 2549, 2550, 2551, - 2552, 2553, 0, 1645, 1645, 0, 1645, 0, 1645, 1645, - 0, 1654, 1645, 1645, 1645, 1645, 1645, 0, 0, 0, - 0, 1804, 2563, 0, 0, 0, 0, 0, 930, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3239, 0, - 0, 0, 2571, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1339, 0, 637, 0, 0, 0, 0, - 0, 0, 0, 1722, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1746, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2706, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1382, 1383, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, - 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1413, 1414, 1415, - 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1440, 1441, 1442, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1453, 0, 0, 637, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 3338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2465, 0, - 0, 0, 0, 0, 0, 0, 1115, 1115, 0, 0, - 0, 0, 0, 0, 1793, 0, 0, 0, 0, 2782, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3383, 2820, 637, 0, 0, 81, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2832, - 0, 0, 0, 0, 0, 0, 0, 1846, 0, 0, - 0, 0, 0, 637, 0, 0, 0, 0, 2849, 0, - 637, 2852, 0, 0, 1637, 1637, 0, 756, 1862, 637, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1339, 2537, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1895, - 1896, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 586, 0, 3465, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 586, 0, 0, 0, 0, 0, 0, 0, 1115, - 0, 0, 0, 0, 0, 0, 888, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, - 2948, 0, 0, 907, 907, 0, 0, 0, 0, 0, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2020, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2032, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, - 0, 1115, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 0, 0, 0, 0, 0, 637, 3011, 0, - 0, 930, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3026, 0, 0, - 3027, 3028, 3029, 0, 0, 0, 0, 0, 637, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 637, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 937, 0, 0, 0, - 637, 0, 0, 0, 1339, 0, 0, 637, 637, 1339, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 930, 0, 0, 0, 0, 0, 937, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2777, 0, 0, 0, 0, 930, 0, 0, 0, - 0, 1846, 0, 0, 0, 1846, 1846, 0, 0, 0, - 0, 0, 0, 637, 0, 0, 1339, 0, 0, 0, - 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2856, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, - 816, 0, 0, 0, 804, 817, 818, 819, 820, 805, - 0, 0, 806, 807, 0, 808, 0, 0, 0, 0, - 2237, 0, 0, 0, 0, 0, 0, 0, 0, 813, - 821, 822, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2826, 2827, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1115, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3001, 0, - 586, 0, 586, 0, 0, 586, 0, 0, 0, 0, - 2828, 0, 0, 0, 0, 0, 0, 89, 0, 0, - 816, 0, 0, 0, 804, 817, 818, 819, 820, 805, - 0, 0, 806, 807, 0, 808, 0, 0, 0, 0, - 0, 637, 637, 0, 0, 0, 0, 0, 0, 813, - 821, 822, 0, 0, 0, 0, 0, 0, 586, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2829, 2830, 0, 1341, 0, 0, 637, 637, - 637, 637, 0, 0, 0, 2398, 2826, 2827, 0, 0, - 0, 0, 0, 0, 0, 0, 2413, 3349, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 770, 0, 0, 774, 0, 771, 772, - 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2828, 0, 0, 0, 0, 0, 0, 0, 2496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1339, 0, 0, 0, 0, 637, 0, - 637, 0, 0, 0, 0, 2032, 0, 1341, 0, 0, - 0, 0, 2521, 0, 0, 0, 0, 0, 0, 0, - 0, 2526, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2829, 2830, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 637, 0, 586, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, - 0, 0, 0, 0, 888, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 586, 0, 0, - 0, 0, 0, 0, 0, 0, 1846, 0, 0, 0, - 0, 0, 0, 0, 0, 586, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 637, 637, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1846, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 1341, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2645, 1341, 0, 0, 1341, 0, 1341, 586, 1115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1696, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1645, 0, 0, 586, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 0, 0, 0, 0, 2682, 1748, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1115, 0, 0, 586, 0, 0, 0, 2709, - 1645, 0, 586, 0, 0, 0, 0, 637, 0, 0, - 0, 1771, 1772, 586, 586, 586, 586, 586, 586, 586, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1339, 0, - 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 930, 0, 0, 0, 0, - 0, 0, 0, 2032, 637, 637, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 637, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 637, 586, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 2919, 637, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1341, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 907, 907, 0, - 0, 0, 1341, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 907, 1748, 907, 907, - 907, 907, 907, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2032, 2032, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1696, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, - 3065, 3066, 3067, 3068, 0, 0, 0, 0, 0, 888, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 1748, - 586, 0, 586, 0, 586, 2068, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3141, 0, 3143, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2032, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1115, 0, 0, 0, 0, 0, 0, - 0, 586, 0, 0, 0, 0, 0, 0, 586, 0, - 0, 0, 0, 0, 0, 0, 0, 586, 586, 0, - 0, 586, 0, 2229, 0, 0, 0, 0, 0, 0, - 586, 0, 0, 0, 0, 0, 0, 586, 0, 0, - 0, 0, 0, 3299, 0, 0, 0, 3299, 3299, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2032, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1341, 0, 1748, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2032, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2032, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3376, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3380, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1115, 1115, 0, 0, - 0, 0, 0, 0, 586, 0, 0, 0, 0, 0, - 0, 0, 1696, 0, 0, 0, 0, 0, 3423, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3431, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 586, 0, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3376, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2032, 0, + 909, 1755, 909, 909, 909, 909, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2919, 0, 3431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 2506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 3009, 0, + 0, 0, 0, 1755, 588, 0, 588, 0, 588, 2075, + 0, 0, 0, 89, 0, 0, 818, 0, 0, 0, + 806, 819, 820, 821, 822, 807, 0, 0, 808, 809, + 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 639, 639, 0, 0, 815, 823, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2421, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 639, 639, + 639, 639, 2834, 2835, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1341, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 586, 586, - 586, 586, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 586, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2836, 0, 0, 0, + 0, 2039, 0, 0, 0, 0, 0, 0, 2529, 0, + 0, 0, 0, 0, 0, 588, 0, 2534, 0, 0, + 0, 0, 588, 1342, 0, 0, 0, 0, 639, 0, + 639, 0, 0, 0, 0, 588, 588, 0, 0, 588, + 0, 2237, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, + 2837, 2838, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, + 0, 0, 0, 1853, 0, 0, 0, 0, 0, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1344, 0, 1755, 0, 0, 0, 0, 0, 0, + 1853, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 639, 0, 0, 0, 639, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2653, 0, + 0, 0, 0, 0, 639, 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2690, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118, + 0, 0, 0, 0, 0, 0, 2717, 1648, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, + 1699, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 588, 0, 932, 0, 0, 0, 0, 0, 639, 0, + 2039, 0, 0, 0, 0, 0, 0, 0, 1342, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 639, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 2514, 0, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1341, 0, 0, 0, 0, 1341, - 586, 586, 586, 586, 586, 0, 0, 0, 0, 0, - 0, 0, 2725, 0, 0, 0, 0, 586, 0, 0, - 1696, 0, 586, 0, 0, 586, 2736, 1748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1344, 639, 0, 0, 0, 0, 0, + 0, 2927, 0, 0, 0, 0, 588, 588, 588, 588, + 588, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 588, 639, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1341, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 586, - 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2039, 2039, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3073, 3074, 3075, + 3076, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1344, 0, 0, 0, 0, 1344, 588, + 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, + 0, 2733, 0, 0, 0, 0, 588, 0, 0, 1699, + 0, 588, 0, 0, 588, 2744, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1344, 0, 3149, 0, 3151, + 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 586, + 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 586, 0, - 0, 586, 586, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3307, 0, 0, 0, 3307, 3307, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2039, 0, 0, 0, 0, 588, 0, 0, + 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3384, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1341, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1118, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3439, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2927, 0, 3439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1696, 0, 0, 0, 0, + 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2479,2586 +2398,1101 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 380, 0, 0, 0, 1249, - 1234, 496, 0, 1177, 1252, 1146, 1165, 1262, 1168, 1171, - 1213, 1125, 1191, 399, 1162, 1118, 1150, 1120, 1157, 1121, - 1148, 1179, 257, 1145, 1236, 1195, 1251, 350, 254, 1127, - 1151, 413, 1167, 196, 1215, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 1258, - 354, 1201, 0, 476, 384, 0, 0, 0, 1181, 1240, - 1189, 1227, 1176, 1214, 1135, 1200, 1253, 1163, 1210, 1254, - 309, 237, 311, 195, 396, 477, 273, 0, 0, 1696, - 0, 3403, 627, 0, 0, 0, 0, 3404, 0, 0, - 0, 0, 228, 0, 0, 235, 0, 0, 586, 335, - 344, 343, 324, 325, 327, 329, 334, 341, 347, 1159, - 1207, 1248, 1160, 1209, 252, 307, 259, 251, 501, 1259, - 1239, 1124, 1188, 1247, 0, 0, 219, 1250, 1183, 0, - 1212, 0, 1265, 1119, 1203, 0, 1122, 1126, 1261, 1243, - 1154, 262, 0, 0, 0, 0, 0, 0, 0, 1180, - 1190, 1224, 1228, 1174, 0, 0, 0, 0, 1341, 0, - 0, 1152, 0, 1199, 0, 0, 0, 1131, 1123, 0, + 0, 0, 0, 0, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 1699, 0, + 3411, 629, 0, 0, 0, 0, 3412, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 588, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 1344, 0, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1178, 0, 0, 0, 0, 1134, 0, 1153, 1225, - 1696, 1117, 284, 1128, 385, 244, 0, 1232, 1242, 1175, - 541, 1246, 1173, 1172, 1219, 1132, 1238, 1166, 349, 1130, - 316, 191, 215, 0, 1164, 395, 441, 453, 1237, 1149, - 1158, 242, 1156, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 1198, 1217, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 510, 511, 243, 561, 218, 536, 210, - 1129, 535, 391, 505, 514, 378, 367, 209, 512, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 1144, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 1233, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 1222, 1264, 408, - 452, 230, 522, 475, 1139, 1143, 1137, 1204, 1138, 1193, - 1194, 1140, 1255, 1256, 1257, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 1226, 1133, 0, 1141, 1142, 1235, - 1244, 1245, 581, 368, 465, 519, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, - 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, - 363, 431, 1197, 190, 211, 352, 1260, 434, 275, 559, - 532, 527, 197, 213, 1136, 249, 1147, 1155, 0, 1161, - 1169, 1170, 1182, 1184, 1185, 1186, 1187, 1205, 1206, 1208, - 1216, 1218, 1221, 1223, 1230, 1241, 1263, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, - 288, 426, 427, 300, 301, 556, 557, 286, 516, 545, - 0, 0, 362, 1196, 1202, 365, 268, 291, 306, 1211, - 531, 481, 217, 446, 277, 240, 1229, 1231, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 1192, 1220, 360, 497, 498, 302, 380, 0, - 0, 0, 1249, 1234, 496, 0, 1177, 1252, 1146, 1165, - 1262, 1168, 1171, 1213, 1125, 1191, 399, 1162, 1118, 1150, - 1120, 1157, 1121, 1148, 1179, 257, 1145, 1236, 1195, 1251, - 350, 254, 1127, 1151, 413, 1167, 196, 1215, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 1258, 354, 1201, 0, 476, 384, 0, 0, - 0, 1181, 1240, 1189, 1227, 1176, 1214, 1135, 1200, 1253, - 1163, 1210, 1254, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 1159, 1207, 1248, 1160, 1209, 252, 307, 259, - 251, 501, 1259, 1239, 1124, 1188, 1247, 0, 0, 219, - 1250, 1183, 0, 1212, 0, 1265, 1119, 1203, 0, 1122, - 1126, 1261, 1243, 1154, 262, 0, 0, 0, 0, 0, - 0, 0, 1180, 1190, 1224, 1228, 1174, 0, 0, 0, - 0, 0, 2737, 0, 1152, 0, 1199, 0, 0, 0, - 1131, 1123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1178, 0, 0, 0, 0, 1134, - 0, 1153, 1225, 0, 1117, 284, 1128, 385, 244, 0, - 1232, 1242, 1175, 541, 1246, 1173, 1172, 1219, 1132, 1238, - 1166, 349, 1130, 316, 191, 215, 0, 1164, 395, 441, - 453, 1237, 1149, 1158, 242, 1156, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 1198, 1217, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 1129, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 1144, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 1233, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 1222, 1264, 408, 452, 230, 522, 475, 1139, 1143, 1137, - 1204, 1138, 1193, 1194, 1140, 1255, 1256, 1257, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 1226, 1133, 0, - 1141, 1142, 1235, 1244, 1245, 581, 368, 465, 519, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, - 447, 317, 318, 363, 431, 1197, 190, 211, 352, 1260, - 434, 275, 559, 532, 527, 197, 213, 1136, 249, 1147, - 1155, 0, 1161, 1169, 1170, 1182, 1184, 1185, 1186, 1187, - 1205, 1206, 1208, 1216, 1218, 1221, 1223, 1230, 1241, 1263, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 1196, 1202, 365, 268, - 291, 306, 1211, 531, 481, 217, 446, 277, 240, 1229, - 1231, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 1192, 1220, 360, 497, 498, - 302, 380, 0, 0, 0, 1249, 1234, 496, 0, 1177, - 1252, 1146, 1165, 1262, 1168, 1171, 1213, 1125, 1191, 399, - 1162, 1118, 1150, 1120, 1157, 1121, 1148, 1179, 257, 1145, - 1236, 1195, 1251, 350, 254, 1127, 1151, 413, 1167, 196, - 1215, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 1258, 354, 1201, 0, 476, - 384, 0, 0, 0, 1181, 1240, 1189, 1227, 1176, 1214, - 1135, 1200, 1253, 1163, 1210, 1254, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 627, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, - 327, 329, 334, 341, 347, 1159, 1207, 1248, 1160, 1209, - 252, 307, 259, 251, 501, 1259, 1239, 1124, 1188, 1247, - 0, 0, 219, 1250, 1183, 0, 1212, 0, 1265, 1119, - 1203, 0, 1122, 1126, 1261, 1243, 1154, 262, 0, 0, - 0, 0, 0, 0, 0, 1180, 1190, 1224, 1228, 1174, - 0, 0, 0, 0, 0, 2695, 0, 1152, 0, 1199, - 0, 0, 0, 1131, 1123, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1178, 0, 0, - 0, 0, 1134, 0, 1153, 1225, 0, 1117, 284, 1128, - 385, 244, 0, 1232, 1242, 1175, 541, 1246, 1173, 1172, - 1219, 1132, 1238, 1166, 349, 1130, 316, 191, 215, 0, - 1164, 395, 441, 453, 1237, 1149, 1158, 242, 1156, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 1198, - 1217, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 1129, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 1699, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, + 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, + 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, + 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, + 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, + 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, + 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, + 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, + 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, + 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, + 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, + 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, + 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, + 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, + 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, + 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, + 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, + 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, + 0, 0, 0, 2745, 0, 1155, 0, 1202, 0, 0, + 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, + 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, + 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, + 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, + 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, - 227, 1144, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1233, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 1222, 1264, 408, 452, 230, 522, 475, - 1139, 1143, 1137, 1204, 1138, 1193, 1194, 1140, 1255, 1256, - 1257, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 1226, 1133, 0, 1141, 1142, 1235, 1244, 1245, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 1197, 190, - 211, 352, 1260, 434, 275, 559, 532, 527, 197, 213, - 1136, 249, 1147, 1155, 0, 1161, 1169, 1170, 1182, 1184, - 1185, 1186, 1187, 1205, 1206, 1208, 1216, 1218, 1221, 1223, - 1230, 1241, 1263, 192, 193, 200, 212, 222, 226, 233, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 1196, - 1202, 365, 268, 291, 306, 1211, 531, 481, 217, 446, - 277, 240, 1229, 1231, 202, 236, 220, 246, 261, 264, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1192, 1220, - 360, 497, 498, 302, 380, 0, 0, 0, 1249, 1234, - 496, 0, 1177, 1252, 1146, 1165, 1262, 1168, 1171, 1213, - 1125, 1191, 399, 1162, 1118, 1150, 1120, 1157, 1121, 1148, - 1179, 257, 1145, 1236, 1195, 1251, 350, 254, 1127, 1151, - 413, 1167, 196, 1215, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 1258, 354, - 1201, 0, 476, 384, 0, 0, 0, 1181, 1240, 1189, - 1227, 1176, 1214, 1135, 1200, 1253, 1163, 1210, 1254, 309, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 800, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 1159, 1207, - 1248, 1160, 1209, 252, 307, 259, 251, 501, 1259, 1239, - 1124, 1188, 1247, 0, 0, 219, 1250, 1183, 0, 1212, - 0, 1265, 1119, 1203, 0, 1122, 1126, 1261, 1243, 1154, - 262, 0, 0, 0, 0, 0, 0, 0, 1180, 1190, - 1224, 1228, 1174, 0, 0, 0, 0, 0, 2048, 0, - 1152, 0, 1199, 0, 0, 0, 1131, 1123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1178, 0, 0, 0, 0, 1134, 0, 1153, 1225, 0, - 1117, 284, 1128, 385, 244, 0, 1232, 1242, 1175, 541, - 1246, 1173, 1172, 1219, 1132, 1238, 1166, 349, 1130, 316, - 191, 215, 0, 1164, 395, 441, 453, 1237, 1149, 1158, - 242, 1156, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 1198, 1217, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 510, 511, 243, 561, 218, 536, 210, 1129, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 1144, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 1233, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 1222, 1264, 408, 452, - 230, 522, 475, 1139, 1143, 1137, 1204, 1138, 1193, 1194, - 1140, 1255, 1256, 1257, 563, 564, 565, 566, 567, 568, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 0, 2703, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, + 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, + 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 1226, 1133, 0, 1141, 1142, 1235, 1244, - 1245, 581, 368, 465, 519, 321, 333, 336, 326, 345, - 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, - 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, - 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, - 431, 1197, 190, 211, 352, 1260, 434, 275, 559, 532, - 527, 197, 213, 1136, 249, 1147, 1155, 0, 1161, 1169, - 1170, 1182, 1184, 1185, 1186, 1187, 1205, 1206, 1208, 1216, - 1218, 1221, 1223, 1230, 1241, 1263, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, - 426, 427, 300, 301, 556, 557, 286, 516, 545, 0, - 0, 362, 1196, 1202, 365, 268, 291, 306, 1211, 531, - 481, 217, 446, 277, 240, 1229, 1231, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 1192, 1220, 360, 497, 498, 302, 380, 0, 0, - 0, 1249, 1234, 496, 0, 1177, 1252, 1146, 1165, 1262, - 1168, 1171, 1213, 1125, 1191, 399, 1162, 1118, 1150, 1120, - 1157, 1121, 1148, 1179, 257, 1145, 1236, 1195, 1251, 350, - 254, 1127, 1151, 413, 1167, 196, 1215, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 1258, 354, 1201, 0, 476, 384, 0, 0, 0, - 1181, 1240, 1189, 1227, 1176, 1214, 1135, 1200, 1253, 1163, - 1210, 1254, 309, 237, 311, 195, 396, 477, 273, 0, - 89, 0, 0, 0, 627, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 1159, 1207, 1248, 1160, 1209, 252, 307, 259, 251, - 501, 1259, 1239, 1124, 1188, 1247, 0, 0, 219, 1250, - 1183, 0, 1212, 0, 1265, 1119, 1203, 0, 1122, 1126, - 1261, 1243, 1154, 262, 0, 0, 0, 0, 0, 0, - 0, 1180, 1190, 1224, 1228, 1174, 0, 0, 0, 0, - 0, 0, 0, 1152, 0, 1199, 0, 0, 0, 1131, - 1123, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1178, 0, 0, 0, 0, 1134, 0, - 1153, 1225, 0, 1117, 284, 1128, 385, 244, 0, 1232, - 1242, 1175, 541, 1246, 1173, 1172, 1219, 1132, 1238, 1166, - 349, 1130, 316, 191, 215, 0, 1164, 395, 441, 453, - 1237, 1149, 1158, 242, 1156, 451, 409, 520, 223, 271, - 438, 415, 449, 422, 274, 1198, 1217, 450, 356, 506, - 432, 517, 542, 543, 250, 389, 529, 490, 537, 558, - 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, - 508, 526, 276, 436, 203, 485, 515, 229, 463, 0, - 0, 560, 205, 513, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 510, 511, 243, 561, 218, - 536, 210, 1129, 535, 391, 505, 514, 378, 367, 209, - 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, - 0, 478, 525, 562, 224, 225, 227, 1144, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 1233, 500, 518, 530, 540, 546, 547, 549, 550, 551, - 552, 553, 555, 554, 390, 297, 474, 319, 357, 1222, - 1264, 408, 452, 230, 522, 475, 1139, 1143, 1137, 1204, - 1138, 1193, 1194, 1140, 1255, 1256, 1257, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 0, 1226, 1133, 0, 1141, - 1142, 1235, 1244, 1245, 581, 368, 465, 519, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, - 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, - 317, 318, 363, 431, 1197, 190, 211, 352, 1260, 434, - 275, 559, 532, 527, 197, 213, 1136, 249, 1147, 1155, - 0, 1161, 1169, 1170, 1182, 1184, 1185, 1186, 1187, 1205, - 1206, 1208, 1216, 1218, 1221, 1223, 1230, 1241, 1263, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, - 460, 287, 288, 426, 427, 300, 301, 556, 557, 286, - 516, 545, 0, 0, 362, 1196, 1202, 365, 268, 291, - 306, 1211, 531, 481, 217, 446, 277, 240, 1229, 1231, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 1192, 1220, 360, 497, 498, 302, - 380, 0, 0, 0, 1249, 1234, 496, 0, 1177, 1252, - 1146, 1165, 1262, 1168, 1171, 1213, 1125, 1191, 399, 1162, - 1118, 1150, 1120, 1157, 1121, 1148, 1179, 257, 1145, 1236, - 1195, 1251, 350, 254, 1127, 1151, 413, 1167, 196, 1215, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 1258, 354, 1201, 0, 476, 384, - 0, 0, 0, 1181, 1240, 1189, 1227, 1176, 1214, 1135, - 1200, 1253, 1163, 1210, 1254, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 627, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 1159, 1207, 1248, 1160, 1209, 252, - 307, 259, 251, 501, 1259, 1239, 1124, 1188, 1247, 0, - 0, 219, 1250, 1183, 0, 1212, 0, 1265, 1119, 1203, - 0, 1122, 1126, 1261, 1243, 1154, 262, 0, 0, 0, - 0, 0, 0, 0, 1180, 1190, 1224, 1228, 1174, 0, - 0, 0, 0, 0, 0, 0, 1152, 0, 1199, 0, - 0, 0, 1131, 1123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1178, 0, 0, 0, - 0, 1134, 0, 1153, 1225, 0, 1117, 284, 1128, 385, - 244, 0, 1232, 1242, 1175, 541, 1246, 1173, 1172, 1219, - 1132, 1238, 1166, 349, 1130, 316, 191, 215, 0, 1164, - 395, 441, 453, 1237, 1149, 1158, 242, 1156, 451, 409, - 520, 223, 271, 438, 415, 449, 422, 274, 1198, 1217, - 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, - 490, 537, 558, 216, 247, 403, 483, 523, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, - 355, 232, 221, 508, 526, 276, 436, 203, 485, 515, - 229, 463, 0, 0, 560, 205, 513, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, - 243, 561, 218, 536, 210, 1129, 535, 391, 505, 514, - 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, - 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 524, 0, 199, 0, 478, 525, 562, 224, 225, 227, - 1144, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 1233, 500, 518, 530, 540, 546, 547, - 549, 550, 551, 552, 553, 555, 554, 390, 297, 474, - 319, 357, 1222, 1264, 408, 452, 230, 522, 475, 1139, - 1143, 1137, 1204, 1138, 1193, 1194, 1140, 1255, 1256, 1257, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 0, 1226, - 1133, 0, 1141, 1142, 1235, 1244, 1245, 581, 368, 465, - 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, - 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, - 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, - 295, 448, 447, 317, 318, 363, 431, 1197, 190, 211, - 352, 1260, 434, 275, 559, 532, 527, 197, 213, 1136, - 249, 1147, 1155, 0, 1161, 1169, 1170, 1182, 1184, 1185, - 1186, 1187, 1205, 1206, 1208, 1216, 1218, 1221, 1223, 1230, - 1241, 1263, 192, 193, 200, 212, 222, 226, 233, 248, - 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, - 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, - 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, - 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, - 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, - 556, 557, 286, 516, 545, 0, 0, 362, 1196, 1202, - 365, 268, 291, 306, 1211, 531, 481, 217, 446, 277, - 240, 1229, 1231, 202, 236, 220, 246, 261, 264, 310, - 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 1192, 1220, 360, - 497, 498, 302, 380, 0, 0, 0, 1249, 1234, 496, - 0, 1177, 1252, 1146, 1165, 1262, 1168, 1171, 1213, 1125, - 1191, 399, 1162, 1118, 1150, 1120, 1157, 1121, 1148, 1179, - 257, 1145, 1236, 1195, 1251, 350, 254, 1127, 1151, 413, - 1167, 196, 1215, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 1258, 354, 1201, - 0, 476, 384, 0, 0, 0, 1181, 1240, 1189, 1227, - 1176, 1214, 1135, 1200, 1253, 1163, 1210, 1254, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, - 324, 325, 327, 329, 334, 341, 347, 1159, 1207, 1248, - 1160, 1209, 252, 307, 259, 251, 501, 1259, 1239, 1124, - 1188, 1247, 0, 0, 219, 1250, 1183, 0, 1212, 0, - 1265, 1119, 1203, 0, 1122, 1126, 1261, 1243, 1154, 262, - 0, 0, 0, 0, 0, 0, 0, 1180, 1190, 1224, - 1228, 1174, 0, 0, 0, 0, 0, 0, 0, 1152, - 0, 1199, 0, 0, 0, 1131, 1123, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1178, - 0, 0, 0, 0, 1134, 0, 1153, 1225, 0, 1117, - 284, 1128, 385, 244, 0, 1232, 1242, 1175, 541, 1246, - 1173, 1172, 1219, 1132, 1238, 1166, 349, 1130, 316, 191, - 215, 0, 1164, 395, 441, 453, 1237, 1149, 1158, 242, - 1156, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 1198, 1217, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 1129, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, - 224, 225, 227, 1144, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 1233, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, - 390, 297, 474, 319, 357, 1222, 1264, 408, 452, 230, - 522, 475, 1139, 1143, 1137, 1204, 1138, 1193, 1194, 1140, - 1255, 1256, 1257, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 1226, 1133, 0, 1141, 1142, 1235, 1244, 1245, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 1197, 190, 211, 352, 1260, 434, 275, 559, 532, 527, - 197, 213, 1136, 249, 1147, 1155, 0, 1161, 1169, 1170, - 1182, 1184, 1185, 1186, 1187, 1205, 1206, 1208, 1216, 1218, - 1221, 1223, 1230, 1241, 1263, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 286, 516, 545, 0, 0, - 362, 1196, 1202, 365, 268, 291, 306, 1211, 531, 481, - 217, 446, 277, 240, 1229, 1231, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 1192, 1220, 360, 497, 498, 302, 380, 0, 0, 0, - 1249, 1234, 496, 0, 1177, 1252, 1146, 1165, 1262, 1168, - 1171, 1213, 1125, 1191, 399, 1162, 1118, 1150, 1120, 1157, - 1121, 1148, 1179, 257, 1145, 1236, 1195, 1251, 350, 254, - 1127, 1151, 413, 1167, 196, 1215, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 1258, 354, 1201, 0, 476, 384, 0, 0, 0, 1181, - 1240, 1189, 1227, 1176, 1214, 1135, 1200, 1253, 1163, 1210, - 1254, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 1159, 1207, 1248, 1160, 1209, 252, 307, 259, 251, 501, - 1259, 1239, 1124, 1188, 1247, 0, 0, 219, 1250, 1183, - 0, 1212, 0, 1265, 1119, 1203, 0, 1122, 1126, 1261, - 1243, 1154, 262, 0, 0, 0, 0, 0, 0, 0, - 1180, 1190, 1224, 1228, 1174, 0, 0, 0, 0, 0, - 0, 0, 1152, 0, 1199, 0, 0, 0, 1131, 1123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1178, 0, 0, 0, 0, 1134, 0, 1153, - 1225, 0, 1117, 284, 1128, 385, 244, 0, 1232, 1242, - 1175, 541, 1246, 1173, 1172, 1219, 1132, 1238, 1166, 349, - 1130, 316, 191, 215, 0, 1164, 395, 441, 453, 1237, - 1149, 1158, 242, 1156, 451, 409, 520, 223, 271, 438, - 415, 449, 422, 274, 1198, 1217, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 1129, 535, 391, 505, 514, 378, 367, 209, 512, + 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, + 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, + 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, + 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, + 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, + 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, + 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, + 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, + 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, + 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, + 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, + 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, + 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, + 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, + 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, + 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, + 0, 0, 0, 2055, 0, 1155, 0, 1202, 0, 0, + 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, + 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, + 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, + 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, + 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, + 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, + 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 0, 0, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 1144, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 1233, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 1222, 1264, - 408, 452, 230, 522, 475, 1139, 1143, 1137, 1204, 1138, - 1193, 1194, 1140, 1255, 1256, 1257, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 1226, 1133, 0, 1141, 1142, - 1235, 1244, 1245, 581, 368, 465, 519, 321, 333, 336, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, + 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, + 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, + 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, - 318, 363, 431, 1197, 190, 211, 352, 1260, 434, 275, - 559, 532, 527, 197, 213, 1136, 249, 1147, 1155, 0, - 1161, 1169, 1170, 1182, 1184, 1185, 1186, 1187, 1205, 1206, - 1208, 1216, 1218, 1221, 1223, 1230, 1241, 1263, 192, 193, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, + 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, + 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, + 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 1196, 1202, 365, 268, 291, 306, - 1211, 531, 481, 217, 446, 277, 240, 1229, 1231, 202, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, + 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 1192, 1220, 360, 497, 498, 302, 380, - 0, 0, 0, 0, 0, 496, 0, 679, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 666, 0, 0, 0, 257, 671, 0, 0, - 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, + 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, + 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, + 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, + 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 678, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 674, 675, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 89, 0, 0, 816, 800, 766, 767, 804, - 817, 818, 819, 820, 805, 0, 228, 806, 807, 235, - 808, 0, 765, 706, 708, 707, 725, 726, 727, 728, - 729, 730, 731, 704, 813, 821, 822, 0, 252, 307, - 259, 251, 501, 0, 0, 1927, 1928, 1929, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 648, 663, - 0, 677, 0, 0, 0, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 660, 661, 0, 0, 0, 0, 760, 0, 662, - 0, 0, 670, 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, 673, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 759, 0, 0, 541, 0, 0, 757, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 810, 0, 451, 409, 520, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, - 537, 558, 216, 247, 403, 483, 523, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, - 232, 221, 508, 526, 276, 436, 203, 485, 515, 229, - 463, 0, 0, 560, 205, 513, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 811, 812, 243, - 561, 712, 536, 210, 0, 535, 391, 505, 514, 378, - 367, 209, 512, 376, 366, 320, 720, 721, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, - 0, 199, 0, 478, 525, 562, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 518, 530, 540, 546, 547, 549, - 550, 551, 552, 553, 555, 554, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 522, 475, 770, 758, - 683, 774, 685, 771, 772, 680, 681, 684, 773, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 0, 761, 669, - 668, 0, 676, 0, 702, 703, 705, 709, 710, 711, - 722, 723, 724, 732, 734, 735, 733, 736, 737, 738, - 741, 742, 743, 744, 739, 740, 745, 686, 690, 687, - 688, 689, 701, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 784, 785, 786, 787, 788, 789, 715, - 719, 718, 716, 717, 713, 714, 667, 190, 211, 352, - 0, 434, 275, 559, 532, 527, 197, 213, 775, 249, - 776, 0, 0, 780, 0, 0, 0, 782, 781, 0, - 783, 749, 748, 0, 0, 777, 778, 0, 779, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, - 539, 544, 460, 790, 791, 792, 793, 794, 795, 796, - 797, 286, 516, 545, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, - 815, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 679, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 666, - 0, 0, 0, 257, 671, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 678, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 674, 675, 0, 0, 0, 0, 0, 0, 2076, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 0, 816, 800, 766, 767, 804, 817, 818, 819, - 820, 805, 0, 228, 806, 807, 235, 808, 0, 765, - 706, 708, 707, 725, 726, 727, 728, 729, 730, 731, - 704, 813, 821, 822, 2077, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 648, 663, 0, 677, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 660, 661, - 0, 0, 0, 0, 760, 0, 662, 0, 0, 670, - 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, 673, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 759, 0, - 0, 541, 0, 0, 757, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 810, 0, 451, 409, 520, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 811, 812, 243, 561, 712, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, - 376, 366, 320, 720, 721, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 770, 758, 683, 774, 685, - 771, 772, 680, 681, 684, 773, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 761, 669, 668, 0, 676, - 0, 702, 703, 705, 709, 710, 711, 722, 723, 724, - 732, 734, 735, 733, 736, 737, 738, 741, 742, 743, - 744, 739, 740, 745, 686, 690, 687, 688, 689, 701, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, - 784, 785, 786, 787, 788, 789, 715, 719, 718, 716, - 717, 713, 714, 667, 190, 211, 352, 0, 434, 275, - 559, 532, 527, 197, 213, 775, 249, 776, 0, 0, - 780, 0, 0, 0, 782, 781, 0, 783, 749, 748, - 0, 0, 777, 778, 0, 779, 0, 0, 192, 193, + 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, + 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, + 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, + 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, + 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, + 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, + 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, + 0, 0, 0, 0, 0, 1155, 0, 1202, 0, 0, + 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, + 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, + 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, + 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, + 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 0, 0, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, + 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, + 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, + 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, + 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, + 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, + 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 790, 791, 792, 793, 794, 795, 796, 797, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 815, 0, 202, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, + 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 0, 380, 360, 497, 498, 302, 80, - 496, 0, 679, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 666, 0, 0, - 0, 257, 671, 0, 0, 0, 350, 254, 0, 0, + 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, + 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, + 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, + 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, + 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, + 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, + 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, + 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, + 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, + 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, + 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, + 0, 0, 0, 0, 0, 1155, 0, 1202, 0, 0, + 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, + 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, + 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, + 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, + 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 0, 0, + 496, 0, 681, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 0, 0, 0, 668, 0, 0, + 0, 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 678, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 674, - 675, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 260, 256, 239, 303, 369, 411, 486, 405, 680, 354, + 0, 0, 476, 384, 0, 0, 0, 0, 0, 676, + 677, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 816, 800, 766, 767, 804, 817, 818, 819, 820, 805, - 0, 228, 806, 807, 235, 808, 0, 765, 706, 708, - 707, 725, 726, 727, 728, 729, 730, 731, 704, 813, - 821, 822, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 648, 663, 0, 677, 0, 0, 0, + 818, 802, 768, 769, 806, 819, 820, 821, 822, 807, + 0, 228, 808, 809, 235, 810, 0, 767, 708, 710, + 709, 727, 728, 729, 730, 731, 732, 733, 706, 815, + 823, 824, 0, 252, 307, 259, 251, 501, 0, 0, + 1934, 1935, 1936, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 660, 661, 0, 0, - 0, 0, 760, 0, 662, 0, 0, 670, 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, - 673, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 759, 0, 0, 541, - 0, 0, 757, 0, 0, 0, 0, 349, 0, 316, + 0, 0, 0, 0, 0, 0, 662, 663, 0, 0, + 0, 0, 762, 0, 664, 0, 0, 672, 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, + 675, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 0, 385, 244, 0, 761, 0, 0, 542, + 0, 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 810, 0, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 811, 812, 243, 561, 712, 536, 210, 0, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 720, 721, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 522, 475, 770, 758, 683, 774, 685, 771, 772, - 680, 681, 684, 773, 563, 564, 565, 566, 567, 568, + 812, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 813, 814, 243, 563, 714, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 722, 723, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 772, 760, 685, 776, 687, + 773, 774, 682, 683, 686, 775, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 761, 669, 668, 0, 676, 0, 702, - 703, 705, 709, 710, 711, 722, 723, 724, 732, 734, - 735, 733, 736, 737, 738, 741, 742, 743, 744, 739, - 740, 745, 686, 690, 687, 688, 689, 701, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 784, 785, - 786, 787, 788, 789, 715, 719, 718, 716, 717, 713, - 714, 667, 190, 211, 352, 88, 434, 275, 559, 532, - 527, 197, 213, 775, 249, 776, 0, 0, 780, 0, - 0, 0, 782, 781, 0, 783, 749, 748, 0, 0, - 777, 778, 0, 779, 0, 0, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 790, 791, - 792, 793, 794, 795, 796, 797, 286, 516, 545, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, - 481, 217, 446, 277, 240, 815, 0, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 679, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 666, 0, 0, 0, 257, 671, - 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, - 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 678, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 674, 675, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 89, 0, 0, 816, 800, 766, - 767, 804, 817, 818, 819, 820, 805, 0, 228, 806, - 807, 235, 808, 0, 765, 706, 708, 707, 725, 726, - 727, 728, 729, 730, 731, 704, 813, 821, 822, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 648, 663, 0, 677, 0, 0, 0, 262, 0, 0, + 579, 580, 581, 582, 0, 763, 671, 670, 0, 678, + 0, 704, 705, 707, 711, 712, 713, 724, 725, 726, + 734, 736, 737, 735, 738, 739, 740, 743, 744, 745, + 746, 741, 742, 747, 688, 692, 689, 690, 691, 703, + 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, + 786, 787, 788, 789, 790, 791, 717, 721, 720, 718, + 719, 715, 716, 669, 190, 211, 352, 0, 434, 275, + 561, 533, 528, 197, 213, 777, 249, 778, 0, 0, + 782, 0, 0, 0, 784, 783, 0, 785, 751, 750, + 0, 0, 779, 780, 0, 781, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 792, 793, 794, 795, 796, 797, 798, 799, 286, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 817, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 668, 0, 0, 0, + 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 680, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 676, 677, + 0, 0, 0, 0, 0, 0, 2083, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 818, + 802, 768, 769, 806, 819, 820, 821, 822, 807, 0, + 228, 808, 809, 235, 810, 0, 767, 708, 710, 709, + 727, 728, 729, 730, 731, 732, 733, 706, 815, 823, + 824, 2084, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 660, 661, 0, 0, 0, 0, 760, - 0, 662, 0, 0, 670, 823, 824, 825, 826, 827, + 0, 0, 0, 0, 0, 662, 663, 0, 0, 0, + 0, 762, 0, 664, 0, 0, 672, 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, 673, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 759, 0, 0, 541, 0, 0, 757, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 810, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 3390, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 811, - 812, 243, 561, 712, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 720, 721, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 770, 758, 683, 774, 685, 771, 772, 680, 681, 684, - 773, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 761, 669, 668, 0, 676, 0, 702, 703, 705, 709, - 710, 711, 722, 723, 724, 732, 734, 735, 733, 736, - 737, 738, 741, 742, 743, 744, 739, 740, 745, 686, - 690, 687, 688, 689, 701, 691, 692, 693, 694, 695, - 696, 697, 698, 699, 700, 784, 785, 786, 787, 788, - 789, 715, 719, 718, 716, 717, 713, 714, 667, 190, - 211, 352, 0, 434, 275, 559, 532, 527, 197, 213, - 775, 249, 776, 0, 0, 780, 0, 0, 0, 782, - 781, 0, 783, 749, 748, 0, 0, 777, 778, 0, - 779, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 790, 791, 792, 793, 794, - 795, 796, 797, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, - 277, 240, 815, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 679, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 666, 0, 0, 0, 257, 671, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 678, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 674, 675, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 89, 0, 1497, 816, 800, 766, 767, 804, 817, - 818, 819, 820, 805, 0, 228, 806, 807, 235, 808, - 0, 765, 706, 708, 707, 725, 726, 727, 728, 729, - 730, 731, 704, 813, 821, 822, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 648, 663, 0, - 677, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 858, 859, 860, 861, 862, 863, 864, 865, 866, 675, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 761, 0, 0, 542, 0, + 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 812, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 813, 814, 243, 563, 714, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 722, 723, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 772, 760, 685, 776, 687, 773, + 774, 682, 683, 686, 775, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 763, 671, 670, 0, 678, 0, + 704, 705, 707, 711, 712, 713, 724, 725, 726, 734, + 736, 737, 735, 738, 739, 740, 743, 744, 745, 746, + 741, 742, 747, 688, 692, 689, 690, 691, 703, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 786, + 787, 788, 789, 790, 791, 717, 721, 720, 718, 719, + 715, 716, 669, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 777, 249, 778, 0, 0, 782, + 0, 0, 0, 784, 783, 0, 785, 751, 750, 0, + 0, 779, 780, 0, 781, 0, 0, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 792, + 793, 794, 795, 796, 797, 798, 799, 286, 517, 546, + 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, + 532, 481, 217, 446, 277, 240, 817, 0, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 0, 380, 360, 497, 498, 302, 80, 496, + 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 668, 0, 0, 0, + 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 680, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 676, 677, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 818, + 802, 768, 769, 806, 819, 820, 821, 822, 807, 0, + 228, 808, 809, 235, 810, 0, 767, 708, 710, 709, + 727, 728, 729, 730, 731, 732, 733, 706, 815, 823, + 824, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 660, 661, 0, 0, 0, 0, 760, 0, 662, 0, - 0, 670, 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, 673, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 759, 0, 0, 541, 0, 0, 757, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 810, 0, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 811, 812, 243, 561, - 712, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 720, 721, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 770, 758, 683, - 774, 685, 771, 772, 680, 681, 684, 773, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 761, 669, 668, - 0, 676, 0, 702, 703, 705, 709, 710, 711, 722, - 723, 724, 732, 734, 735, 733, 736, 737, 738, 741, - 742, 743, 744, 739, 740, 745, 686, 690, 687, 688, - 689, 701, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 700, 784, 785, 786, 787, 788, 789, 715, 719, - 718, 716, 717, 713, 714, 667, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 775, 249, 776, - 0, 0, 780, 0, 0, 0, 782, 781, 0, 783, - 749, 748, 0, 0, 777, 778, 0, 779, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 790, 791, 792, 793, 794, 795, 796, 797, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 815, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, - 302, 496, 0, 679, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 666, 0, - 0, 0, 257, 671, 0, 0, 0, 350, 254, 0, - 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 678, - 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, - 674, 675, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, - 0, 816, 800, 766, 767, 804, 817, 818, 819, 820, - 805, 0, 228, 806, 807, 235, 808, 0, 765, 706, - 708, 707, 725, 726, 727, 728, 729, 730, 731, 704, - 813, 821, 822, 0, 252, 307, 259, 251, 501, 0, - 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 0, 0, 0, 0, 648, 663, 0, 677, 0, 0, - 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 660, 661, 905, - 0, 0, 0, 760, 0, 662, 0, 0, 670, 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, 673, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 759, 0, 0, - 541, 0, 0, 757, 0, 0, 0, 0, 349, 0, - 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 810, 0, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 811, 812, 243, 561, 712, 536, 210, - 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, - 366, 320, 720, 721, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 0, 266, 270, 278, 281, + 0, 0, 0, 0, 0, 662, 663, 0, 0, 0, + 0, 762, 0, 664, 0, 0, 672, 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, 675, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 761, 0, 0, 542, 0, + 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 812, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 813, 814, 243, 563, 714, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 722, 723, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 522, 475, 770, 758, 683, 774, 685, 771, - 772, 680, 681, 684, 773, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 761, 669, 668, 0, 676, 0, - 702, 703, 705, 709, 710, 711, 722, 723, 724, 732, - 734, 735, 733, 736, 737, 738, 741, 742, 743, 744, - 739, 740, 745, 686, 690, 687, 688, 689, 701, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 784, - 785, 786, 787, 788, 789, 715, 719, 718, 716, 717, - 713, 714, 667, 190, 211, 352, 0, 434, 275, 559, - 532, 527, 197, 213, 775, 249, 776, 0, 0, 780, - 0, 0, 0, 782, 781, 0, 783, 749, 748, 0, - 0, 777, 778, 0, 779, 0, 0, 192, 193, 200, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 772, 760, 685, 776, 687, 773, + 774, 682, 683, 686, 775, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 763, 671, 670, 0, 678, 0, + 704, 705, 707, 711, 712, 713, 724, 725, 726, 734, + 736, 737, 735, 738, 739, 740, 743, 744, 745, 746, + 741, 742, 747, 688, 692, 689, 690, 691, 703, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 786, + 787, 788, 789, 790, 791, 717, 721, 720, 718, 719, + 715, 716, 669, 190, 211, 352, 88, 434, 275, 561, + 533, 528, 197, 213, 777, 249, 778, 0, 0, 782, + 0, 0, 0, 784, 783, 0, 785, 751, 750, 0, + 0, 779, 780, 0, 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 790, - 791, 792, 793, 794, 795, 796, 797, 286, 516, 545, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 792, + 793, 794, 795, 796, 797, 798, 799, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 531, 481, 217, 446, 277, 240, 815, 0, 202, 236, + 532, 481, 217, 446, 277, 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 666, 0, 0, 0, 257, - 671, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 668, 0, 0, 0, 257, + 673, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 678, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 674, 675, 0, + 239, 303, 369, 411, 486, 405, 680, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 676, 677, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 89, 0, 0, 816, 800, - 766, 767, 804, 817, 818, 819, 820, 805, 0, 228, - 806, 807, 235, 808, 0, 765, 706, 708, 707, 725, - 726, 727, 728, 729, 730, 731, 704, 813, 821, 822, + 195, 396, 477, 273, 0, 89, 0, 0, 818, 802, + 768, 769, 806, 819, 820, 821, 822, 807, 0, 228, + 808, 809, 235, 810, 0, 767, 708, 710, 709, 727, + 728, 729, 730, 731, 732, 733, 706, 815, 823, 824, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 648, 663, 0, 677, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 660, 661, 0, 0, 0, 0, - 760, 0, 662, 0, 0, 670, 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, 673, 0, + 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 662, 663, 0, 0, 0, 0, + 762, 0, 664, 0, 0, 672, 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, 675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 759, 0, 0, 541, 0, 0, - 757, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 810, 0, - 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, - 389, 529, 490, 537, 558, 216, 247, 403, 483, 523, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, - 214, 459, 355, 232, 221, 508, 526, 276, 436, 203, - 485, 515, 229, 463, 0, 0, 560, 205, 513, 482, - 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 811, 812, 243, 561, 712, 536, 210, 0, 535, 391, - 505, 514, 378, 367, 209, 512, 376, 366, 320, 720, - 721, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 524, 0, 199, 0, 478, 525, 562, 224, - 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, - 546, 547, 549, 550, 551, 552, 553, 555, 554, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, - 475, 770, 758, 683, 774, 685, 771, 772, 680, 681, - 684, 773, 563, 564, 565, 566, 567, 568, 569, 570, + 0, 385, 244, 0, 761, 0, 0, 542, 0, 0, + 759, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 812, 0, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 3398, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 813, 814, 243, 563, 714, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 722, 723, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 772, 760, 685, 776, 687, 773, 774, + 682, 683, 686, 775, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 0, 761, 669, 668, 0, 676, 0, 702, 703, 705, - 709, 710, 711, 722, 723, 724, 732, 734, 735, 733, - 736, 737, 738, 741, 742, 743, 744, 739, 740, 745, - 686, 690, 687, 688, 689, 701, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 784, 785, 786, 787, - 788, 789, 715, 719, 718, 716, 717, 713, 714, 667, - 190, 211, 352, 0, 434, 275, 559, 532, 527, 197, - 213, 775, 249, 776, 0, 0, 780, 0, 0, 0, - 782, 781, 0, 783, 749, 748, 0, 0, 777, 778, - 0, 779, 0, 0, 192, 193, 200, 212, 222, 226, - 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, - 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, - 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, - 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, - 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 509, 521, 539, 544, 460, 790, 791, 792, 793, - 794, 795, 796, 797, 286, 516, 545, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, - 446, 277, 240, 815, 0, 202, 236, 220, 246, 261, - 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, - 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, - 0, 360, 497, 498, 302, 496, 0, 679, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 666, 0, 0, 0, 257, 671, 0, 0, - 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 678, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 674, 675, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 89, 0, 0, 816, 800, 766, 767, 804, - 817, 818, 819, 820, 805, 0, 228, 806, 807, 235, - 808, 0, 765, 706, 708, 707, 725, 726, 727, 728, - 729, 730, 731, 704, 813, 821, 822, 0, 252, 307, - 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 663, - 0, 677, 0, 0, 0, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 660, 661, 0, 0, 0, 0, 760, 0, 662, - 0, 0, 670, 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, 673, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 759, 0, 0, 541, 0, 0, 757, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 810, 0, 451, 409, 520, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, - 537, 558, 216, 247, 403, 483, 523, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, - 232, 221, 508, 526, 276, 436, 203, 485, 515, 229, - 463, 0, 0, 560, 205, 513, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 811, 812, 243, - 561, 712, 536, 210, 0, 535, 391, 505, 514, 378, - 367, 209, 512, 376, 366, 320, 720, 721, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, - 0, 199, 0, 478, 525, 562, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 518, 530, 540, 546, 547, 549, - 550, 551, 552, 553, 555, 554, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 522, 475, 770, 758, - 683, 774, 685, 771, 772, 680, 681, 684, 773, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 0, 761, 669, - 668, 0, 676, 0, 702, 703, 705, 709, 710, 711, - 722, 723, 724, 732, 734, 735, 733, 736, 737, 738, - 741, 742, 743, 744, 739, 740, 745, 686, 690, 687, - 688, 689, 701, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 784, 785, 786, 787, 788, 789, 715, - 719, 718, 716, 717, 713, 714, 667, 190, 211, 352, - 0, 434, 275, 559, 532, 527, 197, 213, 775, 249, - 776, 0, 0, 780, 0, 0, 0, 782, 781, 0, - 783, 749, 748, 0, 0, 777, 778, 0, 779, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, - 539, 544, 460, 790, 791, 792, 793, 794, 795, 796, - 797, 286, 516, 545, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, - 815, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 976, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 975, 541, 0, 0, 0, 0, 0, 972, 973, 349, - 933, 316, 191, 215, 966, 970, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 581, 368, 465, 519, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 559, 532, 527, 197, 213, 0, 249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, - 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 1460, - 800, 0, 0, 1457, 0, 0, 0, 0, 1455, 0, - 228, 1456, 1454, 235, 1459, 0, 765, 335, 344, 343, - 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, - 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, - 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 0, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 559, 532, 527, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 286, 516, 545, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 0, 380, 360, 497, 498, 302, 80, 496, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, - 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 89, 0, 0, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, - 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 88, 434, 275, 559, 532, 527, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 2063, 0, - 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1516, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 1518, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 1520, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 1294, 0, 1295, 1296, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 581, 368, 465, 519, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 0, 380, 360, 497, 498, - 302, 80, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 1497, 0, 627, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 581, 368, 465, 519, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 88, 434, 275, - 559, 532, 527, 197, 213, 0, 249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, - 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 89, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, - 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, - 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, - 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 0, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 559, 532, 527, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 2063, 0, 0, 2062, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 286, 516, 545, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 2014, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 1697, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 520, 223, 271, 438, 415, 449, 422, 274, 0, 2012, - 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, - 490, 537, 558, 216, 247, 403, 483, 523, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, - 355, 232, 221, 508, 526, 276, 436, 203, 485, 515, - 229, 463, 0, 0, 560, 205, 513, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, - 243, 561, 218, 536, 210, 0, 535, 391, 505, 514, - 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, - 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 524, 0, 199, 0, 478, 525, 562, 224, 225, 227, - 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, - 549, 550, 551, 552, 553, 555, 554, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 581, 368, 465, - 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, - 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, - 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, - 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 559, 532, 527, 197, 213, 0, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, - 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, - 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, - 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, - 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, - 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, - 556, 557, 286, 516, 545, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, - 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, - 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, - 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, - 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, - 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 927, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, - 349, 933, 316, 191, 215, 931, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, - 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 517, 542, 543, 250, 389, 529, 490, 537, 558, - 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, - 508, 526, 276, 436, 203, 485, 515, 229, 463, 0, - 0, 560, 205, 513, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 510, 511, 243, 561, 218, - 536, 210, 0, 535, 391, 505, 514, 378, 367, 209, - 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, - 0, 478, 525, 562, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 518, 530, 540, 546, 547, 549, 550, 551, - 552, 553, 555, 554, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 581, 368, 465, 519, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, - 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 559, 532, 527, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, - 460, 287, 288, 426, 427, 300, 301, 556, 557, 286, - 516, 545, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 2014, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 1697, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 541, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 510, 511, 243, 561, 218, 536, 210, 0, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 368, 465, 519, 321, 333, 336, 326, 345, - 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, - 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, - 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 559, 532, - 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, - 426, 427, 300, 301, 556, 557, 286, 516, 545, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, - 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, - 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 1497, 0, 627, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, - 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, - 3300, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 559, 532, 527, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 1847, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1848, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 581, 368, 465, 519, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, - 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, - 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, - 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 2414, 627, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, - 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, - 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, - 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2415, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, - 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 510, 511, 243, 561, 218, 536, 210, - 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 581, 368, 465, 519, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, - 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 559, - 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, - 288, 426, 427, 300, 301, 556, 557, 286, 516, 545, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 627, - 0, 0, 0, 0, 2399, 0, 0, 0, 0, 228, - 0, 0, 235, 2400, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, - 389, 529, 490, 537, 558, 216, 247, 403, 483, 523, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, - 214, 459, 355, 232, 221, 508, 526, 276, 436, 203, - 485, 515, 229, 463, 0, 0, 560, 205, 513, 482, - 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 510, 511, 243, 561, 218, 536, 210, 0, 535, 391, - 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, - 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 524, 0, 199, 0, 478, 525, 562, 224, - 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, - 546, 547, 549, 550, 551, 552, 553, 555, 554, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, - 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, - 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, - 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, - 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, - 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 0, 434, 275, 559, 532, 527, 197, - 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, - 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, - 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, - 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, - 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, - 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, - 300, 301, 556, 557, 286, 516, 545, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, - 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, - 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, - 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, - 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 1539, 0, 0, - 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1538, 627, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, - 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, - 537, 558, 216, 247, 403, 483, 523, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, - 232, 221, 508, 526, 276, 436, 203, 485, 515, 229, - 463, 0, 0, 560, 205, 513, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 510, 511, 243, - 561, 218, 536, 210, 0, 535, 391, 505, 514, 378, - 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, - 0, 199, 0, 478, 525, 562, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 518, 530, 540, 546, 547, 549, - 550, 551, 552, 553, 555, 554, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 581, 368, 465, 519, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 559, 532, 527, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, - 539, 544, 460, 287, 288, 426, 427, 300, 301, 556, - 557, 286, 516, 545, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 629, 630, 631, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 581, 368, 465, 519, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 559, 532, 527, 197, 213, 0, 249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, - 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, - 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, - 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, - 0, 0, 3424, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 0, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 559, 532, 527, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 286, 516, 545, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 1697, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, - 490, 537, 558, 216, 247, 403, 483, 523, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, - 355, 232, 221, 508, 526, 276, 436, 203, 485, 515, - 229, 463, 0, 0, 560, 205, 513, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, - 243, 561, 218, 536, 210, 0, 535, 391, 505, 514, - 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, - 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 524, 0, 199, 0, 478, 525, 562, 224, 225, 227, - 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, - 549, 550, 551, 552, 553, 555, 554, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 581, 368, 465, - 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, - 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, - 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, - 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 559, 532, 527, 197, 213, 0, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, - 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, - 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, - 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, - 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, - 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, - 556, 557, 286, 516, 545, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, - 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, - 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, - 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, - 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, - 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 541, 0, 0, 0, 3300, 0, 0, 0, - 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, - 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 517, 542, 543, 250, 389, 529, 490, 537, 558, - 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, - 508, 526, 276, 436, 203, 485, 515, 229, 463, 0, - 0, 560, 205, 513, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 510, 511, 243, 561, 218, - 536, 210, 0, 535, 391, 505, 514, 378, 367, 209, - 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, - 0, 478, 525, 562, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 518, 530, 540, 546, 547, 549, 550, 551, - 552, 553, 555, 554, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 581, 368, 465, 519, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, - 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 559, 532, 527, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, - 460, 287, 288, 426, 427, 300, 301, 556, 557, 286, - 516, 545, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 541, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 510, 511, 243, 561, 218, 536, 210, 0, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 368, 465, 519, 321, 333, 336, 326, 345, - 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, - 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, - 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 559, 532, - 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, + 581, 582, 0, 763, 671, 670, 0, 678, 0, 704, + 705, 707, 711, 712, 713, 724, 725, 726, 734, 736, + 737, 735, 738, 739, 740, 743, 744, 745, 746, 741, + 742, 747, 688, 692, 689, 690, 691, 703, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 786, 787, + 788, 789, 790, 791, 717, 721, 720, 718, 719, 715, + 716, 669, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 777, 249, 778, 0, 0, 782, 0, + 0, 0, 784, 783, 0, 785, 751, 750, 0, 0, + 779, 780, 0, 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, - 426, 427, 300, 301, 556, 557, 286, 516, 545, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, - 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, - 0, 0, 2064, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, - 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, - 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 559, 532, 527, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 1520, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 581, 368, 465, 519, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, - 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, - 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, - 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, - 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, - 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, - 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1327, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, - 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 510, 511, 243, 561, 218, 536, 210, - 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 581, 368, 465, 519, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, - 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 559, - 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, - 288, 426, 427, 300, 301, 556, 557, 286, 516, 545, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 510, 522, 540, 545, 460, 792, 793, + 794, 795, 796, 797, 798, 799, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 481, 217, 446, 277, 240, 817, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 681, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 668, 0, 0, 0, 257, 673, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 680, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 676, 677, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 89, 0, 1500, 818, 802, 768, + 769, 806, 819, 820, 821, 822, 807, 0, 228, 808, + 809, 235, 810, 0, 767, 708, 710, 709, 727, 728, + 729, 730, 731, 732, 733, 706, 815, 823, 824, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 662, 663, 0, 0, 0, 0, 762, + 0, 664, 0, 0, 672, 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, 675, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 761, 0, 0, 542, 0, 0, 759, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 812, 0, 451, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, + 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, + 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, + 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 813, 814, 243, 563, 714, 537, 210, 0, 536, + 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, + 722, 723, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, + 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 523, 475, 772, 760, 685, 776, 687, 773, 774, 682, + 683, 686, 775, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 0, 763, 671, 670, 0, 678, 0, 704, 705, + 707, 711, 712, 713, 724, 725, 726, 734, 736, 737, + 735, 738, 739, 740, 743, 744, 745, 746, 741, 742, + 747, 688, 692, 689, 690, 691, 703, 693, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 786, 787, 788, + 789, 790, 791, 717, 721, 720, 718, 719, 715, 716, + 669, 190, 211, 352, 0, 434, 275, 561, 533, 528, + 197, 213, 777, 249, 778, 0, 0, 782, 0, 0, + 0, 784, 783, 0, 785, 751, 750, 0, 0, 779, + 780, 0, 781, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 510, 522, 540, 545, 460, 792, 793, 794, + 795, 796, 797, 798, 799, 286, 517, 546, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, + 217, 446, 277, 240, 817, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 380, 0, 360, 497, 498, 302, 496, 0, 681, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 668, 0, 0, 0, 257, 673, 0, + 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 680, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 676, 677, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, + 477, 273, 0, 89, 0, 0, 818, 802, 768, 769, + 806, 819, 820, 821, 822, 807, 0, 228, 808, 809, + 235, 810, 0, 767, 708, 710, 709, 727, 728, 729, + 730, 731, 732, 733, 706, 815, 823, 824, 0, 252, + 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 650, + 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, - 389, 529, 490, 537, 558, 216, 247, 403, 483, 523, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, - 214, 459, 355, 232, 221, 508, 526, 276, 436, 203, - 485, 515, 229, 463, 0, 0, 560, 205, 513, 482, + 0, 0, 662, 663, 907, 0, 0, 0, 762, 0, + 664, 0, 0, 672, 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, 675, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 761, 0, 0, 542, 0, 0, 759, 0, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 812, 0, 451, 409, + 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, + 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, + 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, + 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 510, 511, 243, 561, 218, 536, 210, 0, 535, 391, - 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, - 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 524, 0, 199, 0, 478, 525, 562, 224, + 813, 814, 243, 563, 714, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 722, + 723, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, - 546, 547, 549, 550, 551, 552, 553, 555, 554, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, - 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, - 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, - 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, - 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, - 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 1802, 434, 275, 559, 532, 527, 197, - 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, + 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 475, 772, 760, 685, 776, 687, 773, 774, 682, 683, + 686, 775, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 0, 763, 671, 670, 0, 678, 0, 704, 705, 707, + 711, 712, 713, 724, 725, 726, 734, 736, 737, 735, + 738, 739, 740, 743, 744, 745, 746, 741, 742, 747, + 688, 692, 689, 690, 691, 703, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 786, 787, 788, 789, + 790, 791, 717, 721, 720, 718, 719, 715, 716, 669, + 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 213, 777, 249, 778, 0, 0, 782, 0, 0, 0, + 784, 783, 0, 785, 751, 750, 0, 0, 779, 780, + 0, 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, - 300, 301, 556, 557, 286, 516, 545, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, - 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 507, 510, 522, 540, 545, 460, 792, 793, 794, 795, + 796, 797, 798, 799, 286, 517, 546, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 446, 277, 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, - 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 360, 497, 498, 302, 496, 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 0, 668, 0, 0, 0, 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 411, 486, 405, 680, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 676, 677, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1794, 627, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 273, 0, 89, 0, 0, 818, 802, 768, 769, 806, + 819, 820, 821, 822, 807, 0, 228, 808, 809, 235, + 810, 0, 767, 708, 710, 709, 727, 728, 729, 730, + 731, 732, 733, 706, 815, 823, 824, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 650, 665, + 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 662, 663, 0, 0, 0, 0, 762, 0, 664, + 0, 0, 672, 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, 675, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 761, 0, 0, 542, 0, 0, 759, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 812, 0, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 813, + 814, 243, 563, 714, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 722, 723, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, + 772, 760, 685, 776, 687, 773, 774, 682, 683, 686, + 775, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 763, 671, 670, 0, 678, 0, 704, 705, 707, 711, + 712, 713, 724, 725, 726, 734, 736, 737, 735, 738, + 739, 740, 743, 744, 745, 746, 741, 742, 747, 688, + 692, 689, 690, 691, 703, 693, 694, 695, 696, 697, + 698, 699, 700, 701, 702, 786, 787, 788, 789, 790, + 791, 717, 721, 720, 718, 719, 715, 716, 669, 190, + 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, + 777, 249, 778, 0, 0, 782, 0, 0, 0, 784, + 783, 0, 785, 751, 750, 0, 0, 779, 780, 0, + 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 792, 793, 794, 795, 796, + 797, 798, 799, 286, 517, 546, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, + 277, 240, 817, 0, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, + 360, 497, 498, 302, 496, 0, 681, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, + 0, 668, 0, 0, 0, 257, 673, 0, 0, 0, + 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 680, 354, 0, 0, 476, 384, 0, 0, + 0, 0, 0, 676, 677, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, + 0, 89, 0, 0, 818, 802, 768, 769, 806, 819, + 820, 821, 822, 807, 0, 228, 808, 809, 235, 810, + 0, 767, 708, 710, 709, 727, 728, 729, 730, 731, + 732, 733, 706, 815, 823, 824, 0, 252, 307, 259, + 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, + 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, + 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 662, 663, 0, 0, 0, 0, 762, 0, 664, 0, + 0, 672, 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, 675, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, + 761, 0, 0, 542, 0, 0, 759, 0, 0, 0, + 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, + 453, 0, 0, 0, 812, 0, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 813, 814, + 243, 563, 714, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 722, 723, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 772, + 760, 685, 776, 687, 773, 774, 682, 683, 686, 775, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 763, + 671, 670, 0, 678, 0, 704, 705, 707, 711, 712, + 713, 724, 725, 726, 734, 736, 737, 735, 738, 739, + 740, 743, 744, 745, 746, 741, 742, 747, 688, 692, + 689, 690, 691, 703, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 786, 787, 788, 789, 790, 791, + 717, 721, 720, 718, 719, 715, 716, 669, 190, 211, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 777, + 249, 778, 0, 0, 782, 0, 0, 0, 784, 783, + 0, 785, 751, 750, 0, 0, 779, 780, 0, 781, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 792, 793, 794, 795, 796, 797, + 798, 799, 286, 517, 546, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, - 537, 558, 216, 247, 403, 483, 523, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, - 232, 221, 508, 526, 276, 436, 203, 485, 515, 229, - 463, 0, 0, 560, 205, 513, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 510, 511, 243, - 561, 218, 536, 210, 0, 535, 391, 505, 514, 378, - 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, - 0, 199, 0, 478, 525, 562, 224, 225, 227, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 977, 542, 0, 0, 0, 0, 0, 974, 975, + 349, 935, 316, 191, 215, 968, 972, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, + 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, + 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, + 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, + 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, + 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 518, 530, 540, 546, 547, 549, - 550, 551, 552, 553, 555, 554, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 581, 368, 465, 519, + 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, + 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, + 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, + 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 559, 532, 527, 197, 213, 0, 249, + 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, @@ -5066,23 +3500,23 @@ var yyAct = [...]int{ 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, - 539, 544, 460, 287, 288, 426, 427, 300, 301, 556, - 557, 286, 516, 545, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, + 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, + 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, + 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 1664, 0, 0, 0, + 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 0, 0, 1463, 802, 0, 0, 1460, 0, 0, 0, + 0, 1458, 0, 228, 1459, 1457, 235, 1462, 0, 767, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, @@ -5096,192 +3530,193 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, + 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 563, 564, 565, 566, + 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, + 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, + 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, + 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, + 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, + 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, + 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, + 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 581, 368, 465, 519, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 559, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, + 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 1662, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, - 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, - 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, - 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, + 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, + 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 0, 380, 360, 497, 498, + 302, 80, 496, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, + 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, + 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, + 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, + 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, - 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 0, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 559, 532, 527, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 286, 516, 545, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 1660, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, + 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, + 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, + 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, + 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, + 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, + 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, + 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, + 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, + 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, + 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, + 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, + 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 88, + 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 2070, 0, 0, 2069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 627, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, + 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, + 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 1519, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 1521, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 1523, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 1297, 0, 1298, 1299, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, - 490, 537, 558, 216, 247, 403, 483, 523, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, - 355, 232, 221, 508, 526, 276, 436, 203, 485, 515, - 229, 463, 0, 0, 560, 205, 513, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, - 243, 561, 218, 536, 210, 0, 535, 391, 505, 514, - 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, - 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 524, 0, 199, 0, 478, 525, 562, 224, 225, 227, - 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, - 549, 550, 551, 552, 553, 555, 554, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 581, 368, 465, - 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, - 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, - 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, - 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 559, 532, 527, 197, 213, 0, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, - 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, - 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, - 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, - 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, - 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, - 556, 557, 286, 516, 545, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, - 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, - 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, - 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 1658, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, - 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, + 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, + 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, + 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, + 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, + 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, + 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, + 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, + 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, + 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, + 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, + 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, + 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, + 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, + 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, + 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, + 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, + 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, + 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, + 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, + 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, + 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, + 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, + 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, + 491, 379, 253, 416, 0, 380, 360, 497, 498, 302, + 80, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, - 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, + 1500, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5289,35 +3724,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, - 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, - 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 517, 542, 543, 250, 389, 529, 490, 537, 558, - 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, - 508, 526, 276, 436, 203, 485, 515, 229, 463, 0, - 0, 560, 205, 513, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 510, 511, 243, 561, 218, - 536, 210, 0, 535, 391, 505, 514, 378, 367, 209, - 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, - 0, 478, 525, 562, 224, 225, 227, 0, 266, 270, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, + 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, + 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, + 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, + 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, + 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, + 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, + 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 518, 530, 540, 546, 547, 549, 550, 551, - 552, 553, 555, 554, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 581, 368, 465, 519, 321, 333, + 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, + 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, + 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, - 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 559, 532, 527, 197, 213, 0, 249, 0, 0, + 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, + 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, + 317, 318, 363, 431, 0, 190, 211, 352, 88, 434, + 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, @@ -5325,22 +3760,22 @@ var yyAct = [...]int{ 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, - 460, 287, 288, 426, 427, 300, 301, 556, 557, 286, - 516, 545, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 1656, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -5354,35 +3789,165 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 541, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 510, 511, 243, 561, 218, 536, 210, 0, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 563, 564, 565, 566, 567, 568, + 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 368, 465, 519, 321, 333, 336, 326, 345, + 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 2070, 0, 0, 2069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 2021, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 1700, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 2019, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, + 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, + 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, + 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 929, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, + 0, 0, 0, 0, 0, 349, 935, 316, 191, 215, + 933, 0, 395, 441, 453, 0, 0, 0, 242, 0, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, - 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 559, 532, - 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, + 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, @@ -5390,21 +3955,21 @@ var yyAct = [...]int{ 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, - 426, 427, 300, 301, 556, 557, 286, 516, 545, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, + 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 1652, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 2021, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 627, 0, + 396, 477, 273, 0, 0, 0, 0, 1700, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -5419,34 +3984,164 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, + 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, + 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, + 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, + 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, + 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, + 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, + 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, + 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, + 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, + 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, + 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, + 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, + 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, + 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, + 477, 273, 0, 0, 0, 1500, 0, 629, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, + 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, + 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 0, 0, 0, 542, 0, 0, 0, 3308, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, + 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, + 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, + 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, + 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, + 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, + 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, + 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, + 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 1854, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1855, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, + 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 559, 532, 527, 197, 213, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, + 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, @@ -5455,27 +4150,157 @@ var yyAct = [...]int{ 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 1650, 0, + 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, + 0, 0, 0, 0, 2422, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2423, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, + 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, + 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 2407, + 0, 0, 0, 0, 228, 0, 0, 235, 2408, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, + 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, + 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, + 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, + 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, + 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, + 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, + 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, + 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, + 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, + 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, + 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, + 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, + 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, + 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, + 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, + 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, + 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, + 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, + 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, + 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, + 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, + 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, + 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, + 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, + 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, + 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 1542, 0, 0, 0, 350, 254, + 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, + 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, + 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, + 0, 0, 1541, 629, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, + 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5483,35 +4308,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, + 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, + 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, + 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, + 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, + 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, + 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, + 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, + 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, + 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, + 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 581, 368, 465, 519, 321, + 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, + 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, + 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 0, 249, 0, + 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, @@ -5519,22 +4344,22 @@ var yyAct = [...]int{ 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, + 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, + 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, + 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 1648, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 631, 632, 633, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -5549,34 +4374,164 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 510, 511, 243, 561, 218, 536, 210, - 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, + 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, + 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, + 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, + 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, + 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, + 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, + 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, + 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, + 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, + 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, + 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, + 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, + 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, + 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, + 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, + 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, + 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, + 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, + 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, + 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, + 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, + 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, + 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, + 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, + 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, + 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, + 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, + 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, + 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, + 0, 0, 0, 3432, 0, 0, 0, 349, 0, 316, + 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, + 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 1700, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 0, 266, 270, 278, 281, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 581, 368, 465, 519, 321, 333, 336, 326, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, - 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 559, - 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, @@ -5584,10 +4539,10 @@ var yyAct = [...]int{ 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, - 288, 426, 427, 300, 301, 556, 557, 286, 516, 545, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, + 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, @@ -5598,7 +4553,7 @@ var yyAct = [...]int{ 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 1623, 0, 0, 0, 627, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, @@ -5613,34 +4568,164 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, + 0, 3308, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, - 389, 529, 490, 537, 558, 216, 247, 403, 483, 523, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, - 214, 459, 355, 232, 221, 508, 526, 276, 436, 203, - 485, 515, 229, 463, 0, 0, 560, 205, 513, 482, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, + 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, + 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, + 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, + 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, + 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 89, 0, 0, 0, 629, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, + 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, + 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, + 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, + 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, + 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, + 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, + 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, + 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, + 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, + 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, + 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, + 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, + 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, + 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, + 0, 2071, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, + 477, 273, 0, 0, 0, 0, 0, 188, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, + 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, + 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, + 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, + 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, + 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, + 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 510, 511, 243, 561, 218, 536, 210, 0, 535, 391, - 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, + 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 524, 0, 199, 0, 478, 525, 562, 224, + 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, - 546, 547, 549, 550, 551, 552, 553, 555, 554, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, + 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, - 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, + 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, + 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, - 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 0, 434, 275, 559, 532, 527, 197, + 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, + 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, @@ -5649,27 +4734,157 @@ var yyAct = [...]int{ 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, - 300, 301, 556, 557, 286, 516, 545, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, + 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 1524, 257, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, - 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 1523, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, + 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, + 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, + 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, + 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, + 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, + 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, + 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, + 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5677,35 +4892,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, - 537, 558, 216, 247, 403, 483, 523, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, - 232, 221, 508, 526, 276, 436, 203, 485, 515, 229, - 463, 0, 0, 560, 205, 513, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 510, 511, 243, - 561, 218, 536, 210, 0, 535, 391, 505, 514, 378, - 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, - 0, 199, 0, 478, 525, 562, 224, 225, 227, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, + 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, + 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, + 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, + 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, + 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 518, 530, 540, 546, 547, 549, - 550, 551, 552, 553, 555, 554, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 581, 368, 465, 519, + 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, + 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, + 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, + 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 559, 532, 527, 197, 213, 0, 249, + 1809, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, @@ -5713,10 +4928,10 @@ var yyAct = [...]int{ 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, - 539, 544, 460, 287, 288, 426, 427, 300, 301, 556, - 557, 286, 516, 545, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, + 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, + 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, + 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, @@ -5727,8 +4942,8 @@ var yyAct = [...]int{ 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, + 0, 0, 1801, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, @@ -5743,34 +4958,164 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, + 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 517, 542, 543, 250, 389, 529, 490, 537, 558, 216, - 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, - 526, 276, 436, 203, 485, 515, 229, 463, 0, 0, - 560, 205, 513, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 510, 511, 243, 561, 218, 536, - 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, + 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, + 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, + 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, + 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, + 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, + 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, + 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, + 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, + 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, + 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 1667, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, + 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, + 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, + 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, + 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, + 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, + 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, + 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, + 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, + 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, + 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, + 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, + 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, + 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, + 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, + 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, + 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, + 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, + 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, + 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, + 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, + 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, + 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, + 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, + 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 1665, 0, 0, 0, 0, 0, + 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, + 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, + 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, + 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, + 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, + 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, + 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, + 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, - 478, 525, 562, 224, 225, 227, 0, 266, 270, 278, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, - 553, 555, 554, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 581, 368, 465, 519, 321, 333, 336, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, - 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 559, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, @@ -5778,22 +5123,22 @@ var yyAct = [...]int{ 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, - 287, 288, 426, 427, 300, 301, 556, 557, 286, 516, - 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 1663, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -5806,35 +5151,165 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1277, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, - 250, 389, 529, 490, 537, 558, 216, 247, 403, 483, - 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, - 203, 485, 515, 229, 463, 0, 0, 560, 205, 513, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, + 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 1661, 0, 0, 0, 0, 0, 0, 257, + 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, + 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, + 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, + 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, + 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, + 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, + 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, + 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, + 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 1659, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, + 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, + 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, + 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 510, 511, 243, 561, 218, 536, 210, 0, 535, - 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, + 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, + 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 524, 0, 199, 0, 478, 525, 562, + 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, - 540, 546, 547, 549, 550, 551, 552, 553, 555, 554, + 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, + 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 368, 465, 519, 321, 333, 336, 326, 345, 0, + 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, - 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 559, 532, 527, + 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, + 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, + 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, @@ -5843,21 +5318,21 @@ var yyAct = [...]int{ 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, - 427, 300, 301, 556, 557, 1276, 516, 545, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, + 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, + 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 1655, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 188, 0, 0, + 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, @@ -5871,46 +5346,176 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, - 490, 537, 558, 216, 247, 403, 483, 523, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, - 355, 232, 221, 508, 526, 276, 436, 203, 485, 515, - 229, 463, 0, 0, 560, 205, 513, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, - 243, 561, 218, 536, 210, 0, 535, 391, 505, 514, - 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, + 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, + 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, + 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, + 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, + 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, + 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, + 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, + 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 1653, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, + 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, + 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, + 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, + 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, + 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 399, 0, 1651, 0, + 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, + 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, + 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, + 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, + 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 524, 0, 199, 0, 478, 525, 562, 224, 225, 227, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, - 549, 550, 551, 552, 553, 555, 554, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 581, 368, 465, - 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 559, 532, 527, 197, 213, 0, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, - 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, - 556, 557, 286, 516, 545, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, @@ -5922,7 +5527,7 @@ var yyAct = [...]int{ 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 1626, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -5937,34 +5542,164 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 584, 0, 541, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 517, 542, 543, 250, 389, 529, 490, 537, 558, - 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, - 508, 526, 276, 436, 203, 485, 515, 229, 463, 0, - 0, 560, 205, 513, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 510, 511, 243, 561, 218, - 536, 210, 0, 535, 391, 505, 514, 378, 367, 209, - 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, - 0, 478, 525, 562, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 518, 530, 540, 546, 547, 549, 550, 551, - 552, 553, 555, 554, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 563, 564, 565, + 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, + 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, + 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, + 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, + 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, + 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, + 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, + 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, + 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, + 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 581, 368, 465, 519, 321, 333, + 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, + 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, + 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, + 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, + 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, + 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, + 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, + 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, + 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, + 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, + 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, + 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, + 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, + 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, + 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, + 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, + 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, + 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, + 0, 0, 1527, 257, 0, 0, 0, 0, 350, 254, + 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, + 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, + 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, + 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, + 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, + 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, + 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, + 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, + 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, + 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, + 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, + 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, + 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, + 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, + 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, + 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, + 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, + 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, + 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, + 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, + 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, + 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, + 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, + 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, + 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, + 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, + 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, + 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, + 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, + 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, - 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, + 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, + 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 559, 532, 527, 197, 213, 0, 249, 0, 0, + 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, @@ -5972,10 +5707,10 @@ var yyAct = [...]int{ 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, - 460, 287, 288, 426, 427, 300, 301, 556, 557, 286, - 516, 545, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, @@ -5987,7 +5722,7 @@ var yyAct = [...]int{ 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -6000,46 +5735,176 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 541, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1280, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, - 543, 250, 389, 529, 490, 537, 558, 216, 247, 403, - 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, - 436, 203, 485, 515, 229, 463, 0, 0, 560, 205, - 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 510, 511, 243, 561, 218, 536, 210, 0, - 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, - 562, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, - 530, 540, 546, 547, 549, 550, 551, 552, 553, 555, - 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 563, 564, 565, 566, 567, 568, + 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 368, 465, 519, 321, 333, 336, 326, 345, + 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 1279, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 888, 0, 0, 0, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, + 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, + 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, + 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 0, 586, 0, 542, 0, 0, + 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, - 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 559, 532, - 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, + 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 3432, 393, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, - 426, 427, 300, 301, 556, 557, 286, 516, 545, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, + 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, @@ -6051,7 +5916,7 @@ var yyAct = [...]int{ 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 627, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -6065,35 +5930,165 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, - 529, 490, 537, 558, 216, 247, 403, 483, 523, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, - 459, 355, 232, 221, 508, 526, 276, 436, 203, 485, - 515, 229, 463, 0, 0, 560, 205, 513, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, - 511, 243, 561, 218, 536, 210, 0, 535, 391, 505, - 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, + 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, + 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, + 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, + 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, + 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, + 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, + 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, + 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, + 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, + 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, + 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, + 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 3440, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, + 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, + 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, + 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, + 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, + 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, + 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, + 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, + 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, + 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, + 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, + 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, + 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, + 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, + 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, + 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, + 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, + 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 524, 0, 199, 0, 478, 525, 562, 224, 225, + 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, - 547, 549, 550, 551, 552, 553, 555, 554, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 368, - 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, + 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, + 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, + 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, - 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 559, 532, 527, 197, 213, + 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, + 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, + 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, @@ -6102,9 +6097,9 @@ var yyAct = [...]int{ 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, - 301, 556, 557, 286, 516, 545, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, + 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, @@ -6116,7 +6111,7 @@ var yyAct = [...]int{ 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 800, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, @@ -6131,135 +6126,71 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, + 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, - 558, 216, 247, 403, 483, 523, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, - 221, 508, 526, 276, 436, 203, 485, 515, 229, 463, - 0, 0, 560, 205, 513, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 510, 511, 243, 561, - 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, - 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, - 199, 0, 478, 525, 562, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, - 551, 552, 553, 555, 554, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 581, 368, 465, 519, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, - 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 559, 532, 527, 197, 213, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, - 544, 460, 287, 288, 426, 427, 300, 301, 556, 557, - 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, - 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, - 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, - 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, - 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, - 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, - 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, - 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, - 542, 543, 250, 389, 529, 490, 537, 558, 216, 247, - 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, - 276, 436, 203, 485, 515, 229, 463, 0, 0, 560, - 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 510, 511, 243, 561, 218, 536, 210, - 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, - 525, 562, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, - 555, 554, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 581, 368, 465, 519, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, - 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 559, - 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, - 288, 426, 427, 300, 301, 556, 557, 286, 516, 545, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 0, 0, 360, 497, 498, 302, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 0, 0, 360, + 497, 498, 302, } var yyPact = [...]int{ - -1000, -1000, 4794, -1000, -439, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 5199, -1000, -446, -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, 2079, 2364, - -1000, -1000, -1000, -1000, 2308, -1000, 784, 1796, -1000, 2082, - 4710, -1000, 46521, 548, -1000, 43933, 539, 161, 29052, -1000, - 217, -1000, 193, 45227, 216, -1000, -1000, -1000, -256, 18698, - 2011, 83, 79, 46521, -1000, -1000, -1000, -1000, 2275, 1785, - -1000, 404, -1000, -1000, -1000, -1000, -1000, -1000, 43286, -1000, - 874, -1000, -1000, 2088, 2060, 2317, 673, 1998, -1000, 2171, - 1785, -1000, 18698, 2240, 2140, 18051, 18051, 471, -1000, -1000, - 256, -1000, -1000, 24523, 46521, 31640, 374, -1000, 2082, -1000, - -1000, -1000, 130, -1000, 364, 1708, -1000, 1695, -1000, 758, - 827, 412, 513, 508, 411, 400, 392, 391, 383, 381, - 380, 379, 414, -1000, 697, 697, -110, -112, 1494, 473, - 470, 470, 864, 489, 2029, 2024, -1000, -1000, 697, 697, - 697, 402, 697, 697, 697, 697, 344, 341, 697, 697, - 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, - 697, 697, 697, 697, 697, 369, 2082, 319, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2201, 2313, + -1000, -1000, -1000, -1000, 2383, -1000, 860, 1868, -1000, 2159, + 368, -1000, 45784, 617, -1000, 43188, 615, 146, 28261, -1000, + 243, -1000, 229, 44486, 244, -1000, -1000, -1000, -315, 17875, + 2070, 84, 83, 45784, -1000, -1000, -1000, -1000, 2333, 1866, + -1000, 416, -1000, -1000, -1000, -1000, -1000, -1000, 42539, -1000, + 969, -1000, -1000, 2162, 2183, 2388, 777, 2151, -1000, 2217, + 1866, -1000, 17875, 2319, 2226, 17226, 17226, 549, -1000, -1000, + 164, -1000, -1000, 23718, 45784, 30857, 328, -1000, 2159, -1000, + -1000, -1000, 101, -1000, 414, 1784, -1000, 1781, -1000, 572, + 933, 453, 557, 554, 452, 447, 433, 432, 430, 429, + 423, 419, 456, -1000, 795, 795, -104, -116, 3950, 550, + 524, 524, 958, 571, 2101, 2096, -1000, -1000, 795, 795, + 795, 381, 795, 795, 795, 795, 395, 394, 795, 795, + 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, + 795, 795, 795, 795, 795, 371, 2159, 364, -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, @@ -6299,60 +6230,60 @@ 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, 46521, 227, 46521, -1000, 602, 46521, 823, 823, - 141, 823, 823, 823, 823, 214, 668, 73, -1000, 191, - 315, 233, 313, 832, 389, -1000, -1000, 308, 832, 1587, - -1000, 679, 184, -1000, 823, 823, -1000, 12203, 163, 12203, - 12203, -1000, 2067, -1000, -1000, -1000, -1000, -1000, 1069, -1000, - -1000, -1000, -1000, -1000, 488, -1000, -1000, -1000, -1000, 45227, - 42639, -1000, -1000, 61, -1000, -1000, 1450, 1077, 18698, 1331, - -1000, 1274, 638, -1000, -1000, -1000, -1000, -1000, 583, -1000, - 19345, 19345, 19345, 19345, -1000, -1000, 1713, 41992, 1713, 1713, - 19345, 1713, -1000, 19345, 1713, 1713, 1713, 18698, 1713, 1713, - 1713, 1713, -1000, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, -1000, -1000, -1000, -1000, 1713, 597, 1713, 1713, 1713, - 1713, 1713, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1713, 1713, 1713, 1713, 1713, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 20639, - 1304, 1290, 1288, -1000, 16110, 1713, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 45784, 245, 45784, -1000, 683, 45784, + 943, 943, 100, 943, 943, 943, 943, 252, 695, 81, + -1000, 237, 378, 226, 356, 927, 326, -1000, -1000, 352, + 927, 1600, -1000, 784, 190, -1000, 943, 943, -1000, 11360, + 162, 11360, 11360, -1000, 2139, -1000, -1000, -1000, -1000, -1000, + 1173, -1000, -1000, -1000, -1000, -1000, 567, -1000, -1000, -1000, + -1000, 44486, 41890, -1000, -1000, 95, -1000, -1000, 1604, 1164, + 17875, 1513, -1000, 1277, 756, -1000, -1000, -1000, -1000, -1000, + 664, -1000, 18524, 18524, 18524, 18524, -1000, -1000, 1601, 41241, + 1601, 1601, 18524, 1601, -1000, 18524, 1601, 1601, 1601, 17875, + 1601, 1601, 1601, 1601, -1000, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, -1000, -1000, -1000, -1000, 1601, 682, 1601, + 1601, 1601, 1601, 1601, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1601, 1601, 1601, 1601, 1601, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 19822, 1316, 1314, 1304, -1000, 15279, 1601, -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, 46521, -1000, 1713, 241, - 45227, 45227, 361, 2171, 1785, -1000, 2275, 2183, 404, -1000, - 2865, 1723, 1268, 1153, 1785, 1685, 46521, -1000, 1749, -1000, - -1000, -1000, -1000, 1943, 1146, 1562, -1000, -1000, -1000, -1000, - 1455, 18698, -1000, -1000, 2299, -1000, 21934, 596, 2292, 41345, - -1000, 471, 471, 1693, 474, 37, -1000, -1000, -1000, -1000, - 731, 28405, -1000, -1000, -1000, -1000, 1600, 46521, -1000, -1000, - 4268, 1091, -1000, 1795, -1000, 1598, -1000, 1769, 18698, 1820, - 526, 1091, 506, 504, 502, -1000, -16, -1000, -1000, -1000, - -1000, -1000, -1000, 697, 697, 697, -1000, 387, 2230, 4710, - 5283, -1000, -1000, -1000, 40698, 1794, 1091, -1000, 1792, -1000, - 811, 562, 593, 593, 1091, -1000, -1000, 45874, 1091, 791, - 782, 1091, 1091, 45227, 45227, -1000, 40051, -1000, 39404, 38757, - 1071, 45227, 38110, 37463, 36816, 36169, 35522, -1000, 1896, -1000, - 1756, -1000, -1000, -1000, 45874, 1091, 1091, 45874, 45227, 45874, - 46521, 1091, -1000, -1000, 357, -1000, -1000, 1063, 1062, 1045, - 697, 697, 1037, 1559, 1551, 1545, 697, 697, 1036, 1530, - 30346, 1493, 323, 1035, 1026, 1021, 1002, 1490, 218, 1487, - 993, 981, 1016, 45227, 1791, 46521, -1000, 301, 753, 494, - 728, 2082, 2008, 1691, 487, 511, 1091, 476, 476, 45227, - -1000, 14162, -1000, -1000, 1485, 18698, -1000, 836, 832, 832, - -1000, -1000, -1000, -1000, -1000, -1000, 823, 46521, 836, -1000, - -1000, -1000, 832, 823, 46521, 823, 823, 823, 823, 832, - 832, 832, 823, 46521, 46521, 46521, 46521, 46521, 46521, 46521, - 46521, 46521, 12203, 679, 823, -277, -1000, 1477, -1000, 1897, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 45784, -1000, + 1601, 277, 44486, 44486, 425, 2217, 1866, -1000, 2333, 2369, + 416, -1000, 2973, 1525, 1323, 1255, 1866, 1766, 45784, -1000, + 1794, -1000, -1000, -1000, -1000, 2008, 1258, 1591, -1000, -1000, + -1000, -1000, 2125, 17875, -1000, -1000, 2363, -1000, 21121, 678, + 2361, 40592, -1000, 549, 549, 1779, 481, 53, -1000, -1000, + -1000, -1000, 821, 27612, -1000, -1000, -1000, -1000, 1688, 45784, + -1000, -1000, 4566, 1176, -1000, 1864, -1000, 1681, -1000, 1822, + 17875, 1894, 606, 1176, 595, 584, 577, -1000, -8, -1000, + -1000, -1000, -1000, -1000, -1000, 795, 795, 795, -1000, 421, + 2317, 368, 5410, -1000, -1000, -1000, 39943, 1862, 1176, -1000, + 1857, -1000, 899, 650, 660, 660, 1176, -1000, -1000, 45135, + 1176, 897, 892, 1176, 1176, 44486, 44486, -1000, 39294, -1000, + 38645, 37996, 1160, 44486, 37347, 36698, 36049, 35400, 34751, -1000, + 2060, -1000, 1886, -1000, -1000, -1000, 45135, 1176, 1176, 45135, + 44486, 45135, 45784, 1176, -1000, -1000, 382, -1000, -1000, 1142, + 1141, 1140, 795, 795, 1125, 1582, 1569, 1551, 795, 795, + 1124, 1549, 29559, 1531, 366, 1120, 1112, 1111, 1103, 1512, + 207, 1505, 1098, 1086, 1101, 44486, 1853, 45784, -1000, 351, + 800, 527, 451, 818, 2159, 2068, 1773, 565, 604, 1176, + 537, 537, 44486, -1000, 13325, -1000, -1000, 1488, 17875, -1000, + 946, 927, 927, -1000, -1000, -1000, -1000, -1000, -1000, 943, + 45784, 946, -1000, -1000, -1000, 927, 943, 45784, 943, 943, + 943, 943, 927, 927, 927, 943, 45784, 45784, 45784, 45784, + 45784, 45784, 45784, 45784, 45784, 11360, 784, 943, -322, -1000, + 1485, -1000, 1976, -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, @@ -6367,282 +6298,282 @@ 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, 12203, 12203, -1000, -1000, - -1000, -1000, 215, -1000, 34875, 425, 727, -1000, 1689, 34228, - -1000, -289, -291, -305, -314, -1000, -1000, -1000, -326, -330, - -1000, -1000, -1000, 18698, 18698, 18698, 18698, -147, -1000, 1060, - 19345, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 248, 978, - 19345, 19345, 19345, 19345, 19345, 19345, 19345, 19345, 19345, 19345, - 19345, 19345, 19345, 19345, 19345, -1000, -1000, 26464, 4358, 4358, - 638, 638, 638, 638, -1000, -78, 1688, 45874, -1000, -1000, - -1000, 595, 18698, 18698, 638, -1000, 1091, 16110, 33581, 18051, - 18051, 18698, 746, 1077, 45874, 18698, -1000, 1153, -1000, -1000, - -1000, 1138, -1000, 807, 2043, 2043, 2043, 2043, 18698, 18698, - 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 2043, 45227, - 45227, 830, 18698, 18698, 18698, 18698, 18698, 18698, 14815, 18698, - 18698, 19345, 18698, 18698, 18698, 1153, 18698, 18698, 18698, 18698, - 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, - 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, - 18698, 18698, 18698, 1153, 18698, 1184, 18698, 18698, 18051, 13509, - 18051, 18051, 18051, 18051, 18051, -1000, -1000, -1000, -1000, -1000, - 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 1153, 18698, - 18698, 18698, 18698, 18698, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1227, 1472, 1199, 18698, -1000, 1686, - -1000, -63, 23876, 18698, 1465, 2291, 1830, 45227, -1000, -1000, - -1000, 2171, -1000, 2171, 1227, 2494, 1859, 18051, -1000, -1000, - 2494, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1539, - -1000, 46521, 1685, 2127, 45227, 1935, 1462, 431, -1000, 18698, - 18698, 1684, -1000, 1081, 46521, -1000, -147, -1000, 32934, -1000, - -1000, 11550, 46521, 376, 46521, -1000, 23229, 32287, 259, 37, - -1000, 1662, -1000, 43, 47, 15462, 628, -1000, -1000, -1000, - 1494, 19992, 1387, 628, 155, -1000, -1000, -1000, 1769, -1000, - 1769, 1769, 1769, 1769, 431, 431, 431, 431, -1000, -1000, - -1000, -1000, -1000, 1787, 1786, -1000, 1769, 1769, 1769, 1769, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 11360, + 11360, -1000, -1000, -1000, -1000, 234, -1000, 34102, 415, 811, + -1000, 1770, 33453, -1000, -325, -326, -332, -336, -1000, -1000, + -1000, -341, -350, -1000, -1000, -1000, 17875, 17875, 17875, 17875, + -140, -1000, 889, 18524, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 155, 806, 18524, 18524, 18524, 18524, 18524, 18524, 18524, + 18524, 18524, 18524, 18524, 18524, 18524, 18524, 18524, -1000, -1000, + 25665, 6759, 6759, 756, 756, 756, 756, -1000, -71, 1769, + 45135, -1000, -1000, -1000, 676, 17875, 17875, 756, -1000, 1176, + 15279, 32804, 17226, 17226, 17875, 827, 1164, 45135, 17875, -1000, + 1255, -1000, -1000, -1000, 1126, -1000, 913, 2143, 2143, 2143, + 2143, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, + 17875, 2143, 44486, 44486, 1393, 17875, 17875, 17875, 17875, 17875, + 17875, 13980, 17875, 17875, 18524, 17875, 17875, 17875, 1255, 17875, + 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, + 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, + 17875, 17875, 17875, 17875, 17875, 17875, 1255, 17875, 1082, 17875, + 17875, 17226, 12670, 17226, 17226, 17226, 17226, 17226, -1000, -1000, + -1000, -1000, -1000, 17875, 17875, 17875, 17875, 17875, 17875, 17875, + 17875, 1255, 17875, 17875, 17875, 17875, 17875, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1337, 1247, 1301, + 17875, -1000, 1768, -1000, -149, 23069, 17875, 1455, 2356, 1927, + 44486, -1000, -1000, -1000, 2217, -1000, 2217, 1337, 2898, 2011, + 17226, -1000, -1000, 2898, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1559, -1000, 45784, 1766, 2222, 44486, 2006, 1451, + 435, -1000, 17875, 17875, 1765, -1000, 1130, 45784, -1000, -140, + -1000, 32155, -1000, -1000, 10705, 45784, 417, 45784, -1000, 22420, + 31506, 240, 53, -1000, 1726, -1000, 56, 47, 14629, 752, + -1000, -1000, -1000, 3950, 19173, 1524, 752, 128, -1000, -1000, + -1000, 1822, -1000, 1822, 1822, 1822, 1822, 435, 435, 435, + 435, -1000, -1000, -1000, -1000, -1000, 1852, 1848, -1000, 1822, + 1822, 1822, 1822, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1783, 1783, 1783, - 1771, 1771, 459, -1000, 18698, 329, 31640, 2104, 1003, 1140, - 301, 478, 1828, 1091, 1091, 1091, 478, -1000, 1120, 1118, - 1098, -1000, -431, 1680, -1000, -1000, 2227, -1000, -1000, 774, - 835, 829, 820, 45227, 272, 359, -1000, 441, -1000, 31640, - 1091, 779, 593, 1091, -1000, 1091, -1000, -1000, -1000, -1000, - -1000, 1091, -1000, -1000, 1679, -1000, 1660, 880, 828, 865, - 824, 1679, -1000, -1000, -85, 1679, -1000, 1679, -1000, 1679, - -1000, 1679, -1000, 1679, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 733, 234, -196, 45227, 272, 486, -1000, - 485, 26464, -1000, -1000, -1000, 26464, 26464, -1000, -1000, -1000, - -1000, 1458, 1451, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1846, 1846, 1846, 1828, 1828, 509, -1000, 17875, 314, 30857, + 2215, 1097, 1384, 351, 547, 1912, 1176, 1176, 1176, 547, + -1000, 1237, 1234, 1206, -1000, -422, 1763, -1000, -1000, 2316, + -1000, -1000, 628, 924, 917, 834, 44486, 301, 412, -1000, + 521, -1000, 30857, 1176, 891, 660, 1176, -1000, 1176, -1000, + -1000, -1000, -1000, -1000, 1176, -1000, -1000, 1753, -1000, 1647, + 978, 914, 964, 912, 1753, -1000, -1000, -78, 1753, -1000, + 1753, -1000, 1753, -1000, 1753, -1000, 1753, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 838, 239, -181, 44486, + 301, 564, -1000, 562, 25665, -1000, -1000, -1000, 25665, 25665, + -1000, -1000, -1000, -1000, 1448, 1431, -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, -418, 46521, -1000, 293, 725, 339, 372, 337, - 46521, 340, 2151, 2149, 2148, 2134, 2110, 299, 336, 46521, - 46521, 476, 1886, 46521, 2120, 46521, -1000, -1000, -1000, -1000, - -1000, 1077, 46521, -1000, -1000, 823, 823, -1000, -1000, 46521, - 823, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 823, + -1000, -1000, -1000, -1000, -1000, -421, 45784, -1000, 334, 803, + 399, 422, 377, 45784, 350, 2252, 2246, 2234, 2232, 2231, + -1000, -1000, -1000, 1429, 355, 387, 45784, 45784, 537, 1968, + 45784, 2193, 45784, -1000, -1000, -1000, -1000, -1000, 1164, 45784, + -1000, -1000, 943, 943, -1000, -1000, 45784, 943, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 943, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 46521, -1000, -1000, -1000, -1000, - 45227, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -28, 135, 54, 382, -1000, -1000, -1000, -1000, -1000, 2164, - -1000, 1077, 800, 756, -1000, 1713, -1000, -1000, 995, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 248, 19345, 19345, 19345, - 1554, 529, 1650, 1661, 1498, 1027, 1027, 764, 764, 656, - 656, 656, 656, 656, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1419, -1000, 1713, 45874, 1595, 13509, 1281, 1842, - 1153, 2921, -1000, 1566, -1000, 1566, 1271, 798, -1000, 18698, - 1153, 2899, -1000, -1000, 1153, 1153, 1153, 18698, -1000, -1000, - 18698, 18698, 18698, 18698, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 18698, 1670, 1667, 2277, -1000, -1000, + -1000, -1000, 45784, -1000, -1000, -1000, -1000, 44486, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -56, 132, 54, + 398, -1000, -1000, -1000, -1000, -1000, 2258, -1000, 1164, 870, + 847, -1000, 1601, -1000, -1000, 1022, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 155, 18524, 18524, 18524, 1146, 551, 1553, + 1322, 1578, 1310, 1310, 1056, 1056, 763, 763, 763, 763, + 763, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1415, + -1000, 1601, 45135, 1672, 12670, 1516, 1613, 1255, 2852, -1000, + 1669, -1000, 1669, 1196, 830, -1000, 17875, 1255, 2844, -1000, + -1000, 1255, 1255, 1255, 17875, -1000, -1000, 17875, 17875, 17875, + 17875, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, + 1384, 17875, 1751, 1729, 2347, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1065, - 1140, 1140, 1140, 1140, 1140, 18698, 2170, -1000, -1000, -1000, - 1239, 2894, 1441, 2864, 1140, 1140, -1000, 1140, 2853, 2844, - 1153, 1450, 1153, 1666, -1000, 2839, 1140, 2835, 2824, 2820, - 2107, 2814, 2797, 2778, 1140, 1140, 1140, 2095, 2774, 2737, - 2732, 2728, 2708, 2669, 2656, 2651, 2647, 1140, -149, 1140, - 1153, -1000, -1000, -1000, -1000, -1000, 2629, 2074, 1153, 1663, - 1713, 592, -1000, -1000, 1566, 1153, 1153, 1566, 1566, 2601, - 2546, 2450, 2311, 2304, 2294, 1140, 1140, -1000, 1140, 2285, - 2271, 2018, 2003, 1153, -1000, 1199, 46521, -1000, -269, -1000, - 24, 647, 1713, -1000, 30346, 1153, -1000, 3804, -1000, 884, - -1000, -1000, -1000, -1000, -1000, 27758, 1586, 2494, -1000, -1000, - 1713, 1538, -1000, -1000, 431, 100, 27111, 614, 614, 162, - 1077, 1077, 18698, -1000, -1000, -1000, -1000, -1000, -1000, 590, - 2249, 435, 1713, -1000, 1658, 2002, -1000, -1000, -1000, 2126, - 21287, -1000, 1713, 1713, 46521, 1614, 1607, -1000, 589, -1000, - 1095, 1662, 37, 30, -1000, -1000, -1000, -1000, 1077, -1000, - 1094, 377, 2618, -1000, 438, -1000, -1000, -1000, -1000, 2016, - 106, -1000, -1000, -1000, 252, 431, -1000, -1000, -1000, -1000, - -1000, -1000, 1388, 1388, -1000, -1000, -1000, -1000, -1000, 990, - -1000, -1000, -1000, 988, -1000, -1000, 2190, 1850, 329, -1000, - -1000, 697, 1380, -1000, -1000, 2019, 697, 697, 45227, -1000, - -1000, 1332, 2104, 293, 46521, 754, 1885, -1000, 1828, 1828, - 1828, 46521, -1000, -1000, -1000, -1000, -1000, -1000, -424, 77, - 409, -1000, -1000, -1000, 739, 45227, 1536, -1000, 268, -1000, - 1314, -1000, 45227, -1000, 1502, 1782, 1091, 1091, -1000, -1000, - -1000, 45227, 1713, -1000, -1000, -1000, -1000, 509, 2076, 328, - -1000, -1000, -166, -1000, -1000, 272, 268, 45874, 1091, 628, - -1000, -1000, -1000, -1000, -1000, -417, 1476, 496, 274, 342, - 46521, 46521, 46521, 46521, 46521, 570, -1000, -1000, 62, -1000, - -1000, 242, -1000, -1000, -1000, -1000, 242, -1000, -1000, -1000, - -1000, 321, 475, -1000, 46521, 46521, 621, -1000, -1000, -1000, - 832, -1000, -1000, 832, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2061, 46521, 50, -383, -1000, -380, - 18698, -1000, -1000, -1000, -1000, 1172, 519, 1650, 19345, 19345, - 19345, -1000, -1000, -1000, 965, 965, 26464, -1000, 18698, 18051, - -1000, -1000, 18698, 18698, 742, -1000, 18698, 882, -1000, 18698, - -1000, -1000, -1000, 1199, 1140, 1140, 1140, 1140, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1696, 18698, - 18698, 18698, 1153, 338, -1000, -1000, -1000, -1000, -1000, 2276, - -1000, 18698, -1000, 26464, 18698, 18698, 18698, -1000, -1000, -1000, - 18698, 18698, -1000, -1000, 18698, 18698, -1000, 18698, 18698, 18698, - -1000, 18698, 18698, 18698, 18698, -1000, -1000, -1000, -1000, 18698, - 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, 18698, -1000, - -1000, 31640, 127, -149, 1184, 127, 1184, -1000, 18051, 12856, - -1000, -1000, -1000, -1000, -1000, 18698, 18698, 18698, 18698, 18698, - 18698, -1000, -1000, -1000, 18698, 18698, -1000, 18698, -1000, 18698, - -1000, -1000, -1000, -1000, -1000, 647, -1000, 593, 593, 593, - 45227, -1000, -1000, -1000, -1000, 1659, -1000, 2146, -1000, 1970, - 1968, 2259, 2249, -1000, 23229, 2494, -1000, -1000, 45227, -260, - -1000, 1999, 1988, 614, 614, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 10897, 2171, 18698, 1884, 45874, 150, -1000, 22582, - 45227, 45874, 23229, 23229, 23229, 23229, 23229, -1000, 1927, 1924, - -1000, 1942, 1928, 1954, 46521, -1000, 1448, 1153, 2183, 21287, - 404, 18698, 25170, 1652, 23229, -1000, -1000, 23229, 46521, 10244, - -1000, -1000, 39, 42, -1000, -1000, -1000, -1000, 1494, -1000, - -1000, 358, 2125, 2005, -1000, -1000, -1000, -1000, -1000, 1415, - -1000, 1410, 1655, 1408, 234, -1000, 1814, 2055, 697, 697, - -1000, 980, -1000, 1091, 1378, 1373, -1000, -1000, -1000, 477, - -1000, 2119, 46521, 1877, 1875, 1871, -1000, -429, 971, 1780, - 1813, 18698, 1778, 2225, 1647, 45227, -1000, -1000, 45874, -1000, - 266, -1000, 329, 45227, -1000, -1000, -1000, 359, 46521, -1000, - 6950, -1000, -1000, -1000, 268, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 46521, 300, -1000, 1772, 982, -1000, -1000, 1671, - -1000, -1000, -1000, -1000, 220, 325, 1362, 229, 1328, 229, - -1000, 46521, 599, 1850, 46521, -1000, -1000, -1000, 823, 823, - -1000, -1000, 2051, -1000, 1091, 1140, 19345, 19345, -1000, 638, - 317, -129, 1769, 1769, -1000, 1769, 1771, -1000, 1769, 185, - 1769, 182, 1769, -1000, -1000, 1153, 1153, 1199, -1000, 1962, - 1386, -1000, 1077, 18698, 2237, -1000, -1000, -1000, -1000, -1000, - -20, 2228, 2222, 1140, -1000, 1767, 1766, 18698, 1140, 1153, - 1945, 1140, 1140, 1140, 1140, -1000, 1077, 1199, 2213, 1199, - 1140, 1140, 2205, 366, 1140, 1372, 1372, 1372, 1372, 1372, - 1199, 1199, 1199, 1199, 45227, -1000, -149, -1000, -1000, -185, - -186, -1000, 1153, -149, 1651, 1153, -1000, 1922, 1876, 2194, - 1851, 1140, 2163, 1140, 1140, 1140, 1774, -1000, 2158, 2158, - 2158, 1339, 884, 46521, -1000, -1000, -1000, -1000, 2249, 2216, - 1648, -1000, -1000, 100, 450, -1000, 1987, 1988, -1000, 2224, - 1990, 2215, -1000, -1000, -1000, -1000, -1000, 1077, -1000, 2084, - 1657, -1000, 724, 1499, -1000, -1000, 17404, 1341, 1955, 588, - 1339, 1692, 2002, 1826, 1860, 2685, -1000, -1000, -1000, -1000, - 1906, -1000, 1902, -1000, -1000, 1749, -1000, -1000, 1472, 1153, - 2139, 376, 23229, 1682, 1682, -1000, 535, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 851, 6770, 2314, -1000, 1321, -1000, - 1082, 203, 970, -1000, -1000, 697, 697, -1000, 775, 770, - -1000, 46521, 1763, -1000, 431, 1318, 431, 959, -1000, 958, - -1000, -1000, -1000, -1000, 1725, 1865, -1000, -1000, -1000, -1000, - 46521, -1000, -1000, 46521, 46521, 46521, 1761, 2209, -1000, 18698, - 1758, 702, 2178, 45227, 45227, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 468, 697, -398, 330, - 326, 697, 697, 697, -430, -1000, -1000, 1337, 1327, -1000, - -102, -1000, 18698, -1000, -1000, -1000, 1030, 1030, 1304, 1290, - 1288, -1000, 1749, -1000, -1000, -1000, 1310, -1000, -1000, -91, - 45227, 45227, 45227, 45227, -1000, -1000, 941, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 638, - 1153, 349, -94, 1153, -1000, -1000, 431, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18698, -1000, 18698, - -1000, 1077, 18698, 2171, 1275, 18698, 18698, -1000, 953, 937, - 1140, -1000, -1000, -1000, 18698, -1000, -1000, -1000, -1000, -1000, - 18698, -1000, -1000, -1000, 18698, 270, 965, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1153, 365, -1000, - -1000, -1000, -1000, 2251, -1000, 1153, 18698, -1000, -1000, 18698, - -1000, 18698, 18698, -1000, 18698, -1000, 18698, -1000, -1000, -1000, - -1000, 18698, 1713, 2012, 1713, 1713, 25170, -1000, -1000, 2216, - 2192, 2201, 1976, 1989, 1989, 1987, -1000, 2200, 2191, -1000, - 1242, 2186, 1218, 768, -1000, 45874, 18698, 150, -1000, 416, - 45227, 150, 45227, -1000, 2184, -1000, -1000, 18698, 1757, -1000, - 18698, -1000, -1000, -1000, -1000, -1000, -1000, 4358, 2249, 1682, - -1000, -1000, 665, -1000, 18698, -1000, -1000, -1000, 3759, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1214, 1210, -1000, - -1000, 1751, 18698, -1000, -1000, -1000, 1299, 1265, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1749, -1000, -1000, -1000, - -1000, 359, -428, 2101, 45227, 932, -1000, 1313, 1647, 351, - 150, 1206, 697, 697, 697, 913, 912, 30346, 1303, -1000, - 45227, 433, -1000, 359, -1000, -125, -126, 1140, -1000, -1000, - 2124, -1000, -1000, 12856, -1000, -1000, 1748, 1765, -1000, -1000, - -1000, -1000, 1890, -82, -99, -1000, -1000, 1140, 1140, 1913, - 1153, -1000, 1140, 1140, 1259, 1235, -1000, 1140, 1199, 1710, - -1000, 270, 1153, 1857, -1000, -1000, 4358, -1000, -1000, 2184, - 2181, 127, -1000, -1000, 275, 127, 1077, 1568, 1140, 1558, - 1497, 1140, 1140, 25817, -1000, 2179, 2177, 30993, 30993, 647, - 2192, -156, 18698, 18698, 1965, 928, -1000, -1000, -1000, -1000, - 1193, 1188, -1000, 1155, -1000, 2313, -1000, 1077, -1000, 150, - -1000, 524, 1499, -1000, 2171, 1077, 45227, 1077, 99, 2184, - -1000, 1140, -1000, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, -1000, -1000, 45227, 2089, -1000, -1000, 2123, - 1298, 76, -1000, 1185, 1647, -1000, -1000, 149, -1000, 18698, - -1000, 30346, 1134, 1127, -1000, -1000, -1000, -1000, -430, -1000, - -1000, -1000, -1000, -1000, -1000, 404, 1625, -1000, 694, 45227, - 46521, -1000, 1879, -1000, -1000, -1000, 18698, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 18698, -1000, 1153, 1856, -1000, - -274, -1000, -393, 18698, -149, -1000, -1000, -149, -1000, 18698, - -1000, -1000, 18698, -1000, 18698, -1000, -1000, 1264, -1000, -1000, - -1000, -1000, -1000, 1264, 1264, -1000, -156, -1000, 1504, -1000, - 45227, 1077, 1450, -1000, 920, -1000, -1000, -1000, -1000, -1000, - 45874, 1499, 45227, -1000, 1258, 1153, 1713, 2171, -1000, 1241, - -1000, 404, -1000, 1716, 1813, -1000, -1000, -1000, 16757, -1000, - -1000, -1000, -1000, -1000, 202, -88, 12856, 9591, 1234, -1000, - -87, 1140, 1199, -1000, -362, -1000, -1000, -1000, -1000, 195, - -1000, -1000, 1450, -1000, -1000, 1403, 1391, 1316, 29699, -1000, - -1000, -1000, -1000, -156, -1000, -1000, 2122, -1000, -1000, 1417, - -1000, -1000, 25170, 44580, -1000, -75, 273, -88, 18698, 1714, - 1153, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 52, - -1000, -1000, -1000, -1000, -1000, 1671, -95, -1000, -1000, -1000, - 230, -386, -176, -184, -1000, -1000, 19345, -1000, 18698, -1000, - 18698, -1000, 18698, -1000, -1000, -1000, 45227, 1713, -1000, 1152, - -1000, 3797, -197, 1852, -1000, -21, -1000, -1000, -1000, 840, - 1112, -1000, -1000, -1000, -1000, -1000, -1000, 1978, 45227, -1000, - 451, -1000, -1000, -91, -103, 747, -1000, -1000, -1000, -1000, - -1000, 1309, 1222, 1140, -1000, 45227, -1000, 44580, -192, 628, - 4358, -1000, 1841, 1833, 2255, -1000, -1000, -1000, -1000, -1000, - -1000, -436, 1150, 298, -1000, -1000, 230, -1000, 18698, -1000, - 18698, -1000, 1153, -1000, -1000, 2108, 99, -1000, 2310, -1000, - 2286, 675, 675, -1000, 897, -436, -1000, -1000, 1140, 1140, - -1000, -200, -1000, -1000, -1000, -1000, -1000, 447, 968, -1000, - -1000, -1000, -1000, -1000, 4358, -1000, -1000, -1000, 276, 276, - -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1398, 1384, 1384, 1384, + 1384, 1384, 17875, 2035, -1000, -1000, -1000, 1340, 2830, 1465, + 2819, 1384, 1384, -1000, 1384, 2809, 2778, 1255, 1604, 1255, + 1728, -1000, 2774, 1384, 2754, 2750, 2742, 2062, 2738, 2732, + 2719, 1384, 1384, 1384, 2057, 2710, 2655, 2638, 2610, 2588, + 2570, 2553, 2477, 2457, 1384, -142, 1384, 1255, -1000, -1000, + -1000, -1000, -1000, 2438, 2039, 1255, 1727, 1601, 674, -1000, + -1000, 1669, 1255, 1255, 1669, 1669, 2396, 2364, 2306, 2293, + 2276, 2250, 1384, 1384, -1000, 1384, 2245, 2241, 2014, 1994, + 1255, -1000, 1301, 45784, -1000, -312, -1000, 32, 816, 1601, + -1000, 29559, 1255, -1000, 6694, -1000, 1165, -1000, -1000, -1000, + -1000, -1000, 26963, 1758, 2898, -1000, -1000, 1601, 1649, -1000, + -1000, 435, 121, 26314, 734, 734, 143, 1164, 1164, 17875, + -1000, -1000, -1000, -1000, -1000, -1000, 663, 2330, 402, 1601, + -1000, 1767, 2090, -1000, -1000, -1000, 2214, 20472, -1000, 1601, + 1601, 45784, 1565, 1509, -1000, 662, -1000, 1183, 1726, 53, + 35, -1000, -1000, -1000, -1000, 1164, -1000, 1203, 418, 738, + -1000, 493, -1000, -1000, -1000, -1000, 2085, 106, -1000, -1000, + -1000, 261, 435, -1000, -1000, -1000, -1000, -1000, -1000, 1369, + 1369, -1000, -1000, -1000, -1000, -1000, 1092, -1000, -1000, -1000, + 1088, -1000, -1000, 2233, 1925, 314, -1000, -1000, 795, 1361, + -1000, -1000, 2091, 795, 795, 44486, -1000, -1000, 1510, 2215, + 334, 45784, 837, 1965, -1000, 1912, 1912, 1912, 45784, -1000, + -1000, -1000, -1000, -1000, -1000, -426, 75, 389, -1000, -1000, + -1000, 4186, 44486, 1644, -1000, 280, -1000, 1483, -1000, 44486, + -1000, 1623, 1837, 1176, 1176, -1000, -1000, -1000, 44486, 1601, + -1000, -1000, -1000, -1000, 603, 2153, 336, -1000, -1000, -161, + -1000, -1000, 301, 280, 45135, 1176, 752, -1000, -1000, -1000, + -1000, -1000, -416, 1609, 574, 308, 349, 45784, 45784, 45784, + 45784, 45784, 652, -1000, -1000, 68, -1000, -1000, 262, -1000, + -1000, -1000, -1000, 262, -1000, -1000, -1000, -1000, -1000, 367, + 559, -1000, 45784, 45784, 679, -1000, -1000, -1000, 927, -1000, + -1000, 927, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2114, 45784, 43, -377, -1000, -374, 17875, -1000, + -1000, -1000, -1000, 1077, 512, 1553, 18524, 18524, 18524, -1000, + -1000, -1000, 930, 930, 25665, -1000, 17875, 17226, -1000, -1000, + 17875, 17875, 823, -1000, 17875, 1031, -1000, 17875, -1000, -1000, + -1000, 1301, 1384, 1384, 1384, 1384, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1764, 17875, 17875, 17875, + 1255, 341, -1000, -1000, -1000, -1000, -1000, 2345, -1000, 17875, + -1000, 25665, 17875, 17875, 17875, -1000, -1000, -1000, 17875, 17875, + -1000, -1000, 17875, 17875, -1000, 17875, 17875, 17875, -1000, 17875, + 17875, 17875, 17875, -1000, -1000, -1000, -1000, 17875, 17875, 17875, + 17875, 17875, 17875, 17875, 17875, 17875, 17875, -1000, -1000, 30857, + 79, -142, 1082, 79, 1082, -1000, 17226, 12015, -1000, -1000, + -1000, -1000, -1000, 17875, 17875, 17875, 17875, 17875, 17875, -1000, + -1000, -1000, 17875, 17875, -1000, 17875, -1000, 17875, -1000, -1000, + -1000, -1000, -1000, 816, -1000, 660, 660, 660, 44486, -1000, + -1000, -1000, -1000, 1722, -1000, 2242, -1000, 2023, 2022, 2344, + 2330, -1000, 22420, 2898, -1000, -1000, 44486, -302, -1000, 2065, + 2095, 734, 734, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 10050, 2217, 17875, 1961, 45135, 157, -1000, 21771, 44486, 45135, + 22420, 22420, 22420, 22420, 22420, -1000, 1992, 1982, -1000, 2029, + 1984, 2138, 45784, -1000, 1606, 1255, 2369, 20472, 416, 17875, + 24367, 1718, 22420, -1000, -1000, 22420, 45784, 9395, -1000, -1000, + 37, 42, -1000, -1000, -1000, -1000, 3950, -1000, -1000, 812, + 2208, 2083, -1000, -1000, -1000, -1000, -1000, 1598, -1000, 1587, + 1693, 1523, 239, -1000, 1890, 2108, 795, 795, -1000, 1087, + -1000, 1176, 1335, 1333, -1000, -1000, -1000, 552, -1000, 2184, + 45784, 1958, 1956, 1955, -1000, -438, 1073, 1835, 1878, 17875, + 1834, 2311, 1677, 44486, -1000, -1000, 45135, -1000, 220, -1000, + 314, 44486, -1000, -1000, -1000, 412, 45784, -1000, 7026, -1000, + -1000, -1000, 280, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 45784, 333, -1000, 1832, 1171, -1000, -1000, 1909, -1000, -1000, + -1000, -1000, 250, 391, 1331, 265, 1329, 265, -1000, 45784, + 670, 1925, 45784, -1000, -1000, -1000, 943, 943, -1000, -1000, + 2104, -1000, 1176, 1384, 18524, 18524, -1000, 756, 420, -122, + 1822, 1822, -1000, 1822, 1828, -1000, 1822, 212, 1822, 200, + 1822, -1000, -1000, 1255, 1255, 1301, -1000, 1975, 1254, -1000, + 1164, 17875, 2228, -1000, -1000, -1000, -1000, -1000, -14, 2224, + 2212, 1384, -1000, 1821, 1816, 17875, 1384, 1255, 1969, 1384, + 1384, 1384, 1384, -1000, 1164, 1301, 2186, 1301, 1384, 1384, + 2165, 365, 1384, 1521, 1521, 1521, 1521, 1521, 1301, 1301, + 1301, 1301, 44486, -1000, -142, -1000, -1000, -182, -183, -1000, + 1255, -142, 1692, 1255, -1000, 1952, 1948, 2130, 1933, 1384, + 1979, 1384, 1384, 1384, 1913, -1000, 2229, 2229, 2229, 1495, + 1165, 45784, -1000, -1000, -1000, -1000, 2330, 2328, 1679, -1000, + -1000, 121, 462, -1000, 2074, 2095, -1000, 2310, 2059, 2304, + -1000, -1000, -1000, -1000, -1000, 1164, -1000, 2140, 1709, -1000, + 802, 1625, -1000, -1000, 16577, 1518, 2019, 643, 1495, 1713, + 2090, 1903, 1947, 2695, -1000, -1000, -1000, -1000, 1981, -1000, + 1980, -1000, -1000, 1794, -1000, -1000, 1247, 1255, 1873, 417, + 22420, 1683, 1683, -1000, 638, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 937, 4846, 2386, -1000, 1325, -1000, 1199, 197, + 1050, -1000, -1000, 795, 795, -1000, 886, 885, -1000, 45784, + 1815, -1000, 435, 1321, 435, 1048, -1000, 1035, -1000, -1000, + -1000, -1000, 1842, 1950, -1000, -1000, -1000, -1000, 45784, -1000, + -1000, 45784, 45784, 45784, 1802, 2303, -1000, 17875, 1800, 799, + 2100, 44486, 44486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 518, 795, -396, 386, 384, 795, + 795, 795, -439, -1000, -1000, 1482, 1473, -1000, -106, -1000, + 17875, -1000, -1000, -1000, 1064, 1064, 1316, 1314, 1304, -1000, + 1794, -1000, -1000, -1000, 1474, -1000, -1000, -89, 44486, 44486, + 44486, 44486, -1000, -1000, 975, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 756, 1255, 357, + -94, 1255, -1000, -1000, 435, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 17875, -1000, 17875, -1000, 1164, + 17875, 2217, 1288, 17875, 17875, -1000, 1025, 1014, 1384, -1000, + -1000, -1000, 17875, -1000, -1000, -1000, -1000, -1000, 17875, -1000, + -1000, -1000, 17875, 253, 930, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1255, 413, -1000, -1000, -1000, + -1000, 2340, -1000, 1255, 17875, -1000, -1000, 17875, -1000, 17875, + 17875, -1000, 17875, -1000, 17875, -1000, -1000, -1000, -1000, 17875, + 1601, 2156, 1601, 1601, 24367, -1000, -1000, 2328, 2322, 2298, + 2044, 2046, 2046, 2074, -1000, 2288, 2283, -1000, 1270, 2279, + 1260, 854, -1000, 45135, 17875, 157, -1000, 410, 44486, 157, + 44486, -1000, 2294, -1000, -1000, 17875, 1799, -1000, 17875, -1000, + -1000, -1000, -1000, -1000, -1000, 6759, 2330, 1683, -1000, -1000, + 769, -1000, 17875, -1000, -1000, -1000, 3675, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1257, 1241, -1000, -1000, 1798, + 17875, -1000, -1000, -1000, 1413, 1324, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1794, -1000, -1000, -1000, -1000, 412, + -428, 1937, 44486, 1007, -1000, 1469, 1677, 401, 157, 1217, + 795, 795, 795, 996, 980, 29559, 1442, -1000, 44486, 473, + -1000, 412, -1000, -117, -118, 1384, -1000, -1000, 2203, -1000, + -1000, 12015, -1000, -1000, 1793, 1911, -1000, -1000, -1000, -1000, + 1999, -76, -100, -1000, -1000, 1384, 1384, 1291, 1255, -1000, + 1384, 1384, 1302, 1292, -1000, 1384, 1301, 1858, -1000, 253, + 1255, 1942, -1000, -1000, 6759, -1000, -1000, 2294, 2278, 79, + -1000, -1000, 313, 79, 1164, 1771, 1384, 1724, 1701, 1384, + 1384, 25016, -1000, 2268, 2262, 30208, 30208, 816, 2322, -150, + 17875, 17875, 2031, 991, -1000, -1000, -1000, -1000, 1214, 1209, + -1000, 1201, -1000, 2385, -1000, 1164, -1000, 157, -1000, 634, + 1625, -1000, 2217, 1164, 44486, 1164, 102, 2294, -1000, 1384, + -1000, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, -1000, -1000, 44486, 1749, -1000, -1000, 2199, 1440, 74, + -1000, 1275, 1677, -1000, -1000, 154, -1000, 17875, -1000, 29559, + 1197, 1193, -1000, -1000, -1000, -1000, -439, -1000, -1000, -1000, + -1000, -1000, -1000, 416, 1651, -1000, 794, 44486, 45784, -1000, + 1997, -1000, -1000, -1000, 17875, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 17875, -1000, 1255, 1940, -1000, -250, -1000, + -408, 17875, -142, -1000, -1000, -142, -1000, 17875, -1000, -1000, + 17875, -1000, 17875, -1000, -1000, 1410, -1000, -1000, -1000, -1000, + -1000, 1410, 1410, -1000, -150, -1000, 1639, -1000, 44486, 1164, + 1604, -1000, 982, -1000, -1000, -1000, -1000, -1000, 45135, 1625, + 44486, -1000, 1379, 1255, 1601, 2217, -1000, 1366, -1000, 416, + -1000, 1792, 1878, -1000, -1000, -1000, 15928, -1000, -1000, -1000, + -1000, -1000, 321, -87, 12015, 8740, 1309, -1000, -79, 1384, + 1301, -1000, -367, -1000, -1000, -1000, -1000, 232, -1000, -1000, + 1604, -1000, -1000, 1561, 1459, 1412, 28910, -1000, -1000, -1000, + -1000, -150, -1000, -1000, 2196, -1000, -1000, 1527, -1000, -1000, + 24367, 43837, -1000, -69, 269, -87, 17875, 1789, 1255, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10, -1000, -1000, + -1000, -1000, -1000, 1909, -98, -1000, -1000, -1000, 166, -387, + -171, -175, -1000, -1000, 18524, -1000, 17875, -1000, 17875, -1000, + 17875, -1000, -1000, -1000, 44486, 1601, -1000, 1274, -1000, 4517, + -236, 1939, -1000, -57, -1000, -1000, -1000, 935, 1186, -1000, + -1000, -1000, -1000, -1000, -1000, 1706, 44486, -1000, 507, -1000, + -1000, -89, -101, 845, -1000, -1000, -1000, -1000, -1000, 1319, + 1191, 1384, -1000, 44486, -1000, 43837, -219, 752, 6759, -1000, + 1931, 1891, 2334, -1000, -1000, -1000, -1000, -1000, -1000, -441, + 1251, 339, -1000, -1000, 166, -1000, 17875, -1000, 17875, -1000, + 1255, -1000, -1000, 2182, 102, -1000, 2372, -1000, 2365, 770, + 770, -1000, 979, -441, -1000, -1000, 1384, 1384, -1000, -244, + -1000, -1000, -1000, -1000, -1000, 497, 1028, -1000, -1000, -1000, + -1000, -1000, 6759, -1000, -1000, -1000, 219, 219, -1000, -1000, } var yyPgo = [...]int{ - 0, 2914, 2901, 38, 2, 37, 36, 2900, 29, 105, - 209, 45, 215, 100, 2899, 2897, 2896, 2888, 2887, 2886, - 2884, 193, 189, 180, 2883, 2882, 2881, 2880, 2877, 2875, - 2872, 2863, 2860, 2859, 188, 178, 205, 2858, 2855, 2852, - 135, 195, 93, 95, 204, 2851, 2844, 82, 2841, 2838, - 2834, 201, 200, 199, 828, 2829, 198, 127, 58, 2827, - 2826, 2812, 2805, 2803, 2794, 2791, 2787, 2785, 2781, 2780, - 2779, 2777, 2776, 2775, 2773, 2772, 255, 2769, 2767, 19, - 2765, 85, 2760, 2748, 2747, 2746, 7, 2738, 2737, 16, - 44, 2734, 2733, 49, 2731, 2728, 2727, 2726, 2724, 17, - 2723, 28, 2721, 40, 2720, 2718, 136, 2716, 2715, 2710, - 42, 2709, 2705, 2704, 2703, 2702, 2701, 2700, 158, 2699, - 2697, 2695, 192, 211, 2694, 2693, 184, 118, 121, 2692, - 2690, 108, 203, 2686, 129, 2683, 2681, 2679, 162, 2678, - 2155, 2676, 2670, 69, 68, 2669, 197, 2654, 2652, 27, - 39, 71, 3, 26, 30, 2647, 2645, 63, 80, 2629, - 116, 2627, 2615, 113, 90, 2610, 106, 112, 2607, 2606, - 11, 15, 2604, 5, 8, 6, 67, 2603, 2595, 123, - 2593, 2590, 2588, 99, 2585, 2578, 3866, 2577, 94, 147, - 114, 79, 2574, 54, 87, 2573, 2571, 2569, 2568, 2564, - 56, 2563, 2557, 2551, 153, 72, 179, 2544, 48, 84, - 59, 145, 2541, 152, 83, 207, 185, 2540, 2537, 151, - 148, 2534, 2532, 61, 46, 50, 2531, 117, 146, 131, - 65, 103, 150, 2529, 2528, 66, 77, 2527, 2526, 2525, - 2524, 183, 2520, 2513, 76, 2508, 60, 2507, 210, 2505, - 12, 74, 2503, 53, 176, 2502, 78, 2499, 2498, 70, - 181, 73, 43, 2497, 172, 2494, 57, 177, 139, 173, - 2493, 2492, 2491, 2472, 208, 361, 2470, 2463, 144, 186, - 156, 164, 98, 2462, 362, 2461, 2457, 101, 51, 5089, - 2455, 41, 174, 2451, 2449, 6437, 154, 47, 23, 2441, - 122, 2440, 2439, 2438, 2437, 217, 206, 120, 175, 62, - 2432, 2431, 2429, 14, 2428, 2422, 2417, 2416, 2415, 2414, - 91, 35, 34, 33, 216, 75, 10, 102, 171, 81, - 2409, 2408, 2407, 134, 92, 2406, 170, 169, 137, 133, - 2404, 194, 160, 128, 2397, 97, 31, 2396, 2395, 2393, - 2390, 96, 2389, 2388, 2386, 2384, 168, 155, 138, 86, - 2381, 88, 132, 161, 159, 64, 2380, 52, 2377, 2375, - 25, 196, 24, 2374, 13, 119, 124, 2371, 4267, 202, - 2368, 18, 366, 163, 2366, 2362, 1, 9, 4, 2360, - 2358, 2357, 2351, 149, 2350, 2345, 2342, 2338, 22, 55, - 21, 20, 126, 89, 2337, 2334, 3067, 0, 141, 2324, - 212, + 0, 2967, 2965, 30, 1, 40, 38, 2959, 29, 102, + 207, 41, 221, 112, 2956, 2955, 2954, 2953, 2952, 2949, + 2947, 195, 192, 187, 2946, 2943, 2942, 2941, 2938, 2936, + 2935, 2933, 2931, 2930, 185, 178, 204, 2929, 2928, 2927, + 127, 201, 91, 95, 205, 2925, 2924, 82, 2921, 2912, + 2911, 200, 199, 198, 914, 2909, 197, 124, 58, 2908, + 2906, 2905, 2904, 2898, 2894, 2890, 2888, 2887, 2886, 2885, + 2882, 2878, 2876, 2875, 2868, 2867, 227, 2865, 2863, 23, + 2859, 85, 2857, 2855, 2850, 2841, 7, 2836, 2833, 15, + 44, 2832, 2831, 49, 2816, 2811, 2810, 2809, 2808, 20, + 2804, 27, 2802, 42, 2801, 2799, 137, 2795, 2793, 2791, + 45, 2790, 2789, 2788, 2787, 2785, 2784, 2781, 158, 2776, + 2775, 2770, 222, 209, 2767, 2757, 182, 132, 117, 2756, + 2755, 114, 203, 2753, 134, 2748, 2747, 2745, 162, 2744, + 2184, 2741, 2740, 74, 68, 2739, 190, 2735, 2734, 10, + 34, 71, 11, 19, 21, 2732, 2731, 70, 83, 2728, + 135, 2725, 2724, 113, 88, 2722, 105, 99, 2718, 2717, + 14, 4, 2713, 3, 8, 6, 76, 2710, 2708, 123, + 2707, 2705, 2703, 100, 2702, 2701, 2227, 2700, 97, 148, + 116, 81, 2697, 54, 63, 2696, 2693, 2690, 2688, 2686, + 56, 2685, 2683, 2671, 154, 72, 179, 2665, 47, 89, + 59, 150, 2663, 73, 92, 208, 181, 2662, 2660, 153, + 152, 2657, 2637, 62, 52, 50, 2634, 106, 147, 133, + 65, 98, 149, 2626, 2623, 66, 79, 2615, 2613, 2612, + 2611, 183, 2603, 2601, 78, 2597, 60, 2595, 215, 2594, + 16, 69, 2593, 48, 175, 2591, 80, 2589, 2585, 75, + 128, 77, 43, 2582, 172, 2581, 57, 177, 139, 173, + 2576, 2572, 2571, 2570, 214, 325, 2568, 2566, 143, 191, + 156, 164, 93, 2559, 315, 2558, 2556, 101, 51, 5128, + 2553, 39, 174, 2547, 2543, 5578, 155, 46, 24, 2539, + 119, 2536, 2529, 2524, 2522, 206, 186, 118, 176, 61, + 2521, 2520, 2516, 18, 2515, 2511, 2507, 2502, 2480, 2473, + 90, 37, 36, 35, 219, 64, 13, 108, 171, 84, + 2472, 2471, 2469, 122, 129, 2466, 170, 169, 144, 136, + 2465, 193, 157, 145, 2463, 180, 33, 2462, 2460, 2458, + 2457, 96, 2454, 2453, 2451, 2449, 168, 159, 121, 86, + 2446, 94, 131, 160, 163, 55, 2444, 53, 2443, 2441, + 31, 202, 28, 2439, 17, 103, 126, 2437, 4339, 196, + 2430, 22, 314, 161, 2425, 2424, 2, 5, 12, 2423, + 2422, 2421, 2420, 151, 2416, 2414, 2412, 2409, 26, 67, + 25, 9, 120, 87, 2405, 2404, 2403, 3129, 0, 141, + 2402, 210, } -//line sql.y:7884 +//line sql.y:7921 type yySymType struct { union any empty struct{} @@ -7322,7 +7253,7 @@ func (st *yySymType) withUnion() *With { } var yyR1 = [...]int{ - 0, 404, 405, 405, 7, 7, 7, 7, 7, 7, + 0, 405, 406, 406, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 256, 378, @@ -7331,7 +7262,7 @@ var yyR1 = [...]int{ 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 13, 13, 13, 13, 13, 19, 20, 12, 12, 21, 21, 104, 104, 22, 23, 23, 23, - 23, 408, 408, 181, 181, 179, 179, 180, 180, 259, + 23, 409, 409, 181, 181, 179, 179, 180, 180, 259, 259, 24, 25, 25, 269, 269, 268, 268, 268, 270, 270, 270, 270, 308, 308, 308, 26, 26, 26, 26, 26, 124, 124, 381, 381, 380, 374, 374, 373, 373, @@ -7372,67 +7303,68 @@ var yyR1 = [...]int{ 351, 351, 351, 351, 351, 351, 351, 351, 351, 277, 277, 277, 385, 385, 385, 385, 385, 385, 384, 384, 384, 350, 350, 350, 383, 383, 57, 57, 214, 214, - 402, 402, 403, 403, 403, 45, 45, 45, 45, 45, - 45, 44, 44, 44, 40, 40, 40, 40, 40, 40, + 402, 402, 403, 403, 403, 404, 404, 45, 45, 45, + 45, 45, 45, 44, 44, 44, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 46, 46, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 27, 27, 27, + 40, 40, 40, 40, 40, 40, 40, 46, 46, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 106, 106, 107, 107, 107, - 107, 109, 109, 109, 366, 366, 58, 58, 3, 3, - 169, 171, 172, 172, 170, 170, 170, 170, 170, 170, - 60, 60, 59, 59, 174, 173, 175, 175, 175, 1, - 1, 2, 2, 4, 4, 371, 371, 371, 371, 371, + 106, 106, 107, 107, 107, 107, 109, 109, 109, 366, + 366, 58, 58, 3, 3, 169, 171, 172, 172, 170, + 170, 170, 170, 170, 170, 60, 60, 59, 59, 174, + 173, 175, 175, 175, 1, 1, 2, 2, 4, 4, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 332, 332, 332, - 365, 365, 367, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 112, 111, 111, 110, 113, 113, 113, - 113, 113, 113, 113, 113, 369, 369, 369, 61, 61, - 370, 321, 322, 323, 5, 6, 346, 368, 120, 120, - 28, 37, 37, 29, 29, 29, 29, 30, 30, 62, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 332, 332, 332, 365, 365, 367, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 112, 111, + 111, 110, 113, 113, 113, 113, 113, 113, 113, 113, + 369, 369, 369, 61, 61, 370, 321, 322, 323, 5, + 6, 346, 368, 120, 120, 28, 37, 37, 29, 29, + 29, 29, 30, 30, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 276, 276, 285, 285, 275, 275, 300, 300, 300, - 278, 278, 278, 279, 279, 395, 395, 395, 272, 272, - 64, 64, 64, 301, 301, 301, 301, 66, 66, 67, - 68, 68, 303, 303, 304, 304, 69, 70, 82, 82, - 82, 82, 82, 82, 82, 105, 105, 105, 15, 15, - 15, 15, 78, 78, 78, 14, 14, 65, 65, 72, - 392, 392, 393, 394, 394, 394, 394, 73, 75, 31, - 31, 31, 31, 31, 31, 130, 130, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 125, - 125, 125, 119, 119, 409, 76, 77, 77, 123, 123, - 123, 116, 116, 116, 122, 122, 122, 16, 16, 17, - 258, 258, 18, 18, 127, 127, 129, 129, 129, 129, - 129, 131, 131, 131, 131, 131, 131, 131, 126, 126, - 128, 128, 128, 128, 293, 293, 293, 292, 292, 163, - 163, 165, 164, 164, 166, 166, 167, 167, 167, 167, - 212, 212, 189, 189, 251, 251, 252, 252, 250, 250, - 257, 257, 253, 253, 253, 253, 260, 260, 168, 168, - 168, 168, 176, 176, 177, 177, 178, 178, 302, 302, - 298, 298, 298, 297, 297, 182, 182, 182, 184, 183, - 183, 183, 183, 185, 185, 187, 187, 186, 186, 188, - 193, 193, 192, 192, 190, 190, 190, 190, 191, 191, - 191, 191, 194, 194, 140, 140, 140, 140, 140, 140, - 140, 155, 155, 155, 155, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 241, 241, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 63, 63, 63, 63, 63, 63, 276, 276, 285, 285, + 275, 275, 300, 300, 300, 278, 278, 278, 279, 279, + 395, 395, 395, 272, 272, 64, 64, 64, 301, 301, + 301, 301, 66, 66, 67, 68, 68, 303, 303, 304, + 304, 69, 70, 82, 82, 82, 82, 82, 82, 82, + 105, 105, 105, 15, 15, 15, 15, 78, 78, 78, + 14, 14, 65, 65, 72, 392, 392, 393, 394, 394, + 394, 394, 73, 75, 31, 31, 31, 31, 31, 31, + 130, 130, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 125, 125, 125, 119, 119, 410, + 76, 77, 77, 123, 123, 123, 116, 116, 116, 122, + 122, 122, 16, 16, 17, 258, 258, 18, 18, 127, + 127, 129, 129, 129, 129, 129, 131, 131, 131, 131, + 131, 131, 131, 126, 126, 128, 128, 128, 128, 293, + 293, 293, 292, 292, 163, 163, 165, 164, 164, 166, + 166, 167, 167, 167, 167, 212, 212, 189, 189, 251, + 251, 252, 252, 250, 250, 257, 257, 253, 253, 253, + 253, 260, 260, 168, 168, 168, 168, 176, 176, 177, + 177, 178, 178, 302, 302, 298, 298, 298, 297, 297, + 182, 182, 182, 184, 183, 183, 183, 183, 185, 185, + 187, 187, 186, 186, 188, 193, 193, 192, 192, 190, + 190, 190, 190, 191, 191, 191, 191, 194, 194, 140, + 140, 140, 140, 140, 140, 140, 155, 155, 155, 155, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 241, 241, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 149, 217, 217, 216, - 216, 83, 83, 83, 84, 84, 85, 85, 85, 85, - 85, 86, 86, 86, 86, 86, 141, 141, 88, 88, - 87, 87, 207, 207, 290, 290, 89, 90, 90, 93, - 93, 92, 91, 91, 97, 97, 94, 94, 96, 96, - 95, 98, 98, 99, 100, 100, 273, 273, 195, 195, - 203, 203, 203, 203, 196, 196, 196, 196, 196, 196, - 196, 204, 204, 204, 211, 205, 205, 201, 201, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 200, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 149, 217, 217, 216, 216, 83, 83, 83, 84, + 84, 85, 85, 85, 85, 85, 86, 86, 86, 86, + 86, 141, 141, 88, 88, 87, 87, 207, 207, 290, + 290, 89, 90, 90, 93, 93, 92, 91, 91, 97, + 97, 94, 94, 96, 96, 95, 98, 98, 99, 100, + 100, 273, 273, 195, 195, 203, 203, 203, 203, 196, + 196, 196, 196, 196, 196, 196, 204, 204, 204, 211, + 205, 205, 201, 201, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, @@ -7441,34 +7373,33 @@ var yyR1 = [...]int{ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 160, 160, 160, 160, 222, - 222, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 148, 148, 161, 161, - 161, 161, 162, 162, 162, 162, 162, 162, 162, 310, - 310, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 410, 410, 324, 324, 324, 324, 202, 202, - 202, 202, 202, 121, 121, 121, 121, 121, 307, 307, - 307, 311, 311, 311, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 312, - 312, 220, 220, 117, 117, 218, 218, 219, 221, 221, - 213, 213, 213, 213, 215, 215, 198, 198, 198, 223, - 223, 224, 224, 101, 102, 102, 103, 103, 225, 225, - 227, 226, 226, 228, 229, 229, 229, 230, 230, 231, - 231, 231, 47, 47, 47, 47, 47, 42, 42, 42, - 42, 43, 43, 43, 43, 132, 132, 132, 132, 134, - 134, 133, 133, 79, 79, 80, 80, 80, 138, 138, - 139, 139, 139, 136, 136, 137, 137, 248, 248, 232, - 232, 232, 239, 239, 239, 235, 235, 237, 237, 237, - 238, 238, 238, 236, 245, 245, 247, 247, 246, 246, - 242, 242, 243, 243, 244, 244, 244, 240, 240, 197, - 197, 197, 197, 197, 249, 249, 249, 249, 261, 261, - 208, 208, 210, 210, 209, 209, 159, 262, 262, 266, - 263, 263, 267, 267, 267, 267, 255, 255, 255, 264, - 264, 265, 265, 294, 294, 294, 271, 271, 284, 284, - 280, 280, 281, 281, 274, 274, 286, 286, 286, 74, - 206, 206, 362, 362, 359, 289, 289, 291, 291, 295, - 295, 299, 299, 296, 296, 287, 287, 287, 287, 287, + 160, 160, 160, 160, 222, 222, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 148, 148, 161, 161, 161, 161, 162, 162, 162, + 162, 162, 162, 162, 310, 310, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 411, 411, 324, + 324, 324, 324, 202, 202, 202, 202, 202, 121, 121, + 121, 121, 121, 307, 307, 307, 311, 311, 311, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 312, 312, 220, 220, 117, 117, + 218, 218, 219, 221, 221, 213, 213, 213, 213, 215, + 215, 198, 198, 198, 223, 223, 224, 224, 101, 102, + 102, 103, 103, 225, 225, 227, 226, 226, 228, 229, + 229, 229, 230, 230, 231, 231, 231, 47, 47, 47, + 47, 47, 42, 42, 42, 42, 43, 43, 43, 43, + 132, 132, 132, 132, 134, 134, 133, 133, 79, 79, + 80, 80, 80, 138, 138, 139, 139, 139, 136, 136, + 137, 137, 248, 248, 232, 232, 232, 239, 239, 239, + 235, 235, 237, 237, 237, 238, 238, 238, 236, 245, + 245, 247, 247, 246, 246, 242, 242, 243, 243, 244, + 244, 244, 240, 240, 197, 197, 197, 197, 197, 249, + 249, 249, 249, 261, 261, 208, 208, 210, 210, 209, + 209, 159, 262, 262, 266, 263, 263, 267, 267, 267, + 267, 255, 255, 255, 264, 264, 265, 265, 294, 294, + 294, 271, 271, 284, 284, 280, 280, 281, 281, 274, + 274, 286, 286, 286, 74, 206, 206, 362, 362, 359, + 289, 289, 291, 291, 295, 295, 299, 299, 296, 296, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, @@ -7483,7 +7414,8 @@ var yyR1 = [...]int{ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 288, 288, 288, 288, 288, 288, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, + 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, @@ -7522,8 +7454,7 @@ var yyR1 = [...]int{ 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 406, 407, 305, 306, - 306, 306, + 288, 288, 288, 407, 408, 305, 306, 306, 306, } var yyR2 = [...]int{ @@ -7577,103 +7508,104 @@ var yyR2 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, - 0, 2, 0, 2, 2, 0, 1, 5, 1, 3, - 7, 1, 3, 3, 1, 2, 2, 2, 5, 5, - 5, 6, 8, 5, 5, 4, 4, 4, 6, 5, - 5, 5, 2, 2, 2, 2, 3, 3, 3, 4, - 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 3, 4, 4, - 2, 11, 3, 6, 8, 6, 6, 6, 13, 8, - 6, 10, 5, 5, 5, 7, 5, 5, 5, 5, - 5, 7, 7, 5, 5, 0, 6, 5, 6, 4, - 5, 0, 8, 9, 0, 3, 0, 1, 0, 3, - 8, 4, 1, 3, 3, 6, 7, 7, 8, 4, - 0, 1, 0, 1, 3, 3, 1, 1, 2, 1, - 1, 0, 2, 0, 2, 5, 3, 7, 4, 4, - 4, 4, 3, 3, 3, 7, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 0, 2, 2, - 1, 3, 2, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 1, 3, 3, 0, 2, 2, - 2, 2, 2, 2, 2, 4, 4, 3, 0, 1, - 4, 3, 4, 4, 3, 3, 3, 2, 1, 3, - 3, 3, 5, 7, 7, 6, 5, 3, 2, 3, - 3, 3, 7, 3, 3, 3, 3, 4, 7, 5, - 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, - 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, - 4, 4, 4, 2, 3, 3, 3, 5, 2, 3, - 3, 2, 3, 4, 4, 4, 3, 4, 4, 5, - 3, 0, 1, 0, 1, 1, 1, 0, 2, 2, - 0, 2, 2, 0, 2, 0, 1, 1, 1, 1, - 2, 1, 3, 1, 1, 1, 1, 1, 2, 1, - 1, 5, 0, 1, 0, 1, 2, 3, 0, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 1, 4, 4, 2, 2, 3, - 1, 3, 2, 1, 2, 1, 2, 2, 4, 3, - 3, 6, 4, 7, 6, 1, 3, 2, 2, 2, - 2, 1, 1, 1, 3, 2, 1, 1, 1, 0, - 1, 1, 0, 3, 0, 2, 0, 2, 1, 2, - 2, 0, 1, 1, 0, 1, 1, 5, 5, 4, - 0, 2, 4, 4, 0, 1, 0, 1, 2, 3, - 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 2, 3, 5, 0, 1, 2, 1, 1, 0, - 1, 2, 1, 3, 1, 1, 1, 4, 3, 1, - 3, 4, 3, 7, 0, 3, 0, 1, 1, 3, - 1, 3, 1, 1, 3, 3, 1, 3, 4, 4, - 4, 3, 2, 4, 0, 1, 0, 2, 0, 1, - 0, 1, 2, 1, 1, 1, 2, 2, 1, 2, - 3, 2, 3, 2, 2, 2, 1, 1, 3, 3, - 0, 1, 1, 2, 6, 5, 6, 6, 0, 2, - 3, 3, 0, 2, 3, 3, 3, 2, 3, 1, - 6, 3, 4, 3, 1, 3, 4, 5, 6, 3, - 4, 5, 6, 3, 4, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, - 2, 2, 2, 1, 1, 2, 7, 7, 6, 6, - 2, 2, 1, 6, 3, 3, 3, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 1, 1, 0, 1, - 2, 5, 0, 3, 0, 1, 4, 4, 2, 0, - 1, 1, 2, 2, 1, 1, 2, 2, 0, 1, - 1, 1, 1, 5, 1, 3, 0, 3, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 4, 6, 4, - 4, 8, 6, 8, 6, 5, 4, 10, 2, 2, - 1, 2, 2, 2, 4, 5, 5, 5, 5, 5, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 8, 8, 8, 6, 5, 4, 4, 4, 4, 4, - 7, 4, 4, 6, 6, 6, 8, 6, 6, 4, - 4, 3, 4, 6, 6, 4, 4, 4, 6, 8, - 6, 4, 6, 6, 8, 10, 7, 8, 8, 9, - 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 4, 4, 6, 5, 9, 6, - 9, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 6, 8, 10, 12, 14, 6, 8, 8, 10, - 12, 14, 6, 8, 10, 12, 6, 8, 4, 4, - 3, 4, 6, 6, 4, 6, 4, 6, 8, 0, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 0, 2, 2, 0, 2, 0, 1, 5, + 1, 3, 7, 1, 3, 3, 1, 2, 2, 2, + 5, 5, 5, 6, 8, 5, 5, 4, 4, 4, + 6, 5, 5, 5, 2, 2, 2, 2, 3, 3, + 3, 4, 3, 3, 1, 3, 5, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, + 4, 4, 2, 11, 3, 6, 8, 6, 6, 6, + 13, 8, 6, 10, 5, 5, 5, 7, 5, 5, + 5, 5, 5, 7, 7, 5, 5, 4, 4, 4, + 0, 6, 5, 6, 4, 5, 0, 8, 9, 0, + 3, 0, 1, 0, 3, 8, 4, 1, 3, 3, + 6, 7, 7, 8, 4, 0, 1, 0, 1, 3, + 3, 1, 1, 2, 1, 1, 0, 2, 0, 2, + 5, 3, 7, 4, 4, 4, 4, 3, 3, 3, + 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 0, 2, 2, 1, 3, 2, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 1, + 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, + 4, 4, 3, 0, 1, 4, 3, 4, 4, 3, + 3, 3, 2, 1, 3, 3, 3, 5, 7, 7, + 6, 5, 3, 2, 3, 3, 3, 7, 3, 3, + 3, 3, 4, 7, 5, 2, 4, 4, 4, 4, + 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, + 4, 2, 2, 4, 4, 4, 4, 4, 2, 3, + 3, 3, 5, 2, 3, 3, 2, 3, 4, 4, + 4, 3, 4, 4, 5, 3, 0, 1, 0, 1, + 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, + 0, 1, 1, 1, 1, 2, 1, 3, 1, 1, + 1, 1, 1, 2, 1, 1, 5, 0, 1, 0, + 1, 2, 3, 0, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 4, 4, 2, 2, 3, 1, 3, 2, 1, 2, + 1, 2, 2, 4, 3, 3, 6, 4, 7, 6, + 1, 3, 2, 2, 2, 2, 1, 1, 1, 3, + 2, 1, 1, 1, 0, 1, 1, 0, 3, 0, + 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, + 1, 1, 5, 5, 4, 0, 2, 4, 4, 0, + 1, 0, 1, 2, 3, 4, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 2, 3, 5, 0, + 1, 2, 1, 1, 0, 1, 2, 1, 3, 1, + 1, 1, 4, 3, 1, 3, 4, 3, 7, 0, + 3, 0, 1, 1, 3, 1, 3, 1, 1, 3, + 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, + 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, + 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, + 2, 1, 1, 3, 3, 0, 1, 1, 2, 6, + 5, 6, 6, 0, 2, 3, 3, 0, 2, 3, + 3, 3, 2, 3, 1, 6, 3, 4, 3, 1, + 3, 4, 5, 6, 3, 4, 5, 6, 3, 4, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 2, 2, 2, 2, 1, 1, + 2, 7, 7, 6, 6, 2, 2, 1, 6, 3, + 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 1, 1, 0, 1, 2, 5, 0, 3, 0, + 1, 4, 4, 2, 0, 1, 1, 2, 2, 1, + 1, 2, 2, 0, 1, 1, 1, 1, 5, 1, + 3, 0, 3, 1, 1, 1, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 4, 6, 4, 4, 8, 6, 8, 6, + 5, 4, 10, 2, 2, 1, 2, 2, 2, 4, + 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 8, 8, 8, 6, 5, + 4, 4, 4, 4, 4, 7, 4, 4, 6, 6, + 6, 8, 6, 6, 4, 4, 3, 4, 6, 6, + 4, 4, 4, 6, 8, 6, 4, 6, 6, 8, + 10, 7, 8, 8, 9, 4, 4, 4, 4, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, + 4, 6, 5, 9, 6, 9, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 2, 6, 8, 10, 12, + 14, 6, 8, 8, 10, 12, 14, 6, 8, 10, + 12, 6, 8, 4, 4, 3, 4, 6, 6, 4, + 6, 4, 6, 8, 0, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, + 2, 3, 3, 4, 4, 4, 4, 4, 0, 3, + 4, 7, 3, 1, 1, 1, 0, 5, 5, 2, + 3, 1, 2, 2, 1, 2, 1, 2, 2, 1, + 2, 2, 1, 1, 0, 1, 0, 1, 0, 2, + 1, 2, 4, 0, 2, 1, 1, 3, 5, 1, + 1, 1, 2, 2, 0, 3, 0, 2, 2, 1, + 3, 0, 1, 0, 1, 3, 1, 3, 2, 0, + 1, 1, 0, 1, 2, 4, 4, 0, 2, 2, + 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 3, 3, 3, 0, 3, 1, 1, 0, 4, + 0, 1, 1, 0, 3, 1, 3, 2, 1, 1, + 0, 1, 2, 4, 9, 3, 5, 0, 3, 3, + 0, 1, 0, 2, 2, 0, 2, 2, 2, 0, + 2, 1, 2, 3, 3, 0, 2, 1, 2, 3, + 4, 3, 0, 1, 2, 1, 5, 4, 4, 1, + 3, 3, 5, 0, 5, 1, 3, 1, 2, 3, + 4, 1, 1, 3, 3, 1, 3, 3, 3, 3, + 3, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 0, 2, 0, 3, 0, + 1, 0, 1, 1, 5, 0, 1, 0, 1, 2, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 2, 0, 2, 3, 3, 4, 4, - 4, 4, 4, 0, 3, 4, 7, 3, 1, 1, - 1, 0, 5, 5, 2, 3, 1, 2, 2, 1, - 2, 1, 2, 2, 1, 2, 2, 1, 1, 0, - 1, 0, 1, 0, 2, 1, 2, 4, 0, 2, - 1, 1, 3, 5, 1, 1, 1, 2, 2, 0, - 3, 0, 2, 2, 1, 3, 0, 1, 0, 1, - 3, 1, 3, 2, 0, 1, 1, 0, 1, 2, - 4, 4, 0, 2, 2, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, - 3, 1, 1, 0, 4, 0, 1, 1, 0, 3, - 1, 3, 2, 1, 1, 0, 1, 2, 4, 9, - 3, 5, 0, 3, 3, 0, 1, 0, 2, 2, - 0, 2, 2, 2, 0, 2, 1, 2, 3, 3, - 0, 2, 1, 2, 3, 4, 3, 0, 1, 2, - 1, 5, 4, 4, 1, 3, 3, 5, 0, 5, - 1, 3, 1, 2, 3, 4, 1, 1, 3, 3, - 1, 3, 3, 3, 3, 3, 1, 1, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 0, 2, 0, 3, 0, 1, 0, 1, 1, 5, - 0, 1, 0, 1, 2, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -7727,722 +7659,721 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -404, -76, -409, -7, -11, -19, -20, -21, -22, + -1000, -405, -76, -410, -7, -11, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -62, -63, -64, -66, -67, -68, -69, -70, -14, -65, -31, -32, -71, -72, -73, -74, -75, -16, -17, -18, -9, -8, -13, 10, 11, -104, -33, 33, -38, -48, 225, -49, - -39, 226, -50, 228, 227, 264, 229, 257, 75, 311, - 312, 314, 315, 316, 317, -105, 262, 263, 231, 37, + -39, 226, -50, 228, 227, 264, 229, 257, 75, 313, + 314, 316, 317, 318, 319, -105, 262, 263, 231, 37, 46, 34, 35, 38, 235, 270, 271, 234, -10, -34, - 9, -406, 12, 443, 259, 258, 29, -12, 505, 87, - -77, -405, 657, -248, -232, 23, 34, 30, -231, -227, + 9, -407, 12, 445, 259, 258, 29, -12, 507, 87, + -77, -406, 659, -248, -232, 23, 34, 30, -231, -227, -123, -232, 21, 19, 8, -76, -76, -76, 13, 14, -76, -347, -349, 87, 159, 87, -76, -55, -54, -52, -51, -53, -56, 32, -45, -46, -371, -44, -41, 230, 227, 274, 123, 124, 264, 265, 266, 229, 248, 263, - 267, 262, 283, -40, 82, 34, 505, 508, -354, 226, - 232, 233, 228, 444, 126, 125, 76, -351, 366, 538, - 627, -56, 629, 101, 104, 628, 45, 238, 630, 631, - 632, 545, 633, 247, 634, 635, 636, 637, 643, 586, - 644, 645, 646, 127, 8, -76, -299, -295, 91, -288, - 502, 250, 536, 537, 299, 82, 42, 511, 363, 366, - 538, 473, 627, 311, 325, 319, 478, 479, 480, 346, - 338, 503, 539, 512, 302, 251, 287, 621, 336, 135, - 629, 306, 540, 265, 371, 372, 541, 373, 101, 314, - 410, 642, 305, 542, 640, 104, 628, 80, 472, 52, - 624, 45, 260, 334, 234, 330, 630, 288, 543, 514, - 281, 126, 123, 649, 37, 328, 51, 31, 639, 125, - 50, 631, 150, 544, 632, 545, 375, 353, 615, 49, - 376, 266, 546, 85, 271, 507, 309, 623, 377, 492, - 329, 378, 298, 638, 231, 547, 606, 598, 599, 379, - 380, 616, 358, 354, 359, 494, 548, 402, 477, 381, - 602, 603, 656, 53, 549, 550, 617, 124, 551, 79, - 633, 81, 323, 324, 552, 296, 249, 497, 498, 404, - 350, 455, 462, 463, 111, 112, 458, 113, 464, 114, - 465, 466, 467, 456, 115, 108, 457, 468, 469, 351, - 352, 116, 470, 110, 109, 459, 461, 117, 471, 247, - 36, 382, 504, 300, 59, 304, 275, 405, 47, 356, - 653, 46, 611, 499, 553, 614, 349, 345, 452, 54, - 554, 555, 556, 557, 474, 634, 348, 322, 344, 648, - 4, 293, 475, 635, 63, 233, 361, 360, 362, 282, - 401, 341, 558, 559, 560, 254, 83, 561, 331, 22, - 562, 563, 383, 289, 564, 57, 565, 566, 408, 263, - 567, 55, 636, 40, 568, 268, 650, 637, 569, 570, - 571, 572, 270, 573, 385, 574, 600, 601, 384, 355, - 357, 500, 277, 386, 506, 575, 310, 327, 267, 641, - 576, 255, 488, 489, 490, 491, 622, 496, 495, 269, - 274, 262, 409, 256, 577, 578, 579, 580, 581, 303, - 597, 582, 583, 315, 643, 453, 44, 584, 585, 586, - 587, 588, 297, 292, 403, 412, 62, 84, 368, 589, - 590, 620, 321, 290, 591, 312, 56, 644, 645, 646, - 284, 647, 481, 482, 483, 484, 10, 654, 655, 476, - 388, 127, 294, 295, 48, 342, 276, 592, 307, 593, - 332, 333, 347, 320, 343, 313, 607, 278, 389, 454, - 264, 594, 411, 291, 364, 369, 308, 510, 493, 283, - 390, 619, 509, 485, 486, 340, 337, 285, 487, 595, - 391, 239, 279, 280, 596, 608, 392, 393, 301, 394, - 395, 396, 397, 398, 400, 399, 604, 605, 286, 508, - 318, 335, 370, 424, 425, 426, 427, 428, 429, 430, + 267, 262, 283, -40, 82, 34, 507, 510, -354, 226, + 232, 233, 228, 446, 126, 125, 76, -351, 368, 540, + 629, -56, 631, 101, 104, 630, 45, 238, 632, 633, + 634, 547, 635, 247, 636, 637, 638, 639, 645, 588, + 646, 647, 648, 127, 8, -76, -299, -295, 91, -288, + 504, 250, 538, 539, 299, 82, 42, 513, 365, 368, + 540, 475, 629, 313, 327, 321, 480, 481, 482, 348, + 340, 505, 541, 514, 302, 251, 287, 623, 338, 135, + 631, 306, 542, 265, 373, 374, 543, 375, 101, 316, + 412, 644, 305, 544, 642, 104, 630, 80, 474, 52, + 626, 45, 260, 336, 234, 332, 632, 288, 545, 516, + 281, 126, 123, 651, 37, 330, 51, 31, 641, 125, + 50, 633, 150, 546, 634, 547, 377, 355, 617, 49, + 378, 266, 548, 85, 271, 509, 309, 625, 379, 494, + 331, 380, 298, 640, 231, 549, 608, 600, 601, 381, + 382, 618, 360, 356, 361, 496, 550, 404, 479, 383, + 604, 605, 658, 53, 551, 552, 619, 124, 553, 79, + 635, 81, 325, 326, 554, 296, 249, 499, 500, 406, + 352, 457, 464, 465, 111, 112, 460, 113, 466, 114, + 467, 468, 469, 458, 115, 108, 459, 470, 471, 353, + 354, 116, 472, 110, 109, 461, 463, 117, 473, 247, + 36, 384, 506, 300, 59, 304, 275, 407, 47, 358, + 655, 46, 613, 501, 555, 616, 351, 347, 454, 54, + 556, 557, 558, 559, 476, 636, 350, 324, 346, 650, + 4, 293, 477, 637, 63, 233, 363, 362, 364, 282, + 403, 343, 560, 561, 562, 254, 83, 563, 333, 22, + 564, 565, 385, 289, 566, 57, 567, 568, 410, 263, + 569, 55, 638, 40, 570, 268, 652, 639, 571, 572, + 573, 574, 270, 575, 387, 576, 602, 603, 386, 357, + 359, 502, 277, 388, 508, 577, 310, 329, 267, 643, + 578, 255, 490, 491, 492, 493, 624, 498, 497, 269, + 274, 262, 411, 256, 579, 580, 581, 582, 583, 303, + 599, 584, 585, 317, 645, 455, 44, 586, 587, 588, + 589, 590, 297, 292, 405, 414, 62, 84, 370, 591, + 592, 622, 323, 290, 593, 314, 56, 646, 647, 648, + 284, 649, 483, 484, 485, 486, 10, 656, 657, 478, + 390, 127, 294, 295, 48, 344, 276, 594, 312, 307, + 595, 334, 335, 349, 322, 345, 315, 609, 278, 391, + 456, 264, 596, 413, 291, 366, 371, 308, 512, 495, + 283, 392, 621, 511, 487, 488, 342, 339, 285, 489, + 597, 393, 239, 279, 280, 598, 610, 394, 395, 301, + 396, 397, 398, 399, 400, 402, 311, 401, 606, 607, + 286, 510, 320, 337, 372, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 451, 237, -76, 237, -186, -295, 237, -264, 372, - -285, 374, 387, 382, 392, 380, -276, 383, 385, 277, - -395, 402, 237, 389, 225, 375, 384, 393, 394, 301, - 400, 395, 399, 286, 396, 397, 398, -378, 177, 632, - 647, 135, 339, 379, 377, 403, 611, 91, -301, 91, - 92, 93, -288, 313, -303, 318, -289, -378, -288, 316, - -76, -305, -305, -125, 611, 613, -205, -140, 143, -155, - -158, -146, -150, -199, -200, -201, -202, -156, -215, -254, - 166, 167, 174, 144, -211, -159, 27, 501, 445, 444, - 177, 32, -149, 220, 69, 70, 447, 146, 58, 12, - 420, 421, -157, 415, 422, 417, 472, 474, 475, 476, - 473, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 477, 449, 450, 118, 451, 108, 110, 109, 452, - 453, 454, 336, 499, 500, 494, 497, 498, 496, 495, - 351, 352, 455, 456, 457, 111, 112, 113, 114, 115, - 116, 117, 458, 461, 459, 460, 462, 463, 464, 469, - 470, 465, 466, 467, 468, 471, -85, -97, 527, 526, - -98, -147, -148, -161, -162, -289, -295, 242, 414, 236, - 172, 443, -151, -144, -213, 107, 92, 93, -8, -209, - 413, 418, 419, 423, 416, 513, 515, 530, 531, 533, - 518, 523, 522, 525, 488, 489, 490, 491, 492, 493, - 598, 599, 600, 601, 602, 603, 604, 605, -378, -288, - 91, -153, -152, -195, 94, 99, 102, 103, 105, -401, - 260, 332, 333, 119, -406, 625, 90, 95, 96, 97, - 98, 120, 121, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 45, 388, 388, -186, -76, - -76, -76, -76, -225, -123, -227, -10, -8, -406, 9, - -76, -8, -9, -13, -34, -36, 532, -35, -295, 100, - -232, -248, 13, 162, 43, 51, -230, -231, -12, -8, - -140, 20, 24, 25, -128, 168, -140, -295, -128, -274, - 241, -76, -76, -263, -308, 313, -267, 403, 611, 402, - -255, -265, 91, -254, -264, 401, -348, 159, -334, -338, - -289, 252, -364, 248, -186, -357, -356, -289, -406, -124, - -284, 238, 246, 245, 136, -382, 139, 294, 414, 236, - -51, -52, -53, -264, 176, 631, -106, 269, 273, 88, - 88, -338, -337, -336, -383, 273, 252, -363, -355, 244, - 253, -344, 245, 246, -339, 238, 137, -383, -339, 243, - 253, 248, 252, 273, 273, 127, 273, 127, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 268, -345, 151, - -345, 509, 509, -351, -383, 248, 238, -383, -383, 244, - -286, -339, 240, 26, 240, 36, 36, -345, -345, -345, - -264, 176, -345, -345, -345, -345, 281, 281, -345, -345, + 441, 442, 443, 453, 237, -76, 237, -186, -295, 237, + -264, 374, -285, 376, 389, 384, 394, 382, -276, 385, + 387, 277, -395, 404, 237, 391, 225, 377, 386, 395, + 396, 301, 402, 397, 401, 286, 398, 399, 400, -378, + 177, 634, 649, 135, 341, 381, 379, 405, 613, 91, + -301, 91, 92, 93, -288, 315, -303, 320, -289, -378, + -288, 318, -76, -305, -305, -125, 613, 615, -205, -140, + 143, -155, -158, -146, -150, -199, -200, -201, -202, -156, + -215, -254, 166, 167, 174, 144, -211, -159, 27, 503, + 447, 446, 177, 32, -149, 220, 69, 70, 449, 146, + 58, 12, 422, 423, -157, 417, 424, 419, 474, 476, + 477, 478, 475, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 479, 451, 452, 118, 453, 108, 110, + 109, 454, 455, 456, 338, 501, 502, 496, 499, 500, + 498, 497, 353, 354, 457, 458, 459, 111, 112, 113, + 114, 115, 116, 117, 460, 463, 461, 462, 464, 465, + 466, 471, 472, 467, 468, 469, 470, 473, -85, -97, + 529, 528, -98, -147, -148, -161, -162, -289, -295, 242, + 416, 236, 172, 445, -151, -144, -213, 107, 92, 93, + -8, -209, 415, 420, 421, 425, 418, 515, 517, 532, + 533, 535, 520, 525, 524, 527, 490, 491, 492, 493, + 494, 495, 600, 601, 602, 603, 604, 605, 606, 607, + -378, -288, 91, -153, -152, -195, 94, 99, 102, 103, + 105, -401, 260, 334, 335, 119, -407, 627, 90, 95, + 96, 97, 98, 120, 121, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 45, 390, 390, + -186, -76, -76, -76, -76, -225, -123, -227, -10, -8, + -407, 9, -76, -8, -9, -13, -34, -36, 534, -35, + -295, 100, -232, -248, 13, 162, 43, 51, -230, -231, + -12, -8, -140, 20, 24, 25, -128, 168, -140, -295, + -128, -274, 241, -76, -76, -263, -308, 315, -267, 405, + 613, 404, -255, -265, 91, -254, -264, 403, -348, 159, + -334, -338, -289, 252, -364, 248, -186, -357, -356, -289, + -407, -124, -284, 238, 246, 245, 136, -382, 139, 294, + 416, 236, -51, -52, -53, -264, 176, 633, -106, 269, + 273, 88, 88, -338, -337, -336, -383, 273, 252, -363, + -355, 244, 253, -344, 245, 246, -339, 238, 137, -383, + -339, 243, 253, 248, 252, 273, 273, 127, 273, 127, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 268, + -345, 151, -345, 511, 511, -351, -383, 248, 238, -383, + -383, 244, -286, -339, 240, 26, 240, 36, 36, -345, + -345, -345, -264, 176, -345, -345, -345, -345, 281, 281, -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, - -345, -345, -345, -345, -345, 237, -382, -132, 399, 301, - 82, -54, 283, -37, -186, -284, 238, 239, -382, 270, - -186, 221, -186, -278, 159, 16, -278, -275, 388, 386, - 373, 378, -278, -278, -278, -278, 284, 371, -340, 238, - 36, 249, 388, 284, 371, 284, 285, 284, 285, 381, - 391, 284, -300, 15, 162, 414, 376, 380, 277, 237, - 278, 239, 390, 285, -300, 90, -279, 159, 388, 280, - -278, -278, -306, -406, -291, -289, -287, 230, 24, 142, - 26, 28, 145, 177, 130, 20, 146, 38, 232, 339, - 248, 176, 244, 444, 225, 73, 513, 415, 417, 413, - 420, 446, 447, 414, 374, 32, 14, 515, 29, 258, - 25, 39, 170, 227, 149, 516, 261, 27, 259, 118, - 121, 518, 23, 76, 253, 15, 246, 41, 17, 519, - 520, 18, 242, 241, 162, 238, 71, 12, 220, 30, - 158, 67, 521, 137, 522, 523, 524, 525, 131, 69, - 159, 21, 651, 418, 419, 34, 612, 501, 272, 172, - 74, 60, 613, 143, 416, 526, 527, 119, 528, 122, - 77, 618, 139, 19, 72, 43, 529, 273, 530, 243, - 652, 531, 406, 532, 160, 228, 443, 70, 161, 625, - 533, 626, 236, 387, 9, 448, 33, 257, 245, 129, - 68, 534, 237, 148, 449, 450, 240, 132, 120, 8, - 136, 35, 13, 75, 78, 421, 422, 423, 58, 128, - 505, 147, 16, 535, 407, 141, -378, 614, -306, -306, - 33, 92, 240, -289, -186, -82, 606, 229, -130, 388, - -118, 177, 632, 615, 616, 617, 614, 385, 622, 620, - 618, 284, 619, 88, 139, 141, 142, 4, -140, 158, - -196, 151, 152, 153, 154, 155, 156, 157, 162, 143, - 145, 159, -241, 140, 163, 164, 165, 166, 167, 168, - 169, 171, 170, 172, 173, 160, 161, 176, 223, 224, - -150, -150, -150, -150, -211, -217, -216, -406, -213, -378, - -288, -295, -406, -406, -150, -273, -406, -406, -150, -406, - -406, -406, -220, -140, -406, -406, -410, -406, -410, -410, - -324, -406, -324, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, -406, -406, -406, -406, -406, 221, - -406, -406, -406, -406, -406, -324, -324, -324, -324, -324, - -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, - -406, -406, -406, -406, 103, 99, 102, 94, -215, 105, - 90, 90, 90, 90, -8, -9, -205, -406, -305, -392, - -393, -189, -186, -406, 301, -289, -289, 270, -230, -12, - -8, -225, -231, -227, -8, -76, -116, -129, 64, 65, - -131, 25, 39, 68, 66, 24, -407, 89, -407, -248, - -407, 88, -36, -251, 87, 62, 44, 90, 90, 88, - 22, -226, -228, -140, 15, -293, 4, -292, 26, -289, - 90, 221, 15, -187, 30, -186, -274, -274, 88, 313, - 91, -269, -268, 404, 406, 151, -294, -289, 90, 32, - 89, 88, -186, -313, -316, -318, -317, -319, -314, -315, - 336, 337, 177, 340, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 353, 33, 260, 332, 333, 334, 335, - 354, 355, 356, 357, 359, 360, 361, 362, 319, 338, - 503, 320, 321, 322, 323, 324, 325, 327, 328, 329, - 330, 331, -379, -378, 87, 89, 88, -320, 87, -140, - -132, 237, -378, 238, 238, 238, -76, 443, -345, -345, - -345, 268, 20, -44, -41, -371, 19, -40, -41, 230, - 123, 124, 227, 87, -334, 87, -343, -379, -378, 87, - 137, 243, 136, -342, -339, -342, -343, -378, -213, -378, - 137, 137, -378, -378, -260, -289, -260, -260, 24, -260, - 24, -260, 24, 96, -289, -260, 24, -260, 24, -260, - 24, -260, 24, -260, 24, 32, 79, 80, 81, 32, - 83, 84, 85, -213, -378, -378, -213, -334, -213, -186, - -378, -264, 96, 96, 96, -345, -345, 96, 90, 90, - 90, -345, -345, 96, 90, -297, -295, 90, 90, -384, - 254, 298, 300, 96, 96, 96, 96, 32, 90, -385, - 32, 639, 638, 640, 641, 642, 90, 96, 32, 96, - 32, 96, -289, 87, -186, -138, 288, 225, 227, 230, - 77, 90, 304, 305, 302, 307, 308, 151, 45, 88, - 240, 237, -378, -280, 242, -280, -289, -296, -295, -287, - 90, -140, -341, 15, 162, -300, -300, -278, -186, -341, - -300, -278, -186, -278, -278, -278, -278, -300, -300, -300, - -278, -295, -295, -186, -186, -186, -186, -186, -186, -186, - -306, -279, -278, 614, 90, -272, 15, 77, -306, -306, - -304, 316, -78, -289, 90, -15, -11, -22, -21, -23, - 151, 88, 505, -179, -186, 614, 614, 614, 614, 614, - 614, -140, -140, -140, -140, 528, -203, 119, 143, 120, - 121, -158, -204, -209, -211, 106, 162, 145, 159, -241, - -146, -150, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, -146, -146, -307, -289, 90, 177, -154, - -153, 105, -401, -154, 502, 88, -216, 221, -140, -140, - -378, -140, -289, -126, -128, -126, -140, -218, -219, 147, - -213, -140, -407, -407, 96, 105, 168, -122, 25, 39, - -122, -122, -122, -122, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -122, -289, -289, -115, -114, 425, - 426, 427, 428, 430, 431, 432, 435, 436, 440, 441, - 424, 442, 429, 434, 437, 438, 439, 433, 335, -140, - -140, -140, -140, -140, -140, -83, -140, 130, 131, 132, - -205, -140, -146, -140, -140, -140, -407, -140, -140, -140, - -206, -205, -377, -376, -375, -140, -140, -140, -140, -140, + -345, -345, -345, -345, -345, -345, -345, 237, -382, -132, + 401, 301, 311, 82, -54, 283, -37, -186, -284, 238, + 239, -382, 270, -186, 221, -186, -278, 159, 16, -278, + -275, 390, 388, 375, 380, -278, -278, -278, -278, 284, + 373, -340, 238, 36, 249, 390, 284, 373, 284, 285, + 284, 285, 383, 393, 284, -300, 15, 162, 416, 378, + 382, 277, 237, 278, 239, 392, 285, -300, 90, -279, + 159, 390, 280, -278, -278, -306, -407, -291, -289, -287, + 230, 24, 142, 26, 28, 145, 177, 130, 20, 146, + 38, 232, 341, 248, 176, 244, 446, 225, 73, 515, + 417, 419, 415, 422, 448, 449, 416, 376, 32, 14, + 517, 29, 258, 25, 39, 170, 227, 149, 518, 261, + 27, 259, 118, 121, 520, 23, 76, 253, 15, 246, + 41, 17, 521, 522, 18, 242, 241, 162, 238, 71, + 12, 220, 30, 158, 67, 523, 137, 524, 525, 526, + 527, 131, 69, 159, 21, 653, 420, 421, 34, 614, + 503, 272, 172, 74, 60, 615, 143, 418, 528, 529, + 119, 530, 122, 77, 620, 139, 19, 72, 43, 531, + 273, 532, 243, 654, 533, 408, 534, 160, 228, 445, + 70, 161, 627, 535, 628, 236, 389, 9, 450, 33, + 257, 245, 129, 68, 536, 237, 148, 451, 452, 240, + 132, 120, 8, 136, 35, 13, 75, 78, 423, 424, + 425, 58, 128, 507, 147, 16, 537, 409, 141, -378, + 616, -306, -306, 33, 92, 240, -289, -186, -82, 608, + 229, -130, 390, -118, 177, 634, 617, 618, 619, 616, + 387, 624, 622, 620, 284, 621, 88, 139, 141, 142, + 4, -140, 158, -196, 151, 152, 153, 154, 155, 156, + 157, 162, 143, 145, 159, -241, 140, 163, 164, 165, + 166, 167, 168, 169, 171, 170, 172, 173, 160, 161, + 176, 223, 224, -150, -150, -150, -150, -211, -217, -216, + -407, -213, -378, -288, -295, -407, -407, -150, -273, -407, + -407, -150, -407, -407, -407, -220, -140, -407, -407, -411, + -407, -411, -411, -324, -407, -324, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, 221, -407, -407, -407, -407, -407, -324, -324, + -324, -324, -324, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, 103, 99, 102, + 94, -215, 105, 90, 90, 90, 90, -8, -9, -205, + -407, -305, -392, -393, -189, -186, -407, 301, -289, -289, + 270, -230, -12, -8, -225, -231, -227, -8, -76, -116, + -129, 64, 65, -131, 25, 39, 68, 66, 24, -408, + 89, -408, -248, -408, 88, -36, -251, 87, 62, 44, + 90, 90, 88, 22, -226, -228, -140, 15, -293, 4, + -292, 26, -289, 90, 221, 15, -187, 30, -186, -274, + -274, 88, 315, 91, -269, -268, 406, 408, 151, -294, + -289, 90, 32, 89, 88, -186, -313, -316, -318, -317, + -319, -314, -315, 338, 339, 177, 342, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 355, 33, 260, 334, + 335, 336, 337, 356, 357, 358, 359, 361, 362, 363, + 364, 321, 340, 505, 322, 323, 324, 325, 326, 327, + 329, 330, 331, 332, 333, -379, -378, 87, 89, 88, + -320, 87, -140, -132, 237, -378, 238, 238, 238, -76, + 445, -345, -345, -345, 268, 20, -44, -41, -371, 19, + -40, -41, 230, 123, 124, 227, 87, -334, 87, -343, + -379, -378, 87, 137, 243, 136, -342, -339, -342, -343, + -378, -213, -378, 137, 137, -378, -378, -260, -289, -260, + -260, 24, -260, 24, -260, 24, 96, -289, -260, 24, + -260, 24, -260, 24, -260, 24, -260, 24, 32, 79, + 80, 81, 32, 83, 84, 85, -213, -378, -378, -213, + -334, -213, -186, -378, -264, 96, 96, 96, -345, -345, + 96, 90, 90, 90, -345, -345, 96, 90, -297, -295, + 90, 90, -384, 254, 298, 300, 96, 96, 96, 96, + 32, 90, -385, 32, 641, 640, 642, 643, 644, 90, + 96, 32, 96, 32, 96, -289, 87, -186, -138, 288, + 225, 227, 230, 77, 90, 304, 305, 302, 307, 308, + 126, 125, -404, 312, 151, 45, 88, 240, 237, -378, + -280, 242, -280, -289, -296, -295, -287, 90, -140, -341, + 15, 162, -300, -300, -278, -186, -341, -300, -278, -186, + -278, -278, -278, -278, -300, -300, -300, -278, -295, -295, + -186, -186, -186, -186, -186, -186, -186, -306, -279, -278, + 616, 90, -272, 15, 77, -306, -306, -304, 318, -78, + -289, 90, -15, -11, -22, -21, -23, 151, 88, 507, + -179, -186, 616, 616, 616, 616, 616, 616, -140, -140, + -140, -140, 530, -203, 119, 143, 120, 121, -158, -204, + -209, -211, 106, 162, 145, 159, -241, -146, -150, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -307, -289, 90, 177, -154, -153, 105, -401, + -154, 504, 88, -216, 221, -140, -140, -378, -140, -289, + -126, -128, -126, -140, -218, -219, 147, -213, -140, -408, + -408, 96, 105, 168, -122, 25, 39, -122, -122, -122, + -122, -140, -140, -140, -140, -140, -140, -140, -140, -140, + -140, -122, -289, -289, -115, -114, 427, 428, 429, 430, + 432, 433, 434, 437, 438, 442, 443, 426, 444, 431, + 436, 439, 440, 441, 435, 337, -140, -140, -140, -140, + -140, -140, -83, -140, 130, 131, 132, -205, -140, -146, + -140, -140, -140, -408, -140, -140, -140, -206, -205, -377, + -376, -375, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -140, -407, -140, - -160, -144, 96, -256, 105, 92, -140, -140, -127, -126, - -291, -296, -287, -288, -126, -127, -127, -126, -126, -140, - -140, -140, -140, -140, -140, -140, -140, -407, -140, -140, - -140, -140, -140, -248, -407, -205, 88, -394, 406, 407, - 612, -298, 273, -297, 26, -206, 90, 15, -258, 78, - -289, -230, -230, 64, 65, 60, -126, -131, -407, -35, - 26, -250, -289, 63, 90, -325, -264, 363, 364, 177, - -140, -140, 88, -229, 28, 29, -186, -292, 168, -296, - -186, -259, 273, -186, -164, -166, -167, -168, -189, -212, - -406, -169, 524, 521, 15, -179, -180, -188, -295, -267, - -308, -269, 88, 405, 407, 408, 77, 122, -140, -326, - 176, -353, -352, -351, -334, -336, -337, -338, 89, -326, - -330, 369, 368, -320, -320, -320, -320, -320, -325, -325, - -325, -325, 87, 87, -320, -320, -320, -320, -328, 87, - -328, -328, -329, 87, -329, -364, -140, -361, -360, -358, - -359, 247, 101, 596, 552, 505, 545, 586, 78, -356, - -229, 96, -407, -138, -281, 242, -362, -359, -378, -378, - -378, -281, 91, 90, 91, 90, 91, 90, -107, -58, - -1, 651, 652, 653, 88, 20, -335, -334, -57, 298, - -367, -368, 273, -363, -357, -343, 137, -342, -343, -343, - -378, 88, 30, 127, 127, 127, 127, 505, 227, 33, - -282, 544, 143, 596, 552, -334, -57, 240, 240, -307, - -307, -307, 90, 90, -277, 647, -179, -134, 290, 151, - 279, 279, 237, 237, 292, -186, 303, 306, 304, 305, - 302, 307, 308, 24, 24, 24, 24, 24, 291, 293, - 295, 281, -186, -186, -280, 77, -181, -186, 27, -295, - -186, -278, -278, -186, -278, -278, -186, -289, 350, 607, - 608, 610, 609, -118, 406, 88, 505, 23, -119, 23, - -406, 119, 120, 121, -204, -146, -150, -146, 142, 261, - -406, -213, -407, -291, 26, 88, 78, -407, 88, 88, - -407, -407, 88, 15, -221, -219, 149, -140, -407, 88, - -407, -407, -407, -205, -140, -140, -140, -140, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -205, 88, - 88, 15, -311, 26, -407, -407, -407, -407, -407, -220, - -407, 15, -407, 78, 88, 162, 88, -407, -407, -407, - 88, 88, -407, -407, 88, 88, -407, 88, 88, 88, - -407, 88, 88, 88, 88, -407, -407, -407, -407, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, -407, - -90, 529, -407, -407, 88, -407, 88, -407, -406, 221, - -407, -407, -407, -407, -407, 88, 88, 88, 88, 88, - 88, -407, -407, -407, 88, 88, -407, 88, -407, 88, - -407, -393, 611, 407, -193, -192, -190, 75, 241, 76, - -406, -297, -407, -154, -256, -257, -256, -198, -289, 96, - 105, -232, -163, -165, 15, -131, -211, 89, 88, -325, - -236, -242, -275, -289, 90, 177, -327, 177, -327, 363, - 364, -228, 221, -194, 16, -197, 33, 58, -11, -406, - -406, 33, 88, -182, -184, -183, -185, 67, 71, 73, - 68, 69, 70, 74, -302, 26, -164, -9, -8, -406, - -406, -406, -186, -179, -408, 15, 78, -408, 88, 221, - -268, -270, 409, 406, 412, -378, 90, -106, 88, -351, - -338, -233, -135, 41, -331, 370, -325, 512, -325, -333, - 90, -333, 96, 96, 89, -47, -42, -43, 34, 82, - -358, -345, 90, 40, -345, -345, -289, 89, -229, -134, - -186, 143, 77, -362, -362, -362, -295, -2, 650, 656, - 137, 87, 373, 19, -250, 88, 89, -214, 299, 89, - -108, -289, 89, 87, -343, -343, -289, -406, 237, 32, - 32, 596, 552, 544, -57, -214, -213, -378, -326, 649, - 648, 89, 239, 297, -139, 420, -136, 90, 91, -186, - -186, -186, -186, -186, 230, 227, 396, -402, 309, -402, - 282, 240, -179, -186, 88, -81, 256, 251, -300, -300, - 34, -186, 406, 623, 621, -140, 142, 261, -158, -150, - -146, -309, 177, 336, 260, 334, 330, 350, 341, 368, - 332, 369, 329, 328, 327, -309, -307, -205, -128, -140, - -140, 150, -140, 148, -140, -407, -407, -407, -407, -407, - -225, -140, -140, -140, -407, 177, 336, 15, -140, -307, - -140, -140, -140, -140, -140, -375, -140, -205, -140, -205, - -140, -140, -140, -140, -140, -376, -376, -376, -376, -376, - -205, -205, -205, -205, -406, -289, -93, -92, -91, 579, - 241, -90, -160, -93, -160, -127, -291, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -190, -339, -339, - -339, -260, 88, -271, 23, 15, 58, 58, -163, -194, - -164, -131, -289, -239, 606, -245, 47, -243, -244, 48, - -240, 49, 57, -327, -327, 168, -230, -140, -261, 77, - -262, -266, -213, -208, -210, -209, -406, -249, -407, -289, - -260, -262, -166, -167, -167, -166, -167, 67, 67, 67, - 72, 67, 72, 67, -183, -295, -407, -407, -9, -9, - -140, -298, 78, -164, -164, -188, -295, 168, 406, 410, - 411, -351, -400, 119, 143, 32, 77, 366, 101, -398, - 176, 541, 591, 596, 552, 545, 586, -399, 243, 136, - 137, 255, 26, 42, 89, 88, 89, 88, 89, 88, - -283, -282, -43, -42, -345, -345, 96, -378, 90, 90, - 239, 27, -186, 77, 77, 77, -109, 654, 96, 87, - -3, 82, -140, 87, 20, -334, -213, -369, -321, -370, - -322, -323, -5, -6, -346, -112, 58, 101, -61, 45, - 238, 634, 635, 127, -406, 647, -361, -250, -365, -367, - -186, -143, -406, -142, -144, -151, 166, 167, 260, 332, - 333, -214, -186, -133, 288, 296, 87, -137, 92, -381, - 78, 279, 366, 279, 90, -403, 310, 90, -403, -186, - -81, -47, -186, -278, -278, 34, -378, -407, -158, -150, - -121, 162, 505, -312, 511, -320, -320, -320, -329, -320, - 324, -320, 324, -320, -407, -407, -407, 88, -407, 23, - -407, -140, 88, -117, 448, 88, 88, -407, 87, 87, - -140, -407, -407, -407, 88, -407, -407, -407, -407, -407, - 88, -407, -407, -407, 88, -310, 597, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -89, -290, -289, - -90, 561, 561, -407, -90, -222, 88, -407, -407, 88, - -407, 88, 88, -407, 88, -407, 88, -407, -407, -407, - -407, 88, -191, 23, -191, -191, -407, -256, -186, -194, - -223, 17, -236, 52, 342, -247, -246, 56, 48, -244, - 20, 50, 20, 31, -261, 88, 151, 88, -407, -407, - 88, 58, 221, -407, -194, -177, -176, 77, 78, -178, - 77, -176, 67, 67, -251, -407, -407, 88, -259, -164, - -194, -194, 221, 119, -406, -145, -157, -143, 13, 90, - 90, -378, -397, 638, 639, 32, 96, -345, -345, 137, - 137, -186, 87, -325, 90, -325, 96, 96, 32, 83, - 84, 85, 32, 79, 80, 81, -186, -186, -186, -186, - -366, 87, 20, -140, 87, 151, 89, -250, -250, 275, - 162, -345, 632, 281, 281, -345, -345, -345, -111, -110, - 654, 89, -407, 88, -332, 505, 508, -140, -152, -152, - -251, 89, -374, 505, -380, -289, -289, -289, -289, 96, - 98, -407, 503, 74, 506, -407, -325, -140, -140, -140, - -230, 90, -140, -140, 96, 96, -407, -140, -205, -140, - -407, -174, -173, -175, 615, 119, 32, -309, -407, -207, - 273, -96, -95, -94, 15, -407, -140, -140, -140, -140, - -140, -140, -140, -406, 67, 19, 17, -406, -406, -298, - -223, -224, 18, 20, -237, 54, -235, 53, -235, -246, - 20, 20, 90, 20, 90, 137, -266, -140, -210, 58, - -11, -289, -208, -289, -225, -140, 87, -140, -154, -194, - -194, -140, -200, 472, 474, 475, 476, 473, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 477, 451, - 108, 110, 109, 452, 453, 454, 336, 499, 500, 494, - 497, 498, 496, 495, 351, 352, 455, 456, 457, 111, - 112, 113, 114, 115, 116, 117, 458, 461, 459, 462, - 463, 464, 469, 470, 465, 466, 467, 468, 471, 488, - 489, 490, 491, 492, 493, 598, 599, 600, 601, 602, - 603, 604, 605, 90, 90, 87, -140, 89, 89, -251, - -365, -58, 89, -252, -250, 96, 89, 276, -209, -406, - 90, -345, -345, -345, 96, 96, -297, -407, 88, -289, - -399, -367, 509, 509, -407, 26, -373, -372, -291, 87, - 78, 63, 504, 507, -407, -407, 88, -407, -407, -407, - 89, 89, -407, -407, -407, 88, -407, -173, -175, -407, - 77, -154, -225, 20, -93, 298, 300, -93, -407, 88, - -407, -407, 88, -407, 88, -407, -407, -253, -407, -289, - 243, 20, 20, -253, -253, -193, -224, -103, -102, -101, - 535, -140, -205, -238, 55, 77, 122, 90, 90, 90, - 13, -208, 221, -230, -250, -171, 373, -225, -407, -250, - 89, 26, 89, 656, 137, 89, -209, -120, -406, 272, - -297, 90, 90, -110, -113, -11, 88, 151, -250, -186, - 63, -140, -205, -407, 77, 516, 615, -88, -87, -84, - 626, 652, -205, -90, -90, -140, -140, -140, 88, -407, - -407, -407, -103, 88, -100, -99, -289, 77, 122, -262, - -289, 89, -407, -406, -230, 89, -234, -11, 87, -3, - 272, -321, -370, -322, -323, -5, -6, -346, -79, 505, - -372, -350, -291, 90, 96, 89, 505, -407, -407, -86, - 145, 624, 594, -141, -152, -149, 220, -407, 88, -407, - 88, -407, 88, -289, 243, -101, 88, 26, -298, -172, - -170, -289, 558, -390, -389, 501, -400, -396, 119, 143, - 101, -398, 596, 552, 128, 129, -79, -140, 87, -407, - -80, 287, 611, -381, 506, -86, 625, 572, 547, 572, - 547, -140, -140, -140, -99, -406, -407, 88, 23, -313, - -60, 569, -387, -388, 77, -391, 379, 568, 589, 119, - 90, 89, -250, 248, -374, 507, 142, -407, 88, -407, - 88, -407, -89, -170, 565, -326, -154, -388, 77, -387, - 77, 14, 13, -4, 655, 89, 289, -86, -140, -140, - -407, -59, 27, -171, -386, 256, 251, 254, 33, -386, - 96, -4, -407, -407, 569, 250, 32, 119, -154, -174, - -173, -173, + -140, -140, -140, -140, -140, -408, -140, -160, -144, 96, + -256, 105, 92, -140, -140, -127, -126, -291, -296, -287, + -288, -126, -127, -127, -126, -126, -140, -140, -140, -140, + -140, -140, -140, -140, -408, -140, -140, -140, -140, -140, + -248, -408, -205, 88, -394, 408, 409, 614, -298, 273, + -297, 26, -206, 90, 15, -258, 78, -289, -230, -230, + 64, 65, 60, -126, -131, -408, -35, 26, -250, -289, + 63, 90, -325, -264, 365, 366, 177, -140, -140, 88, + -229, 28, 29, -186, -292, 168, -296, -186, -259, 273, + -186, -164, -166, -167, -168, -189, -212, -407, -169, 526, + 523, 15, -179, -180, -188, -295, -267, -308, -269, 88, + 407, 409, 410, 77, 122, -140, -326, 176, -353, -352, + -351, -334, -336, -337, -338, 89, -326, -330, 371, 370, + -320, -320, -320, -320, -320, -325, -325, -325, -325, 87, + 87, -320, -320, -320, -320, -328, 87, -328, -328, -329, + 87, -329, -364, -140, -361, -360, -358, -359, 247, 101, + 598, 554, 507, 547, 588, 78, -356, -229, 96, -408, + -138, -281, 242, -362, -359, -378, -378, -378, -281, 91, + 90, 91, 90, 91, 90, -107, -58, -1, 653, 654, + 655, 88, 20, -335, -334, -57, 298, -367, -368, 273, + -363, -357, -343, 137, -342, -343, -343, -378, 88, 30, + 127, 127, 127, 127, 507, 227, 33, -282, 546, 143, + 598, 554, -334, -57, 240, 240, -307, -307, -307, 90, + 90, -277, 649, -179, -134, 290, 151, 279, 279, 237, + 237, 292, -186, 303, 306, 304, 305, 302, 307, 308, + 24, 24, 24, 24, 24, 90, 291, 293, 295, 281, + -186, -186, -280, 77, -181, -186, 27, -295, -186, -278, + -278, -186, -278, -278, -186, -289, 352, 609, 610, 612, + 611, -118, 408, 88, 507, 23, -119, 23, -407, 119, + 120, 121, -204, -146, -150, -146, 142, 261, -407, -213, + -408, -291, 26, 88, 78, -408, 88, 88, -408, -408, + 88, 15, -221, -219, 149, -140, -408, 88, -408, -408, + -408, -205, -140, -140, -140, -140, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -205, 88, 88, 15, + -311, 26, -408, -408, -408, -408, -408, -220, -408, 15, + -408, 78, 88, 162, 88, -408, -408, -408, 88, 88, + -408, -408, 88, 88, -408, 88, 88, 88, -408, 88, + 88, 88, 88, -408, -408, -408, -408, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, -408, -90, 531, + -408, -408, 88, -408, 88, -408, -407, 221, -408, -408, + -408, -408, -408, 88, 88, 88, 88, 88, 88, -408, + -408, -408, 88, 88, -408, 88, -408, 88, -408, -393, + 613, 409, -193, -192, -190, 75, 241, 76, -407, -297, + -408, -154, -256, -257, -256, -198, -289, 96, 105, -232, + -163, -165, 15, -131, -211, 89, 88, -325, -236, -242, + -275, -289, 90, 177, -327, 177, -327, 365, 366, -228, + 221, -194, 16, -197, 33, 58, -11, -407, -407, 33, + 88, -182, -184, -183, -185, 67, 71, 73, 68, 69, + 70, 74, -302, 26, -164, -9, -8, -407, -407, -407, + -186, -179, -409, 15, 78, -409, 88, 221, -268, -270, + 411, 408, 414, -378, 90, -106, 88, -351, -338, -233, + -135, 41, -331, 372, -325, 514, -325, -333, 90, -333, + 96, 96, 89, -47, -42, -43, 34, 82, -358, -345, + 90, 40, -345, -345, -289, 89, -229, -134, -186, 143, + 77, -362, -362, -362, -295, -2, 652, 658, 137, 87, + 375, 19, -250, 88, 89, -214, 299, 89, -108, -289, + 89, 87, -343, -343, -289, -407, 237, 32, 32, 598, + 554, 546, -57, -214, -213, -378, -326, 651, 650, 89, + 239, 297, -139, 422, -136, 90, 91, -186, -186, -186, + -186, -186, 230, 227, 398, -402, 309, -402, 282, 240, + -179, -186, 88, -81, 256, 251, -300, -300, 34, -186, + 408, 625, 623, -140, 142, 261, -158, -150, -146, -309, + 177, 338, 260, 336, 332, 352, 343, 370, 334, 371, + 331, 330, 329, -309, -307, -205, -128, -140, -140, 150, + -140, 148, -140, -408, -408, -408, -408, -408, -225, -140, + -140, -140, -408, 177, 338, 15, -140, -307, -140, -140, + -140, -140, -140, -375, -140, -205, -140, -205, -140, -140, + -140, -140, -140, -376, -376, -376, -376, -376, -205, -205, + -205, -205, -407, -289, -93, -92, -91, 581, 241, -90, + -160, -93, -160, -127, -291, -140, -140, -140, -140, -140, + -140, -140, -140, -140, -140, -190, -339, -339, -339, -260, + 88, -271, 23, 15, 58, 58, -163, -194, -164, -131, + -289, -239, 608, -245, 47, -243, -244, 48, -240, 49, + 57, -327, -327, 168, -230, -140, -261, 77, -262, -266, + -213, -208, -210, -209, -407, -249, -408, -289, -260, -262, + -166, -167, -167, -166, -167, 67, 67, 67, 72, 67, + 72, 67, -183, -295, -408, -408, -9, -9, -140, -298, + 78, -164, -164, -188, -295, 168, 408, 412, 413, -351, + -400, 119, 143, 32, 77, 368, 101, -398, 176, 543, + 593, 598, 554, 547, 588, -399, 243, 136, 137, 255, + 26, 42, 89, 88, 89, 88, 89, 88, -283, -282, + -43, -42, -345, -345, 96, -378, 90, 90, 239, 27, + -186, 77, 77, 77, -109, 656, 96, 87, -3, 82, + -140, 87, 20, -334, -213, -369, -321, -370, -322, -323, + -5, -6, -346, -112, 58, 101, -61, 45, 238, 636, + 637, 127, -407, 649, -361, -250, -365, -367, -186, -143, + -407, -142, -144, -151, 166, 167, 260, 334, 335, -214, + -186, -133, 288, 296, 87, -137, 92, -381, 78, 279, + 368, 279, 90, -403, 310, 90, -403, -186, -81, -47, + -186, -278, -278, 34, -378, -408, -158, -150, -121, 162, + 507, -312, 513, -320, -320, -320, -329, -320, 326, -320, + 326, -320, -408, -408, -408, 88, -408, 23, -408, -140, + 88, -117, 450, 88, 88, -408, 87, 87, -140, -408, + -408, -408, 88, -408, -408, -408, -408, -408, 88, -408, + -408, -408, 88, -310, 599, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -89, -290, -289, -90, 563, + 563, -408, -90, -222, 88, -408, -408, 88, -408, 88, + 88, -408, 88, -408, 88, -408, -408, -408, -408, 88, + -191, 23, -191, -191, -408, -256, -186, -194, -223, 17, + -236, 52, 344, -247, -246, 56, 48, -244, 20, 50, + 20, 31, -261, 88, 151, 88, -408, -408, 88, 58, + 221, -408, -194, -177, -176, 77, 78, -178, 77, -176, + 67, 67, -251, -408, -408, 88, -259, -164, -194, -194, + 221, 119, -407, -145, -157, -143, 13, 90, 90, -378, + -397, 640, 641, 32, 96, -345, -345, 137, 137, -186, + 87, -325, 90, -325, 96, 96, 32, 83, 84, 85, + 32, 79, 80, 81, -186, -186, -186, -186, -366, 87, + 20, -140, 87, 151, 89, -250, -250, 275, 162, -345, + 634, 281, 281, -345, -345, -345, -111, -110, 656, 89, + -408, 88, -332, 507, 510, -140, -152, -152, -251, 89, + -374, 507, -380, -289, -289, -289, -289, 96, 98, -408, + 505, 74, 508, -408, -325, -140, -140, -140, -230, 90, + -140, -140, 96, 96, -408, -140, -205, -140, -408, -174, + -173, -175, 617, 119, 32, -309, -408, -207, 273, -96, + -95, -94, 15, -408, -140, -140, -140, -140, -140, -140, + -140, -407, 67, 19, 17, -407, -407, -298, -223, -224, + 18, 20, -237, 54, -235, 53, -235, -246, 20, 20, + 90, 20, 90, 137, -266, -140, -210, 58, -11, -289, + -208, -289, -225, -140, 87, -140, -154, -194, -194, -140, + -200, 474, 476, 477, 478, 475, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 479, 453, 108, 110, + 109, 454, 455, 456, 338, 501, 502, 496, 499, 500, + 498, 497, 353, 354, 457, 458, 459, 111, 112, 113, + 114, 115, 116, 117, 460, 463, 461, 464, 465, 466, + 471, 472, 467, 468, 469, 470, 473, 490, 491, 492, + 493, 494, 495, 600, 601, 602, 603, 604, 605, 606, + 607, 90, 90, 87, -140, 89, 89, -251, -365, -58, + 89, -252, -250, 96, 89, 276, -209, -407, 90, -345, + -345, -345, 96, 96, -297, -408, 88, -289, -399, -367, + 511, 511, -408, 26, -373, -372, -291, 87, 78, 63, + 506, 509, -408, -408, 88, -408, -408, -408, 89, 89, + -408, -408, -408, 88, -408, -173, -175, -408, 77, -154, + -225, 20, -93, 298, 300, -93, -408, 88, -408, -408, + 88, -408, 88, -408, -408, -253, -408, -289, 243, 20, + 20, -253, -253, -193, -224, -103, -102, -101, 537, -140, + -205, -238, 55, 77, 122, 90, 90, 90, 13, -208, + 221, -230, -250, -171, 375, -225, -408, -250, 89, 26, + 89, 658, 137, 89, -209, -120, -407, 272, -297, 90, + 90, -110, -113, -11, 88, 151, -250, -186, 63, -140, + -205, -408, 77, 518, 617, -88, -87, -84, 628, 654, + -205, -90, -90, -140, -140, -140, 88, -408, -408, -408, + -103, 88, -100, -99, -289, 77, 122, -262, -289, 89, + -408, -407, -230, 89, -234, -11, 87, -3, 272, -321, + -370, -322, -323, -5, -6, -346, -79, 507, -372, -350, + -291, 90, 96, 89, 507, -408, -408, -86, 145, 626, + 596, -141, -152, -149, 220, -408, 88, -408, 88, -408, + 88, -289, 243, -101, 88, 26, -298, -172, -170, -289, + 560, -390, -389, 503, -400, -396, 119, 143, 101, -398, + 598, 554, 128, 129, -79, -140, 87, -408, -80, 287, + 613, -381, 508, -86, 627, 574, 549, 574, 549, -140, + -140, -140, -99, -407, -408, 88, 23, -313, -60, 571, + -387, -388, 77, -391, 381, 570, 591, 119, 90, 89, + -250, 248, -374, 509, 142, -408, 88, -408, 88, -408, + -89, -170, 567, -326, -154, -388, 77, -387, 77, 14, + 13, -4, 657, 89, 289, -86, -140, -140, -408, -59, + 27, -171, -386, 256, 251, 254, 33, -386, 96, -4, + -408, -408, 571, 250, 32, 119, -154, -174, -173, -173, } var yyDef = [...]int{ - 844, -2, -2, 846, 2, 4, 5, 6, 7, 8, + 849, -2, -2, 851, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 69, 71, - 72, 844, 844, 844, 0, 844, 0, 0, 844, -2, - -2, 844, 1461, 0, 844, 0, 0, -2, 771, 777, - 0, 779, -2, 0, 0, 844, 2008, 2008, 839, 0, - 0, 0, 0, 0, 844, 844, 844, 844, 1318, 49, - 844, 0, 84, 85, 795, 796, 797, 64, 0, 2006, - 845, 1, 3, 70, 74, 0, 0, 0, 57, 1327, - 0, 77, 0, 0, 848, 0, 0, 1444, 844, 844, + 72, 849, 849, 849, 0, 849, 0, 0, 849, -2, + -2, 849, 1466, 0, 849, 0, 0, -2, 776, 782, + 0, 784, -2, 0, 0, 849, 2015, 2015, 844, 0, + 0, 0, 0, 0, 849, 849, 849, 849, 1323, 49, + 849, 0, 84, 85, 800, 801, 802, 64, 0, 2013, + 850, 1, 3, 70, 74, 0, 0, 0, 57, 1332, + 0, 77, 0, 0, 853, 0, 0, 1449, 849, 849, 0, 116, 117, 0, 0, 0, -2, 120, -2, 149, - 150, 151, 0, 156, 585, 508, 560, 506, 545, -2, + 150, 151, 0, 156, 590, 510, 562, 508, 547, -2, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 511, 384, 384, 0, 0, -2, 494, - 494, 494, 1446, 0, 0, 0, 542, 446, 384, 384, + 0, 0, 0, 513, 384, 384, 0, 0, -2, 494, + 494, 494, 1451, 0, 0, 0, 544, 446, 384, 384, 384, 0, 384, 384, 384, 384, 0, 0, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 1345, 155, 1462, 1459, 1460, - 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, - 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, - 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, - 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, - 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, - 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, - 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, - 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, - 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, - 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, - 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, - 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, - 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, - 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, - 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, - 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, - 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, - 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, - 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, - 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, - 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, - 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, - 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, - 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, - 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, - 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, - 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, - 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, - 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, - 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, - 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, - 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, - 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, - 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, - 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, - 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 0, 1438, 0, 698, 947, 0, 760, 760, - 0, 760, 760, 760, 760, 0, 0, 0, 710, 0, - 0, 0, 0, 757, 0, 726, 727, 0, 757, 0, - 733, 763, 0, 738, 760, 760, 741, 2009, 0, 2009, - 2009, 1429, 0, 754, 752, 766, 767, 39, 770, 773, - 774, 775, 776, 778, 0, 783, 786, 1455, 1456, 0, - 788, 807, 808, 0, 840, 841, 44, 1095, 0, 969, - 974, 985, 1000, 1001, 1002, 1003, 1004, 1006, 1007, 1008, - 0, 0, 0, 0, 1013, 1014, 0, 0, 0, 0, - 0, 1076, 1022, 0, 0, 0, 0, 1291, 0, 0, - 1252, 1252, 1110, 1252, 1254, 1254, 1662, 1798, 1806, 1923, - 1625, 1630, 1631, 1632, 1916, 1917, 1918, 1919, 1957, 1958, - 1962, 1722, 0, 0, 0, 2005, 1759, 1767, 1768, 1792, - 1889, 1943, 1642, 1787, 1855, 1719, 1741, 1742, 1871, 1872, - 1763, 1764, 1745, 1757, 1760, 1748, 1749, 1751, 1753, 1758, - 1765, 1771, 1750, 1770, 1769, 0, 1746, 1747, 1752, 1762, - 1766, 1754, 1755, 1756, 1761, 1772, 0, 0, 0, 0, - 0, 1191, 1192, 1193, 1194, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 1304, 1305, 42, 43, 1094, 1416, - 1254, 1254, 1254, 1254, 1254, 1036, 1037, 1038, 1039, 1040, - 1064, 1065, 1071, 1072, 1866, 1867, 1868, 1869, 1703, 1952, - 1711, 1712, 1850, 1851, 1724, 1725, 1980, 1981, -2, -2, - -2, 221, 222, 223, 224, 225, 226, 227, 228, 0, - 1666, 1934, 1935, 217, 0, 0, 285, 286, 282, 283, - 284, 1078, 1079, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 2008, 0, 817, 0, 0, - 0, 0, 0, 1327, 0, 1319, 1318, 62, 0, 844, - -2, 0, 0, 0, 0, 46, 0, 51, 904, 847, - 76, 75, 1367, 0, 0, 0, 58, 1328, 66, 68, - 1329, 0, 849, 850, 0, 880, 884, 0, 0, 0, - 1445, 1444, 1444, 101, 0, 0, 1420, 113, 114, 115, - 0, 0, 1426, 1427, 1431, 1432, 0, 0, 167, 168, - 0, 40, 411, 0, 163, 0, 404, 345, 0, 1345, - 0, 0, 0, 0, 0, 844, 0, 1439, 144, 145, - 152, 153, 154, 384, 384, 384, 557, 0, 0, 155, - 155, 515, 516, 517, 0, 0, -2, 409, 0, 495, - 0, 0, 398, 398, 402, 400, 401, 0, 0, 0, - 0, 0, 0, 0, 0, 534, 0, 535, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 646, 0, 385, - 0, 555, 556, 447, 0, 0, 0, 0, 0, 0, - 0, 0, 1447, 1448, 0, 532, 533, 0, 0, 0, - 384, 384, 0, 0, 0, 0, 384, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 143, 1358, 0, 0, - 0, -2, 0, 690, 0, 0, 0, 1440, 1440, 0, - 697, 0, 699, 700, 0, 0, 701, 0, 757, 757, - 755, 756, 703, 704, 705, 706, 760, 0, 0, 393, - 394, 395, 757, 760, 0, 760, 760, 760, 760, 757, - 757, 757, 760, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2009, 763, 760, 0, 734, 0, 735, 736, - 739, 740, 742, 2010, 2011, 1457, 1458, 1465, 1466, 1467, - 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, - 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, - 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, - 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, - 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, - 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, - 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, - 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, - 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, - 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, - 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, - 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, - 1608, 1609, 1610, 1611, 1612, 1613, 2009, 2009, 746, 750, - 1430, 772, 784, 787, 802, 48, 1710, 794, 819, 820, - 825, 0, 0, 0, 0, 831, 832, 833, 0, 0, - 836, 837, 838, 0, 0, 0, 0, 0, 967, 0, - 0, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 986, 987, 0, 0, 0, - 1009, 1010, 1011, 1012, 1015, 0, 1027, 0, 1029, 1300, - -2, 0, 0, 0, 1020, 1021, 0, 0, 0, 0, - 0, 0, 0, 1292, 0, 0, 1108, 0, 1109, 1111, - 1112, 0, 1113, 854, 854, 854, 854, 854, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 854, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1450, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 864, 0, - 0, 864, 864, 0, 0, 210, 211, 212, 213, 214, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, - 287, 235, 236, 237, 1094, 0, 0, 0, 45, 809, - 810, 0, 930, 1450, 0, 0, 860, 0, 56, 65, - 67, 1327, 60, 1327, 0, 866, 0, 0, -2, -2, - 867, 873, 874, 875, 876, 877, 53, 2007, 54, 0, - 73, 0, 47, 0, 0, 0, 0, 357, 1370, 0, - 0, 1320, 1321, 1324, 0, 881, 1804, 885, 0, 887, - 888, 0, 0, 99, 0, 946, 0, 0, 0, 0, - 1428, 103, 104, 0, 0, 0, 368, 1433, 1434, 1435, - -2, 391, 0, 368, 352, 295, 296, 297, 345, 299, - 345, 345, 345, 345, 357, 357, 357, 357, 328, 329, - 330, 331, 332, 0, 0, 314, 345, 345, 345, 345, - 335, 336, 337, 338, 339, 340, 341, 342, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 347, 347, 347, - 349, 349, 0, 41, 0, 372, 0, 1324, 0, 0, - 1358, 1442, 1452, 0, 0, 0, 1442, 122, 0, 0, - 0, 558, 596, 509, 546, 559, 0, 512, 513, -2, - 0, 0, 494, 0, 496, 0, 392, 0, -2, 0, - 402, 0, 398, 402, 399, 402, 390, 403, 536, 537, - 538, 0, 540, 541, 626, 916, 0, 0, 0, 0, - 0, 632, 633, 634, 0, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 547, 548, 549, 550, 551, - 552, 553, 554, 0, 0, 0, 0, 496, 0, 543, - 0, 0, 448, 449, 450, 0, 0, 453, 454, 455, - 456, 0, 0, 459, 460, 461, 933, 934, 462, 463, - 488, 489, 490, 464, 465, 466, 467, 468, 469, 470, - 482, 483, 484, 485, 486, 487, 471, 472, 473, 474, - 475, 476, 479, 0, 137, 1349, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1440, 0, 0, 0, 0, 863, 948, 1463, 1464, - 761, 762, 0, 396, 397, 760, 760, 707, 747, 0, - 760, 711, 748, 712, 714, 713, 715, 728, 729, 760, - 718, 758, 759, 719, 720, 721, 722, 723, 724, 725, - 743, 730, 731, 732, 764, 0, 768, 769, 744, 745, - 0, 785, 805, 803, 804, 806, 798, 799, 800, 801, - 0, 0, 0, 822, 95, 827, 828, 829, 830, 842, - 835, 1096, 964, 965, 966, 0, 968, 971, 0, 1080, - 1082, 973, 975, 1091, 1092, 1093, 0, 0, 0, 0, - 0, 979, 983, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1005, 1268, 1269, 1270, 1024, - 288, 289, 0, 1025, 0, 0, 0, 0, 0, 0, - 0, 1095, 1026, 0, 878, 0, 0, 1298, 1295, 0, - 0, 0, 1253, 1255, 0, 0, 0, 0, 855, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1231, 1232, - 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1271, - 0, 0, 0, 0, 0, 1291, 0, 1031, 1032, 1033, - 0, 0, 0, 0, 0, 0, 1151, 0, 0, 0, - 0, 1451, 0, 132, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1195, 1196, 1197, 1198, 38, 0, 0, 0, 865, - 1302, 0, -2, -2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1220, 0, 0, - 0, 0, 0, 0, 1414, 0, 0, 812, 813, 815, - 0, 950, 0, 931, 0, 0, 818, 0, 859, 0, - 862, 59, 61, 871, 872, 0, 889, 868, 55, 50, - 0, 0, 908, 1368, 357, 1390, 0, 366, 366, 363, - 1330, 1331, 0, 1323, 1325, 1326, 78, 886, 882, 0, - 962, 0, 0, 945, 0, 892, 894, 895, 896, 928, - 0, 899, 0, 0, 0, 0, 0, 97, 947, 1421, - 0, 102, 0, 0, 107, 108, 1422, 1423, 1424, 1425, - 0, 585, -2, 443, 169, 171, 172, 173, 164, -2, - 355, 353, 354, 298, 357, 357, 322, 323, 324, 325, - 326, 327, 0, 0, 315, 316, 317, 318, 309, 0, - 310, 311, 312, 0, 313, 410, 0, 1332, 373, 374, - 376, 384, 0, 379, 380, 0, 384, 384, 0, 405, - 406, 0, 1324, 1349, 0, 0, 0, 1453, 1452, 1452, - 1452, 0, 157, 158, 159, 160, 161, 162, 621, 0, - 0, 597, 619, 620, 155, 0, 0, 165, 498, 497, - 0, 653, 0, 408, 0, 0, 402, 402, 387, 388, - 539, 0, 0, 628, 629, 630, 631, 0, 0, 0, - 525, 437, 0, 526, 527, 496, 498, 0, 0, 368, - 451, 452, 457, 458, 477, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 572, 573, 574, 577, - 579, 500, 583, 576, 578, 580, 500, 584, 1346, 1347, - 1348, 0, 0, 691, 0, 0, 434, 93, 1441, 696, - 757, 717, 749, 757, 709, 716, 737, 781, 789, 790, - 791, 792, 793, 826, 0, 0, 0, 0, 834, 0, - 0, 972, 1081, 1083, 976, 0, 980, 984, 0, 0, - 0, 1030, 1028, 1302, 0, 0, 0, 1077, 0, 0, - 1099, 1100, 0, 0, 0, 1296, 0, 0, 1106, 0, - 1256, 1257, 1114, 0, 0, 0, 0, 0, 1120, 1121, - 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1318, 0, - 0, 0, 0, 0, 1135, 1136, 1137, 1138, 1139, 0, - 1141, 0, 1142, 0, 0, 0, 0, 1149, 1150, 1152, - 0, 0, 1155, 1156, 0, 0, 1157, 0, 0, 0, - 1161, 0, 0, 0, 0, 1170, 1171, 1172, 1173, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1184, - 1185, 0, 1059, 0, 0, 1059, 0, 1097, 864, 0, - 1258, 1259, 1260, 1261, 1262, 0, 0, 0, 0, 0, - 0, 1218, 1219, 1221, 0, 0, 1224, 0, 1226, 0, - 1415, 811, 814, 816, 902, 951, 952, 0, 0, 0, - 0, 932, 1449, 857, 858, 861, 910, 0, 1306, 0, - 0, 889, 962, 890, 0, 869, 52, 905, 0, 1372, - 1371, 1384, 1397, 366, 366, 360, 361, 367, 362, 364, - 365, 1322, 0, 1327, 0, 1408, 0, 0, 1400, 0, - 0, 0, 0, 0, 0, 0, 0, 935, 0, 0, - 938, 0, 0, 0, 0, 929, 0, 0, 0, 0, - 0, 0, -2, 0, 0, 91, 92, 0, 0, 0, - 105, 106, 0, 0, 112, 369, 370, 146, 155, 445, - 170, 418, 0, 0, 294, 356, 319, 320, 321, 0, - 343, 0, 0, 0, 439, 118, 1336, 1335, 384, 384, - 375, 0, 378, 0, 0, 0, 1454, 346, 407, 0, - 136, 0, 0, 0, 0, 0, 142, 591, 0, 0, - 598, 0, 0, 0, 507, 0, 518, 519, 0, 625, - -2, 687, 372, 0, 386, 389, 917, 0, 0, 520, - 0, 523, 524, 438, 498, 529, 530, 544, 531, 480, - 481, 478, 0, 0, 1359, 1360, 1365, 1363, 1364, 123, - 565, 567, 566, 570, 0, 0, 0, 502, 0, 502, - 563, 0, 434, 1332, 0, 695, 435, 436, 760, 760, - 821, 96, 0, 824, 0, 0, 0, 0, 977, 981, - 1263, 1289, 345, 345, 1276, 345, 349, 1279, 345, 1281, - 345, 1284, 345, 1287, 1288, 0, 0, 0, 879, 0, - 0, 1105, 1299, 0, 0, 1115, 1116, 1117, 1118, 1119, - 1293, 0, 0, 0, 1134, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, - 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1054, 1058, 0, 1060, 1061, 0, - 0, 1187, 0, 0, 1199, 0, 1303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 953, 958, 958, - 958, 0, 0, 0, 1436, 1437, 1307, 1308, 962, 1309, - 891, 870, 909, 1390, 0, 1383, 0, -2, 1392, 0, - 0, 0, 1398, 358, 359, 883, 79, 963, 82, 0, - 1408, 1417, 0, 1399, 1410, 1412, 0, 0, 0, 1404, - 0, 962, 893, 924, 926, 0, 921, 936, 937, 939, - 0, 941, 0, 943, 944, 904, 898, 900, 0, 0, - 0, 99, 0, 962, 962, 98, 0, 949, 109, 110, - 111, 444, 174, 179, 0, 0, 0, 184, 0, 186, - 0, 0, 0, 191, 192, 384, 384, 419, 0, 291, - 293, 0, 0, 177, 357, 0, 357, 0, 350, 0, - 420, 440, 1333, 1334, 0, 0, 377, 381, 382, 383, - 0, 1443, 138, 0, 0, 0, 594, 0, 622, 0, - 0, 0, 0, 0, 0, 166, 499, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 0, 384, 0, 0, - 0, 384, 384, 384, 0, 679, 371, 0, 0, 650, - 647, 521, 0, 215, 216, 218, 0, 0, 0, 0, - 0, 528, 904, 1350, 1351, 1352, 0, 1362, 1366, 126, - 0, 0, 0, 0, 575, 581, 0, 501, 582, 692, - 693, 694, 94, 702, 708, 823, 843, 970, 978, 982, - 0, 0, 0, 0, 1290, 1274, 357, 1277, 1278, 1280, - 1282, 1283, 1285, 1286, 1018, 1019, 1023, 0, 1102, 0, - 1104, 1297, 0, 1327, 0, 0, 0, 1133, 0, 0, - 0, 1144, 1143, 1145, 0, 1147, 1148, 1153, 1154, 1158, - 0, 1160, 1162, 1163, 0, 0, 0, 1174, 1175, 1176, - 1177, 1178, 1179, 1180, 1181, 1182, 1183, 0, 1052, 1055, - 1186, 1062, 1063, 1068, 1189, 0, 0, 1098, 1201, 0, - 1206, 0, 0, 1212, 0, 1216, 0, 1222, 1223, 1225, - 1227, 0, 0, 0, 0, 0, 930, 911, 63, 1309, - 1311, 0, 1377, 1375, 1375, 1385, 1386, 0, 0, 1393, - 0, 0, 0, 0, 83, 0, 0, 0, 1413, 0, - 0, 0, 0, 100, 1318, 918, 925, 0, 0, 919, - 0, 920, 940, 942, 897, -2, 901, 0, 962, 962, - 89, 90, 0, 180, 0, 182, 208, 209, 0, 185, - 187, 188, 189, 195, 196, 197, 190, 0, 0, 290, - 292, 0, 0, 333, 344, 334, 0, 0, 1337, 1338, - 1339, 1340, 1341, 1342, 1343, 1344, 904, 139, 140, 141, - 586, 0, 596, 0, 906, 0, 589, 0, 510, 0, - 0, 0, 384, 384, 384, 0, 0, 0, 0, 664, - 0, 0, 627, 0, 635, 0, 0, 0, 219, 220, - 0, 1361, 564, 0, 124, 125, 0, 0, 569, 503, - 504, 1016, 0, 0, 0, 1017, 1275, 0, 0, 0, - 0, 1294, 0, 0, 0, 0, 1140, 0, 0, 0, - 1166, 0, 0, 0, 616, 617, 0, 1230, 1057, 1318, - 0, 1059, 1069, 1070, 0, 1059, 1200, 0, 0, 0, - 0, 0, 0, 0, 959, 0, 0, 0, 0, 950, - 1311, 1316, 0, 0, 1380, 0, 1373, 1376, 1374, 1387, - 0, 0, 1394, 0, 1396, 0, 1418, 1419, 1411, 0, - 1403, 1406, 1402, 1405, 1327, 922, 0, 927, 0, 1318, - 88, 0, 183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 194, 0, 0, 348, 351, 0, - 0, 0, 587, 0, 907, 599, 590, 0, 677, 0, - 681, 0, 0, 0, 684, 685, 686, 663, 0, 667, - 412, 651, 648, 649, 522, 0, 127, 128, 0, 0, - 0, 1264, 0, 1267, 1101, 1103, 0, 1130, 1131, 1132, - 1272, 1273, 1146, 1159, 1164, 0, 1167, 0, 0, 1168, - 0, 618, 1048, 0, 0, 1066, 1067, 0, 1202, 0, - 1207, 1208, 0, 1213, 0, 1217, 1228, 0, 955, 912, - 913, 960, 961, 0, 0, 903, 1316, 81, 1317, 1314, - 0, 1312, 1310, 1369, 0, 1378, 1379, 1388, 1389, 1395, - 0, 1401, 0, 86, 0, 0, 0, 1327, 181, 0, - 200, 0, 595, 0, 598, 588, 675, 676, 0, 688, - 680, 682, 683, 665, -2, 1353, 0, 0, 0, 571, - 1265, 0, 0, 1169, 0, 614, 615, 1056, 1049, 0, - 1034, 1035, 1053, 1188, 1190, 0, 0, 0, 0, 954, - 956, 957, 80, 0, 1313, 1074, 0, 1381, 1382, 1409, - 1407, 923, 930, 0, 87, 425, 418, 1353, 0, 0, - 0, 668, 669, 670, 671, 672, 673, 674, 561, 1355, - 129, 130, 491, 492, 493, 123, 0, 1107, 1165, 1050, - 0, 0, 0, 0, 1046, 1047, 0, 1203, 0, 1209, - 0, 1214, 0, 914, 915, 1315, 0, 0, 600, 0, - 602, 0, -2, 413, 426, 0, 175, 201, 202, 0, - 0, 205, 206, 207, 198, 199, 119, 0, 0, 689, - 0, 1356, 1357, 126, 0, 0, 1041, 1042, 1043, 1044, - 1045, 0, 0, 0, 1075, 1054, 601, 0, 0, 368, - 0, 611, 414, 415, 0, 421, 422, 423, 424, 203, - 204, 623, 0, 0, 568, 1266, 0, 1204, 0, 1210, - 0, 1215, 0, 603, 604, 612, 0, 416, 0, 417, - 0, 0, 0, 592, 0, 623, 1354, 1051, 0, 0, - 1073, 0, 613, 609, 427, 429, 430, 0, 0, 428, - 624, 593, 1205, 1211, 0, 431, 432, 433, 605, 606, - 607, 608, + 384, 384, 384, 384, 384, 1350, 155, 1467, 1464, 1465, + 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, + 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, + 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, + 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, + 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, + 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, + 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, + 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, + 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, + 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, + 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, + 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, + 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, + 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, + 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, + 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, + 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, + 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, + 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, + 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, + 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, + 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, + 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, + 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, + 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, + 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, + 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, + 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, + 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2010, 2011, 2012, 0, 1443, 0, 703, 952, 0, + 765, 765, 0, 765, 765, 765, 765, 0, 0, 0, + 715, 0, 0, 0, 0, 762, 0, 731, 732, 0, + 762, 0, 738, 768, 0, 743, 765, 765, 746, 2016, + 0, 2016, 2016, 1434, 0, 759, 757, 771, 772, 39, + 775, 778, 779, 780, 781, 783, 0, 788, 791, 1460, + 1461, 0, 793, 812, 813, 0, 845, 846, 44, 1100, + 0, 974, 979, 990, 1005, 1006, 1007, 1008, 1009, 1011, + 1012, 1013, 0, 0, 0, 0, 1018, 1019, 0, 0, + 0, 0, 0, 1081, 1027, 0, 0, 0, 0, 1296, + 0, 0, 1257, 1257, 1115, 1257, 1259, 1259, 1667, 1803, + 1811, 1928, 1630, 1635, 1636, 1637, 1921, 1922, 1923, 1924, + 1963, 1964, 1968, 1727, 0, 0, 0, 2012, 1764, 1772, + 1773, 1797, 1894, 1949, 1647, 1792, 1860, 1724, 1746, 1747, + 1876, 1877, 1768, 1769, 1750, 1762, 1765, 1753, 1754, 1756, + 1758, 1763, 1770, 1776, 1755, 1775, 1774, 0, 1751, 1752, + 1757, 1767, 1771, 1759, 1760, 1761, 1766, 1777, 0, 0, + 0, 0, 0, 1196, 1197, 1198, 1199, 0, 0, 0, + 0, 0, 0, 0, 280, 281, 1309, 1310, 42, 43, + 1099, 1421, 1259, 1259, 1259, 1259, 1259, 1041, 1042, 1043, + 1044, 1045, 1069, 1070, 1076, 1077, 1871, 1872, 1873, 1874, + 1708, 1958, 1716, 1717, 1855, 1856, 1729, 1730, 1987, 1988, + -2, -2, -2, 221, 222, 223, 224, 225, 226, 227, + 228, 0, 1671, 1940, 1941, 217, 0, 0, 285, 286, + 282, 283, 284, 1083, 1084, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 2015, 0, 822, + 0, 0, 0, 0, 0, 1332, 0, 1324, 1323, 62, + 0, 849, -2, 0, 0, 0, 0, 46, 0, 51, + 909, 852, 76, 75, 1372, 0, 0, 0, 58, 1333, + 66, 68, 1334, 0, 854, 855, 0, 885, 889, 0, + 0, 0, 1450, 1449, 1449, 101, 0, 0, 1425, 113, + 114, 115, 0, 0, 1431, 1432, 1436, 1437, 0, 0, + 167, 168, 0, 40, 411, 0, 163, 0, 404, 345, + 0, 1350, 0, 0, 0, 0, 0, 849, 0, 1444, + 144, 145, 152, 153, 154, 384, 384, 384, 559, 0, + 0, 155, 155, 517, 518, 519, 0, 0, -2, 409, + 0, 495, 0, 0, 398, 398, 402, 400, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 536, 0, 537, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 651, + 0, 385, 0, 557, 558, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 1452, 1453, 0, 534, 535, 0, + 0, 0, 384, 384, 0, 0, 0, 0, 384, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 1363, + 0, 0, 505, 0, -2, 0, 695, 0, 0, 0, + 1445, 1445, 0, 702, 0, 704, 705, 0, 0, 706, + 0, 762, 762, 760, 761, 708, 709, 710, 711, 765, + 0, 0, 393, 394, 395, 762, 765, 0, 765, 765, + 765, 765, 762, 762, 762, 765, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2016, 768, 765, 0, 739, + 0, 740, 741, 744, 745, 747, 2017, 2018, 1462, 1463, + 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, + 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, + 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, + 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, + 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, + 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, + 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, + 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, + 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 2016, + 2016, 751, 755, 1435, 777, 789, 792, 807, 48, 1715, + 799, 824, 825, 830, 0, 0, 0, 0, 836, 837, + 838, 0, 0, 841, 842, 843, 0, 0, 0, 0, + 0, 972, 0, 0, 1089, 1090, 1091, 1092, 1093, 1094, + 1095, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 991, 992, + 0, 0, 0, 1014, 1015, 1016, 1017, 1020, 0, 1032, + 0, 1034, 1305, -2, 0, 0, 0, 1025, 1026, 0, + 0, 0, 0, 0, 0, 0, 1297, 0, 0, 1113, + 0, 1114, 1116, 1117, 0, 1118, 859, 859, 859, 859, + 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1455, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 869, 0, 0, 869, 869, 0, 0, 210, 211, + 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 287, 235, 236, 237, 1099, 0, 0, + 0, 45, 814, 815, 0, 935, 1455, 0, 0, 865, + 0, 56, 65, 67, 1332, 60, 1332, 0, 871, 0, + 0, -2, -2, 872, 878, 879, 880, 881, 882, 53, + 2014, 54, 0, 73, 0, 47, 0, 0, 0, 0, + 357, 1375, 0, 0, 1325, 1326, 1329, 0, 886, 1809, + 890, 0, 892, 893, 0, 0, 99, 0, 951, 0, + 0, 0, 0, 1433, 103, 104, 0, 0, 0, 368, + 1438, 1439, 1440, -2, 391, 0, 368, 352, 295, 296, + 297, 345, 299, 345, 345, 345, 345, 357, 357, 357, + 357, 328, 329, 330, 331, 332, 0, 0, 314, 345, + 345, 345, 345, 335, 336, 337, 338, 339, 340, 341, + 342, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 347, 347, 347, 349, 349, 0, 41, 0, 372, 0, + 1329, 0, 0, 1363, 1447, 1457, 0, 0, 0, 1447, + 122, 0, 0, 0, 560, 601, 511, 548, 561, 0, + 514, 515, -2, 0, 0, 494, 0, 496, 0, 392, + 0, -2, 0, 402, 0, 398, 402, 399, 402, 390, + 403, 538, 539, 540, 0, 542, 543, 631, 921, 0, + 0, 0, 0, 0, 637, 638, 639, 0, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 549, 550, + 551, 552, 553, 554, 555, 556, 0, 0, 0, 0, + 496, 0, 545, 0, 0, 448, 449, 450, 0, 0, + 453, 454, 455, 456, 0, 0, 459, 460, 461, 938, + 939, 462, 463, 488, 489, 490, 464, 465, 466, 467, + 468, 469, 470, 482, 483, 484, 485, 486, 487, 471, + 472, 473, 474, 475, 476, 479, 0, 137, 1354, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 587, 588, 589, 0, 0, 0, 0, 0, 1445, 0, + 0, 0, 0, 868, 953, 1468, 1469, 766, 767, 0, + 396, 397, 765, 765, 712, 752, 0, 765, 716, 753, + 717, 719, 718, 720, 733, 734, 765, 723, 763, 764, + 724, 725, 726, 727, 728, 729, 730, 748, 735, 736, + 737, 769, 0, 773, 774, 749, 750, 0, 790, 810, + 808, 809, 811, 803, 804, 805, 806, 0, 0, 0, + 827, 95, 832, 833, 834, 835, 847, 840, 1101, 969, + 970, 971, 0, 973, 976, 0, 1085, 1087, 978, 980, + 1096, 1097, 1098, 0, 0, 0, 0, 0, 984, 988, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1010, 1273, 1274, 1275, 1029, 288, 289, 0, + 1030, 0, 0, 0, 0, 0, 0, 0, 1100, 1031, + 0, 883, 0, 0, 1303, 1300, 0, 0, 0, 1258, + 1260, 0, 0, 0, 0, 860, 861, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1236, 1237, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 1252, 1253, 1254, 1255, 1256, 1276, 0, 0, 0, + 0, 0, 1296, 0, 1036, 1037, 1038, 0, 0, 0, + 0, 0, 0, 1156, 0, 0, 0, 0, 1456, 0, + 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1200, 1201, + 1202, 1203, 38, 0, 0, 0, 870, 1307, 0, -2, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0, + 0, 1419, 0, 0, 817, 818, 820, 0, 955, 0, + 936, 0, 0, 823, 0, 864, 0, 867, 59, 61, + 876, 877, 0, 894, 873, 55, 50, 0, 0, 913, + 1373, 357, 1395, 0, 366, 366, 363, 1335, 1336, 0, + 1328, 1330, 1331, 78, 891, 887, 0, 967, 0, 0, + 950, 0, 897, 899, 900, 901, 933, 0, 904, 0, + 0, 0, 0, 0, 97, 952, 1426, 0, 102, 0, + 0, 107, 108, 1427, 1428, 1429, 1430, 0, 590, -2, + 443, 169, 171, 172, 173, 164, -2, 355, 353, 354, + 298, 357, 357, 322, 323, 324, 325, 326, 327, 0, + 0, 315, 316, 317, 318, 309, 0, 310, 311, 312, + 0, 313, 410, 0, 1337, 373, 374, 376, 384, 0, + 379, 380, 0, 384, 384, 0, 405, 406, 0, 1329, + 1354, 0, 0, 0, 1458, 1457, 1457, 1457, 0, 157, + 158, 159, 160, 161, 162, 626, 0, 0, 602, 624, + 625, 155, 0, 0, 165, 498, 497, 0, 658, 0, + 408, 0, 0, 402, 402, 387, 388, 541, 0, 0, + 633, 634, 635, 636, 0, 0, 0, 527, 437, 0, + 528, 529, 496, 498, 0, 0, 368, 451, 452, 457, + 458, 477, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 576, 579, 581, 500, 585, + 578, 580, 582, 500, 586, 506, 1351, 1352, 1353, 0, + 0, 696, 0, 0, 434, 93, 1446, 701, 762, 722, + 754, 762, 714, 721, 742, 786, 794, 795, 796, 797, + 798, 831, 0, 0, 0, 0, 839, 0, 0, 977, + 1086, 1088, 981, 0, 985, 989, 0, 0, 0, 1035, + 1033, 1307, 0, 0, 0, 1082, 0, 0, 1104, 1105, + 0, 0, 0, 1301, 0, 0, 1111, 0, 1261, 1262, + 1119, 0, 0, 0, 0, 0, 1125, 1126, 1127, 1128, + 1129, 1130, 1131, 1132, 1133, 1134, 1323, 0, 0, 0, + 0, 0, 1140, 1141, 1142, 1143, 1144, 0, 1146, 0, + 1147, 0, 0, 0, 0, 1154, 1155, 1157, 0, 0, + 1160, 1161, 0, 0, 1162, 0, 0, 0, 1166, 0, + 0, 0, 0, 1175, 1176, 1177, 1178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1189, 1190, 0, + 1064, 0, 0, 1064, 0, 1102, 869, 0, 1263, 1264, + 1265, 1266, 1267, 0, 0, 0, 0, 0, 0, 1223, + 1224, 1226, 0, 0, 1229, 0, 1231, 0, 1420, 816, + 819, 821, 907, 956, 957, 0, 0, 0, 0, 937, + 1454, 862, 863, 866, 915, 0, 1311, 0, 0, 894, + 967, 895, 0, 874, 52, 910, 0, 1377, 1376, 1389, + 1402, 366, 366, 360, 361, 367, 362, 364, 365, 1327, + 0, 1332, 0, 1413, 0, 0, 1405, 0, 0, 0, + 0, 0, 0, 0, 0, 940, 0, 0, 943, 0, + 0, 0, 0, 934, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 91, 92, 0, 0, 0, 105, 106, + 0, 0, 112, 369, 370, 146, 155, 445, 170, 418, + 0, 0, 294, 356, 319, 320, 321, 0, 343, 0, + 0, 0, 439, 118, 1341, 1340, 384, 384, 375, 0, + 378, 0, 0, 0, 1459, 346, 407, 0, 136, 0, + 0, 0, 0, 0, 142, 596, 0, 0, 603, 0, + 0, 0, 509, 0, 520, 521, 0, 630, -2, 692, + 372, 0, 386, 389, 922, 0, 0, 522, 0, 525, + 526, 438, 498, 531, 532, 546, 533, 480, 481, 478, + 0, 0, 1364, 1365, 1370, 1368, 1369, 123, 567, 569, + 568, 572, 0, 0, 0, 502, 0, 502, 565, 0, + 434, 1337, 0, 700, 435, 436, 765, 765, 826, 96, + 0, 829, 0, 0, 0, 0, 982, 986, 1268, 1294, + 345, 345, 1281, 345, 349, 1284, 345, 1286, 345, 1289, + 345, 1292, 1293, 0, 0, 0, 884, 0, 0, 1110, + 1304, 0, 0, 1120, 1121, 1122, 1123, 1124, 1298, 0, + 0, 0, 1139, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, + 0, 1234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1059, 1063, 0, 1065, 1066, 0, 0, 1192, + 0, 0, 1204, 0, 1308, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 958, 963, 963, 963, 0, + 0, 0, 1441, 1442, 1312, 1313, 967, 1314, 896, 875, + 914, 1395, 0, 1388, 0, -2, 1397, 0, 0, 0, + 1403, 358, 359, 888, 79, 968, 82, 0, 1413, 1422, + 0, 1404, 1415, 1417, 0, 0, 0, 1409, 0, 967, + 898, 929, 931, 0, 926, 941, 942, 944, 0, 946, + 0, 948, 949, 909, 903, 905, 0, 0, 0, 99, + 0, 967, 967, 98, 0, 954, 109, 110, 111, 444, + 174, 179, 0, 0, 0, 184, 0, 186, 0, 0, + 0, 191, 192, 384, 384, 419, 0, 291, 293, 0, + 0, 177, 357, 0, 357, 0, 350, 0, 420, 440, + 1338, 1339, 0, 0, 377, 381, 382, 383, 0, 1448, + 138, 0, 0, 0, 599, 0, 627, 0, 0, 0, + 0, 0, 0, 166, 499, 659, 660, 661, 662, 663, + 664, 665, 666, 667, 0, 384, 0, 0, 0, 384, + 384, 384, 0, 684, 371, 0, 0, 655, 652, 523, + 0, 215, 216, 218, 0, 0, 0, 0, 0, 530, + 909, 1355, 1356, 1357, 0, 1367, 1371, 126, 0, 0, + 0, 0, 577, 583, 0, 501, 584, 697, 698, 699, + 94, 707, 713, 828, 848, 975, 983, 987, 0, 0, + 0, 0, 1295, 1279, 357, 1282, 1283, 1285, 1287, 1288, + 1290, 1291, 1023, 1024, 1028, 0, 1107, 0, 1109, 1302, + 0, 1332, 0, 0, 0, 1138, 0, 0, 0, 1149, + 1148, 1150, 0, 1152, 1153, 1158, 1159, 1163, 0, 1165, + 1167, 1168, 0, 0, 0, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, 1187, 1188, 0, 1057, 1060, 1191, 1067, + 1068, 1073, 1194, 0, 0, 1103, 1206, 0, 1211, 0, + 0, 1217, 0, 1221, 0, 1227, 1228, 1230, 1232, 0, + 0, 0, 0, 0, 935, 916, 63, 1314, 1316, 0, + 1382, 1380, 1380, 1390, 1391, 0, 0, 1398, 0, 0, + 0, 0, 83, 0, 0, 0, 1418, 0, 0, 0, + 0, 100, 1323, 923, 930, 0, 0, 924, 0, 925, + 945, 947, 902, -2, 906, 0, 967, 967, 89, 90, + 0, 180, 0, 182, 208, 209, 0, 185, 187, 188, + 189, 195, 196, 197, 190, 0, 0, 290, 292, 0, + 0, 333, 344, 334, 0, 0, 1342, 1343, 1344, 1345, + 1346, 1347, 1348, 1349, 909, 139, 140, 141, 591, 0, + 601, 0, 911, 0, 594, 0, 512, 0, 0, 0, + 384, 384, 384, 0, 0, 0, 0, 669, 0, 0, + 632, 0, 640, 0, 0, 0, 219, 220, 0, 1366, + 566, 0, 124, 125, 0, 0, 571, 503, 504, 1021, + 0, 0, 0, 1022, 1280, 0, 0, 0, 0, 1299, + 0, 0, 0, 0, 1145, 0, 0, 0, 1171, 0, + 0, 0, 621, 622, 0, 1235, 1062, 1323, 0, 1064, + 1074, 1075, 0, 1064, 1205, 0, 0, 0, 0, 0, + 0, 0, 964, 0, 0, 0, 0, 955, 1316, 1321, + 0, 0, 1385, 0, 1378, 1381, 1379, 1392, 0, 0, + 1399, 0, 1401, 0, 1423, 1424, 1416, 0, 1408, 1411, + 1407, 1410, 1332, 927, 0, 932, 0, 1323, 88, 0, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 194, 0, 0, 348, 351, 0, 0, 0, + 592, 0, 912, 604, 595, 0, 682, 0, 686, 0, + 0, 0, 689, 690, 691, 668, 0, 672, 412, 656, + 653, 654, 524, 0, 127, 128, 0, 0, 0, 1269, + 0, 1272, 1106, 1108, 0, 1135, 1136, 1137, 1277, 1278, + 1151, 1164, 1169, 0, 1172, 0, 0, 1173, 0, 623, + 1053, 0, 0, 1071, 1072, 0, 1207, 0, 1212, 1213, + 0, 1218, 0, 1222, 1233, 0, 960, 917, 918, 965, + 966, 0, 0, 908, 1321, 81, 1322, 1319, 0, 1317, + 1315, 1374, 0, 1383, 1384, 1393, 1394, 1400, 0, 1406, + 0, 86, 0, 0, 0, 1332, 181, 0, 200, 0, + 600, 0, 603, 593, 680, 681, 0, 693, 685, 687, + 688, 670, -2, 1358, 0, 0, 0, 573, 1270, 0, + 0, 1174, 0, 619, 620, 1061, 1054, 0, 1039, 1040, + 1058, 1193, 1195, 0, 0, 0, 0, 959, 961, 962, + 80, 0, 1318, 1079, 0, 1386, 1387, 1414, 1412, 928, + 935, 0, 87, 425, 418, 1358, 0, 0, 0, 673, + 674, 675, 676, 677, 678, 679, 563, 1360, 129, 130, + 491, 492, 493, 123, 0, 1112, 1170, 1055, 0, 0, + 0, 0, 1051, 1052, 0, 1208, 0, 1214, 0, 1219, + 0, 919, 920, 1320, 0, 0, 605, 0, 607, 0, + -2, 413, 426, 0, 175, 201, 202, 0, 0, 205, + 206, 207, 198, 199, 119, 0, 0, 694, 0, 1361, + 1362, 126, 0, 0, 1046, 1047, 1048, 1049, 1050, 0, + 0, 0, 1080, 1059, 606, 0, 0, 368, 0, 616, + 414, 415, 0, 421, 422, 423, 424, 203, 204, 628, + 0, 0, 570, 1271, 0, 1209, 0, 1215, 0, 1220, + 0, 608, 609, 617, 0, 416, 0, 417, 0, 0, + 0, 597, 0, 628, 1359, 1056, 0, 0, 1078, 0, + 618, 614, 427, 429, 430, 0, 0, 428, 629, 598, + 1210, 1216, 0, 431, 432, 433, 610, 611, 612, 613, } var yyTok1 = [...]int{ @@ -8451,7 +8382,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 144, 3, 3, 3, 171, 163, 3, 87, 89, 168, 166, 88, 167, 221, 169, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 657, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 659, 152, 151, 153, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -8567,7 +8498,7 @@ var yyTok3 = [...]int{ 57965, 640, 57966, 641, 57967, 642, 57968, 643, 57969, 644, 57970, 645, 57971, 646, 57972, 647, 57973, 648, 57974, 649, 57975, 650, 57976, 651, 57977, 652, 57978, 653, 57979, 654, - 57980, 655, 57981, 656, 0, + 57980, 655, 57981, 656, 57982, 657, 57983, 658, 0, } var yyErrorMessages = [...]struct { @@ -8917,7 +8848,7 @@ yydefault: case 1: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:598 +//line sql.y:601 { stmt := yyDollar[2].statementUnion() // If the statement is empty and we have comments @@ -8931,58 +8862,58 @@ yydefault: } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:611 +//line sql.y:614 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:612 +//line sql.y:615 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:616 +//line sql.y:619 { yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL case 37: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:652 +//line sql.y:655 { setParseTree(yylex, nil) } case 38: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:658 +//line sql.y:661 { yyLOCAL = NewVariableExpression(yyDollar[1].str, SingleAt) } yyVAL.union = yyLOCAL case 39: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:664 +//line sql.y:667 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 40: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:669 +//line sql.y:672 { yyVAL.identifierCI = NewIdentifierCI("") } case 41: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:673 +//line sql.y:676 { yyVAL.identifierCI = yyDollar[1].identifierCI } case 42: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:679 +//line sql.y:682 { yyLOCAL = NewVariableExpression(string(yyDollar[1].str), SingleAt) } @@ -8990,7 +8921,7 @@ yydefault: case 43: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:683 +//line sql.y:686 { yyLOCAL = NewVariableExpression(string(yyDollar[1].str), DoubleAt) } @@ -8998,7 +8929,7 @@ yydefault: case 44: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:689 +//line sql.y:692 { yyLOCAL = &OtherAdmin{} } @@ -9006,7 +8937,7 @@ yydefault: case 45: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:695 +//line sql.y:698 { yyLOCAL = &Load{} } @@ -9014,7 +8945,7 @@ yydefault: case 46: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *With -//line sql.y:701 +//line sql.y:704 { yyLOCAL = &With{ctes: yyDollar[2].ctesUnion(), Recursive: false} } @@ -9022,7 +8953,7 @@ yydefault: case 47: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *With -//line sql.y:705 +//line sql.y:708 { yyLOCAL = &With{ctes: yyDollar[3].ctesUnion(), Recursive: true} } @@ -9030,7 +8961,7 @@ yydefault: case 48: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *With -//line sql.y:710 +//line sql.y:713 { yyLOCAL = nil } @@ -9038,14 +8969,14 @@ yydefault: case 49: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *With -//line sql.y:714 +//line sql.y:717 { yyLOCAL = yyDollar[1].withUnion() } yyVAL.union = yyLOCAL case 50: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:720 +//line sql.y:723 { yySLICE := (*[]*CommonTableExpr)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].cteUnion()) @@ -9053,7 +8984,7 @@ yydefault: case 51: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*CommonTableExpr -//line sql.y:724 +//line sql.y:727 { yyLOCAL = []*CommonTableExpr{yyDollar[1].cteUnion()} } @@ -9061,7 +8992,7 @@ yydefault: case 52: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *CommonTableExpr -//line sql.y:730 +//line sql.y:733 { yyLOCAL = &CommonTableExpr{ID: yyDollar[1].identifierCS, Columns: yyDollar[2].columnsUnion(), Subquery: yyDollar[4].subqueryUnion()} } @@ -9069,7 +9000,7 @@ yydefault: case 53: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:736 +//line sql.y:739 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9077,7 +9008,7 @@ yydefault: case 54: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:740 +//line sql.y:743 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9085,7 +9016,7 @@ yydefault: case 55: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:744 +//line sql.y:747 { setLockInSelect(yyDollar[2].selStmtUnion(), yyDollar[3].lockUnion()) yyLOCAL = yyDollar[2].selStmtUnion() @@ -9094,7 +9025,7 @@ yydefault: case 56: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:767 +//line sql.y:770 { yyDollar[1].selStmtUnion().SetOrderBy(yyDollar[2].orderByUnion()) yyDollar[1].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9104,7 +9035,7 @@ yydefault: case 57: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:773 +//line sql.y:776 { yyDollar[1].selStmtUnion().SetLimit(yyDollar[2].limitUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9113,7 +9044,7 @@ yydefault: case 58: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:778 +//line sql.y:781 { yyDollar[1].selStmtUnion().SetOrderBy(yyDollar[2].orderByUnion()) yyDollar[1].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9123,7 +9054,7 @@ yydefault: case 59: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:784 +//line sql.y:787 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetOrderBy(yyDollar[3].orderByUnion()) @@ -9134,7 +9065,7 @@ yydefault: case 60: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:791 +//line sql.y:794 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9144,7 +9075,7 @@ yydefault: case 61: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:797 +//line sql.y:800 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetOrderBy(yyDollar[3].orderByUnion()) @@ -9154,14 +9085,14 @@ yydefault: yyVAL.union = yyLOCAL case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:804 +//line sql.y:807 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) } case 63: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:808 +//line sql.y:811 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), SelectExprs{&Nextval{Expr: yyDollar[5].exprUnion()}}, []string{yyDollar[3].str} /*options*/, nil, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/, nil) } @@ -9169,7 +9100,7 @@ yydefault: case 64: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:814 +//line sql.y:817 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9177,7 +9108,7 @@ yydefault: case 65: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:818 +//line sql.y:821 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9185,7 +9116,7 @@ yydefault: case 66: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:822 +//line sql.y:825 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9193,7 +9124,7 @@ yydefault: case 67: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:826 +//line sql.y:829 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9201,7 +9132,7 @@ yydefault: case 68: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:830 +//line sql.y:833 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9209,7 +9140,7 @@ yydefault: case 69: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:836 +//line sql.y:839 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9217,7 +9148,7 @@ yydefault: case 70: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:840 +//line sql.y:843 { setLockInSelect(yyDollar[1].selStmtUnion(), yyDollar[2].lockUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9226,7 +9157,7 @@ yydefault: case 71: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:845 +//line sql.y:848 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9234,7 +9165,7 @@ yydefault: case 72: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:849 +//line sql.y:852 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9242,7 +9173,7 @@ yydefault: case 73: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:855 +//line sql.y:858 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9250,7 +9181,7 @@ yydefault: case 74: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:859 +//line sql.y:862 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9259,7 +9190,7 @@ yydefault: case 75: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:864 +//line sql.y:867 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyDollar[1].selStmtUnion().SetLock(yyDollar[3].lockUnion()) @@ -9269,7 +9200,7 @@ yydefault: case 76: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:870 +//line sql.y:873 { yyDollar[1].selStmtUnion().SetInto(yyDollar[3].selectIntoUnion()) yyDollar[1].selStmtUnion().SetLock(yyDollar[2].lockUnion()) @@ -9279,7 +9210,7 @@ yydefault: case 77: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:876 +//line sql.y:879 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9288,7 +9219,7 @@ yydefault: case 78: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:883 +//line sql.y:886 { yyLOCAL = &Stream{Comments: Comments(yyDollar[2].strs).Parsed(), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName} } @@ -9296,7 +9227,7 @@ yydefault: case 79: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:889 +//line sql.y:892 { yyLOCAL = &VStream{Comments: Comments(yyDollar[2].strs).Parsed(), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].exprUnion()), Limit: yyDollar[7].limitUnion()} } @@ -9304,7 +9235,7 @@ yydefault: case 80: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:897 +//line sql.y:900 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), yyDollar[4].selectExprsUnion() /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].selectIntoUnion() /*into*/, yyDollar[6].tableExprsUnion() /*from*/, NewWhere(WhereClause, yyDollar[7].exprUnion()), GroupBy(yyDollar[8].exprsUnion()), NewWhere(HavingClause, yyDollar[9].exprUnion()), yyDollar[10].namedWindowsUnion()) } @@ -9312,7 +9243,7 @@ yydefault: case 81: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:901 +//line sql.y:904 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), yyDollar[4].selectExprsUnion() /*SelectExprs*/, yyDollar[3].strs /*options*/, nil, yyDollar[5].tableExprsUnion() /*from*/, NewWhere(WhereClause, yyDollar[6].exprUnion()), GroupBy(yyDollar[7].exprsUnion()), NewWhere(HavingClause, yyDollar[8].exprUnion()), yyDollar[9].namedWindowsUnion()) } @@ -9320,7 +9251,7 @@ yydefault: case 82: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:907 +//line sql.y:910 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].insUnion() @@ -9336,7 +9267,7 @@ yydefault: case 83: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:919 +//line sql.y:922 { cols := make(Columns, 0, len(yyDollar[7].updateExprsUnion())) vals := make(ValTuple, 0, len(yyDollar[8].updateExprsUnion())) @@ -9350,7 +9281,7 @@ yydefault: case 84: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL InsertAction -//line sql.y:931 +//line sql.y:934 { yyLOCAL = InsertAct } @@ -9358,7 +9289,7 @@ yydefault: case 85: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL InsertAction -//line sql.y:935 +//line sql.y:938 { yyLOCAL = ReplaceAct } @@ -9366,7 +9297,7 @@ yydefault: case 86: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:941 +//line sql.y:944 { yyLOCAL = &Update{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), TableExprs: yyDollar[5].tableExprsUnion(), Exprs: yyDollar[7].updateExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion()), OrderBy: yyDollar[9].orderByUnion(), Limit: yyDollar[10].limitUnion()} } @@ -9374,7 +9305,7 @@ yydefault: case 87: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:947 +//line sql.y:950 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[6].tableName, As: yyDollar[7].identifierCS}}, Partitions: yyDollar[8].partitionsUnion(), Where: NewWhere(WhereClause, yyDollar[9].exprUnion()), OrderBy: yyDollar[10].orderByUnion(), Limit: yyDollar[11].limitUnion()} } @@ -9382,7 +9313,7 @@ yydefault: case 88: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Statement -//line sql.y:951 +//line sql.y:954 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[6].tableNamesUnion(), TableExprs: yyDollar[8].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[9].exprUnion())} } @@ -9390,7 +9321,7 @@ yydefault: case 89: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:955 +//line sql.y:958 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[5].tableNamesUnion(), TableExprs: yyDollar[7].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion())} } @@ -9398,32 +9329,32 @@ yydefault: case 90: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:959 +//line sql.y:962 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[5].tableNamesUnion(), TableExprs: yyDollar[7].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion())} } yyVAL.union = yyLOCAL case 91: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:964 +//line sql.y:967 { } case 92: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:965 +//line sql.y:968 { } case 93: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:969 +//line sql.y:972 { yyLOCAL = TableNames{yyDollar[1].tableName.ToViewName()} } yyVAL.union = yyLOCAL case 94: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:973 +//line sql.y:976 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName.ToViewName()) @@ -9431,14 +9362,14 @@ yydefault: case 95: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:979 +//line sql.y:982 { yyLOCAL = TableNames{yyDollar[1].tableName} } yyVAL.union = yyLOCAL case 96: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:983 +//line sql.y:986 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName) @@ -9446,14 +9377,14 @@ yydefault: case 97: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:989 +//line sql.y:992 { yyLOCAL = TableNames{yyDollar[1].tableName} } yyVAL.union = yyLOCAL case 98: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:993 +//line sql.y:996 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName) @@ -9461,7 +9392,7 @@ yydefault: case 99: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Partitions -//line sql.y:998 +//line sql.y:1001 { yyLOCAL = nil } @@ -9469,7 +9400,7 @@ yydefault: case 100: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Partitions -//line sql.y:1002 +//line sql.y:1005 { yyLOCAL = yyDollar[3].partitionsUnion() } @@ -9477,7 +9408,7 @@ yydefault: case 101: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:1008 +//line sql.y:1011 { yyLOCAL = NewSetStatement(Comments(yyDollar[2].strs).Parsed(), yyDollar[3].setExprsUnion()) } @@ -9485,7 +9416,7 @@ yydefault: case 102: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:1014 +//line sql.y:1017 { yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs).Parsed(), Scope: yyDollar[3].scopeUnion(), Characteristics: yyDollar[5].characteristicsUnion()} } @@ -9493,7 +9424,7 @@ yydefault: case 103: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:1018 +//line sql.y:1021 { yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs).Parsed(), Characteristics: yyDollar[4].characteristicsUnion(), Scope: NoScope} } @@ -9501,14 +9432,14 @@ yydefault: case 104: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []Characteristic -//line sql.y:1024 +//line sql.y:1027 { yyLOCAL = []Characteristic{yyDollar[1].characteristicUnion()} } yyVAL.union = yyLOCAL case 105: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1028 +//line sql.y:1031 { yySLICE := (*[]Characteristic)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].characteristicUnion()) @@ -9516,7 +9447,7 @@ yydefault: case 106: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1034 +//line sql.y:1037 { yyLOCAL = yyDollar[3].isolationLevelUnion() } @@ -9524,7 +9455,7 @@ yydefault: case 107: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1038 +//line sql.y:1041 { yyLOCAL = ReadWrite } @@ -9532,7 +9463,7 @@ yydefault: case 108: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1042 +//line sql.y:1045 { yyLOCAL = ReadOnly } @@ -9540,7 +9471,7 @@ yydefault: case 109: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1048 +//line sql.y:1051 { yyLOCAL = RepeatableRead } @@ -9548,7 +9479,7 @@ yydefault: case 110: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1052 +//line sql.y:1055 { yyLOCAL = ReadCommitted } @@ -9556,7 +9487,7 @@ yydefault: case 111: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1056 +//line sql.y:1059 { yyLOCAL = ReadUncommitted } @@ -9564,7 +9495,7 @@ yydefault: case 112: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1060 +//line sql.y:1063 { yyLOCAL = Serializable } @@ -9572,7 +9503,7 @@ yydefault: case 113: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1066 +//line sql.y:1069 { yyLOCAL = SessionScope } @@ -9580,7 +9511,7 @@ yydefault: case 114: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1070 +//line sql.y:1073 { yyLOCAL = SessionScope } @@ -9588,7 +9519,7 @@ yydefault: case 115: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1074 +//line sql.y:1077 { yyLOCAL = GlobalScope } @@ -9596,7 +9527,7 @@ yydefault: case 116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1080 +//line sql.y:1083 { yyDollar[1].createTableUnion().TableSpec = yyDollar[2].tableSpecUnion() yyDollar[1].createTableUnion().FullyParsed = true @@ -9606,7 +9537,7 @@ yydefault: case 117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1086 +//line sql.y:1089 { // Create table [name] like [name] yyDollar[1].createTableUnion().OptLike = yyDollar[2].optLikeUnion() @@ -9617,7 +9548,7 @@ yydefault: case 118: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:1093 +//line sql.y:1096 { indexDef := yyDollar[1].alterTableUnion().AlterOptions[0].(*AddIndexDefinition).IndexDefinition indexDef.Columns = yyDollar[3].indexColumnsUnion() @@ -9630,7 +9561,7 @@ yydefault: case 119: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Statement -//line sql.y:1102 +//line sql.y:1105 { yyLOCAL = &CreateView{ViewName: yyDollar[8].tableName.ToViewName(), Comments: Comments(yyDollar[2].strs).Parsed(), IsReplace: yyDollar[3].booleanUnion(), Algorithm: yyDollar[4].str, Definer: yyDollar[5].definerUnion(), Security: yyDollar[6].str, Columns: yyDollar[9].columnsUnion(), Select: yyDollar[11].selStmtUnion(), CheckOption: yyDollar[12].str} } @@ -9638,7 +9569,7 @@ yydefault: case 120: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1106 +//line sql.y:1109 { yyDollar[1].createDatabaseUnion().FullyParsed = true yyDollar[1].createDatabaseUnion().CreateOptions = yyDollar[2].databaseOptionsUnion() @@ -9648,7 +9579,7 @@ yydefault: case 121: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:1113 +//line sql.y:1116 { yyLOCAL = false } @@ -9656,33 +9587,33 @@ yydefault: case 122: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:1117 +//line sql.y:1120 { yyLOCAL = true } yyVAL.union = yyLOCAL case 123: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1122 +//line sql.y:1125 { yyVAL.identifierCI = NewIdentifierCI("") } case 124: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1126 +//line sql.y:1129 { yyVAL.identifierCI = yyDollar[2].identifierCI } case 125: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1132 +//line sql.y:1135 { yyVAL.identifierCI = yyDollar[1].identifierCI } case 126: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1137 +//line sql.y:1140 { var v []VindexParam yyLOCAL = v @@ -9691,7 +9622,7 @@ yydefault: case 127: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1142 +//line sql.y:1145 { yyLOCAL = yyDollar[2].vindexParamsUnion() } @@ -9699,7 +9630,7 @@ yydefault: case 128: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1148 +//line sql.y:1151 { yyLOCAL = make([]VindexParam, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].vindexParam) @@ -9707,21 +9638,21 @@ yydefault: yyVAL.union = yyLOCAL case 129: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1153 +//line sql.y:1156 { yySLICE := (*[]VindexParam)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].vindexParam) } case 130: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1159 +//line sql.y:1162 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].identifierCI, Val: yyDollar[3].str} } case 131: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1164 +//line sql.y:1167 { yyLOCAL = nil } @@ -9729,7 +9660,7 @@ yydefault: case 132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1168 +//line sql.y:1171 { yyLOCAL = yyDollar[1].jsonObjectParamsUnion() } @@ -9737,28 +9668,28 @@ yydefault: case 133: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1174 +//line sql.y:1177 { yyLOCAL = []*JSONObjectParam{yyDollar[1].jsonObjectParam} } yyVAL.union = yyLOCAL case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1178 +//line sql.y:1181 { yySLICE := (*[]*JSONObjectParam)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jsonObjectParam) } case 135: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1184 +//line sql.y:1187 { yyVAL.jsonObjectParam = &JSONObjectParam{Key: yyDollar[1].exprUnion(), Value: yyDollar[3].exprUnion()} } case 136: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *CreateTable -//line sql.y:1190 +//line sql.y:1193 { yyLOCAL = &CreateTable{Comments: Comments(yyDollar[2].strs).Parsed(), Table: yyDollar[6].tableName, IfNotExists: yyDollar[5].booleanUnion(), Temp: yyDollar[3].booleanUnion()} setDDL(yylex, yyLOCAL) @@ -9767,7 +9698,7 @@ yydefault: case 137: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1197 +//line sql.y:1200 { yyLOCAL = &AlterTable{Comments: Comments(yyDollar[2].strs).Parsed(), Table: yyDollar[4].tableName} setDDL(yylex, yyLOCAL) @@ -9776,7 +9707,7 @@ yydefault: case 138: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1204 +//line sql.y:1207 { yyLOCAL = &AlterTable{Table: yyDollar[7].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[4].identifierCI, Type: string(yyDollar[3].str)}, Options: yyDollar[5].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9785,7 +9716,7 @@ yydefault: case 139: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1209 +//line sql.y:1212 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Fulltext: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9794,7 +9725,7 @@ yydefault: case 140: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1214 +//line sql.y:1217 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Spatial: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9803,7 +9734,7 @@ yydefault: case 141: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1219 +//line sql.y:1222 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Unique: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9812,7 +9743,7 @@ yydefault: case 142: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *CreateDatabase -//line sql.y:1226 +//line sql.y:1229 { yyLOCAL = &CreateDatabase{Comments: Comments(yyDollar[4].strs).Parsed(), DBName: yyDollar[6].identifierCS, IfNotExists: yyDollar[5].booleanUnion()} setDDL(yylex, yyLOCAL) @@ -9821,7 +9752,7 @@ yydefault: case 143: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AlterDatabase -//line sql.y:1233 +//line sql.y:1236 { yyLOCAL = &AlterDatabase{} setDDL(yylex, yyLOCAL) @@ -9830,7 +9761,7 @@ yydefault: case 146: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1244 +//line sql.y:1247 { yyLOCAL = yyDollar[2].tableSpecUnion() yyLOCAL.Options = yyDollar[4].tableOptionsUnion() @@ -9840,7 +9771,7 @@ yydefault: case 147: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1251 +//line sql.y:1254 { yyLOCAL = nil } @@ -9848,7 +9779,7 @@ yydefault: case 148: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1255 +//line sql.y:1258 { yyLOCAL = yyDollar[1].databaseOptionsUnion() } @@ -9856,7 +9787,7 @@ yydefault: case 149: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1261 +//line sql.y:1264 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } @@ -9864,7 +9795,7 @@ yydefault: case 150: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1265 +//line sql.y:1268 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } @@ -9872,28 +9803,28 @@ yydefault: case 151: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1269 +//line sql.y:1272 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } yyVAL.union = yyLOCAL case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1273 +//line sql.y:1276 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) } case 153: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1277 +//line sql.y:1280 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) } case 154: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1281 +//line sql.y:1284 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) @@ -9901,7 +9832,7 @@ yydefault: case 155: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:1287 +//line sql.y:1290 { yyLOCAL = false } @@ -9909,51 +9840,51 @@ yydefault: case 156: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:1291 +//line sql.y:1294 { yyLOCAL = true } yyVAL.union = yyLOCAL case 157: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1297 +//line sql.y:1300 { yyVAL.databaseOption = DatabaseOption{Type: CharacterSetType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 158: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1301 +//line sql.y:1304 { yyVAL.databaseOption = DatabaseOption{Type: CharacterSetType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 159: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1307 +//line sql.y:1310 { yyVAL.databaseOption = DatabaseOption{Type: CollateType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 160: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1311 +//line sql.y:1314 { yyVAL.databaseOption = DatabaseOption{Type: CollateType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 161: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1317 +//line sql.y:1320 { yyVAL.databaseOption = DatabaseOption{Type: EncryptionType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 162: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1321 +//line sql.y:1324 { yyVAL.databaseOption = DatabaseOption{Type: EncryptionType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 163: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OptLike -//line sql.y:1327 +//line sql.y:1330 { yyLOCAL = &OptLike{LikeTable: yyDollar[2].tableName} } @@ -9961,7 +9892,7 @@ yydefault: case 164: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OptLike -//line sql.y:1331 +//line sql.y:1334 { yyLOCAL = &OptLike{LikeTable: yyDollar[3].tableName} } @@ -9969,14 +9900,14 @@ yydefault: case 165: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColumnDefinition -//line sql.y:1337 +//line sql.y:1340 { yyLOCAL = []*ColumnDefinition{yyDollar[1].columnDefinitionUnion()} } yyVAL.union = yyLOCAL case 166: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1341 +//line sql.y:1344 { yySLICE := (*[]*ColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].columnDefinitionUnion()) @@ -9984,7 +9915,7 @@ yydefault: case 167: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1347 +//line sql.y:1350 { yyLOCAL = &TableSpec{} yyLOCAL.AddColumn(yyDollar[1].columnDefinitionUnion()) @@ -9993,7 +9924,7 @@ yydefault: case 168: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1352 +//line sql.y:1355 { yyLOCAL = &TableSpec{} yyLOCAL.AddConstraint(yyDollar[1].constraintDefinitionUnion()) @@ -10001,39 +9932,39 @@ yydefault: yyVAL.union = yyLOCAL case 169: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1357 +//line sql.y:1360 { yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion()) } case 170: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1361 +//line sql.y:1364 { yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion()) yyVAL.tableSpecUnion().AddConstraint(yyDollar[4].constraintDefinitionUnion()) } case 171: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1366 +//line sql.y:1369 { yyVAL.tableSpecUnion().AddIndex(yyDollar[3].indexDefinitionUnion()) } case 172: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1370 +//line sql.y:1373 { yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion()) } case 173: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1374 +//line sql.y:1377 { yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion()) } case 174: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColumnDefinition -//line sql.y:1385 +//line sql.y:1388 { yyDollar[2].columnType.Options = yyDollar[4].columnTypeOptionsUnion() if yyDollar[2].columnType.Options.Collate == "" { @@ -10046,7 +9977,7 @@ yydefault: case 175: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL *ColumnDefinition -//line sql.y:1394 +//line sql.y:1397 { yyDollar[2].columnType.Options = yyDollar[9].columnTypeOptionsUnion() yyDollar[2].columnType.Options.As = yyDollar[7].exprUnion() @@ -10057,20 +9988,20 @@ yydefault: yyVAL.union = yyLOCAL case 176: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1403 +//line sql.y:1406 { yyVAL.str = "" } case 177: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1407 +//line sql.y:1410 { yyVAL.str = "" } case 178: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1416 +//line sql.y:1419 { yyLOCAL = &ColumnTypeOptions{Null: nil, Default: nil, OnUpdate: nil, Autoincrement: false, KeyOpt: colKeyNone, Comment: nil, As: nil, Invisible: nil, Format: UnspecifiedFormat, EngineAttribute: nil, SecondaryEngineAttribute: nil} } @@ -10078,7 +10009,7 @@ yydefault: case 179: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1420 +//line sql.y:1423 { val := true yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10088,7 +10019,7 @@ yydefault: case 180: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1426 +//line sql.y:1429 { val := false yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10098,7 +10029,7 @@ yydefault: case 181: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1432 +//line sql.y:1435 { yyDollar[1].columnTypeOptionsUnion().Default = yyDollar[4].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10107,7 +10038,7 @@ yydefault: case 182: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1437 +//line sql.y:1440 { yyDollar[1].columnTypeOptionsUnion().Default = yyDollar[3].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10116,7 +10047,7 @@ yydefault: case 183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1442 +//line sql.y:1445 { yyDollar[1].columnTypeOptionsUnion().OnUpdate = yyDollar[4].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10125,7 +10056,7 @@ yydefault: case 184: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1447 +//line sql.y:1450 { yyDollar[1].columnTypeOptionsUnion().Autoincrement = true yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10134,7 +10065,7 @@ yydefault: case 185: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1452 +//line sql.y:1455 { yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10143,7 +10074,7 @@ yydefault: case 186: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1457 +//line sql.y:1460 { yyDollar[1].columnTypeOptionsUnion().KeyOpt = yyDollar[2].colKeyOptUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10151,14 +10082,14 @@ yydefault: yyVAL.union = yyLOCAL case 187: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1462 +//line sql.y:1465 { yyDollar[1].columnTypeOptionsUnion().Collate = encodeSQLString(yyDollar[3].str) } case 188: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1466 +//line sql.y:1469 { yyDollar[1].columnTypeOptionsUnion().Collate = string(yyDollar[3].identifierCI.String()) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10166,14 +10097,14 @@ yydefault: yyVAL.union = yyLOCAL case 189: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1471 +//line sql.y:1474 { yyDollar[1].columnTypeOptionsUnion().Format = yyDollar[3].columnFormatUnion() } case 190: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1475 +//line sql.y:1478 { yyDollar[1].columnTypeOptionsUnion().SRID = NewIntLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10182,7 +10113,7 @@ yydefault: case 191: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1480 +//line sql.y:1483 { val := false yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10192,7 +10123,7 @@ yydefault: case 192: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1486 +//line sql.y:1489 { val := true yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10201,20 +10132,20 @@ yydefault: yyVAL.union = yyLOCAL case 193: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1492 +//line sql.y:1495 { yyDollar[1].columnTypeOptionsUnion().EngineAttribute = NewStrLiteral(yyDollar[4].str) } case 194: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1496 +//line sql.y:1499 { yyDollar[1].columnTypeOptionsUnion().SecondaryEngineAttribute = NewStrLiteral(yyDollar[4].str) } case 195: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1502 +//line sql.y:1505 { yyLOCAL = FixedFormat } @@ -10222,7 +10153,7 @@ yydefault: case 196: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1506 +//line sql.y:1509 { yyLOCAL = DynamicFormat } @@ -10230,7 +10161,7 @@ yydefault: case 197: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1510 +//line sql.y:1513 { yyLOCAL = DefaultFormat } @@ -10238,7 +10169,7 @@ yydefault: case 198: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnStorage -//line sql.y:1516 +//line sql.y:1519 { yyLOCAL = VirtualStorage } @@ -10246,7 +10177,7 @@ yydefault: case 199: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnStorage -//line sql.y:1520 +//line sql.y:1523 { yyLOCAL = StoredStorage } @@ -10254,7 +10185,7 @@ yydefault: case 200: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1525 +//line sql.y:1528 { yyLOCAL = &ColumnTypeOptions{} } @@ -10262,7 +10193,7 @@ yydefault: case 201: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1529 +//line sql.y:1532 { yyDollar[1].columnTypeOptionsUnion().Storage = yyDollar[2].columnStorageUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10271,7 +10202,7 @@ yydefault: case 202: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1534 +//line sql.y:1537 { val := true yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10281,7 +10212,7 @@ yydefault: case 203: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1540 +//line sql.y:1543 { val := false yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10291,7 +10222,7 @@ yydefault: case 204: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1546 +//line sql.y:1549 { yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10300,7 +10231,7 @@ yydefault: case 205: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1551 +//line sql.y:1554 { yyDollar[1].columnTypeOptionsUnion().KeyOpt = yyDollar[2].colKeyOptUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10309,7 +10240,7 @@ yydefault: case 206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1556 +//line sql.y:1559 { val := false yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10319,7 +10250,7 @@ yydefault: case 207: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1562 +//line sql.y:1565 { val := true yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10329,7 +10260,7 @@ yydefault: case 208: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1570 +//line sql.y:1573 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10337,7 +10268,7 @@ yydefault: case 210: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1577 +//line sql.y:1580 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_timestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10345,7 +10276,7 @@ yydefault: case 211: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1581 +//line sql.y:1584 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtime"), Fsp: yyDollar[2].exprUnion()} } @@ -10353,7 +10284,7 @@ yydefault: case 212: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1585 +//line sql.y:1588 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtimestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10361,7 +10292,7 @@ yydefault: case 213: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1589 +//line sql.y:1592 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_timestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10369,7 +10300,7 @@ yydefault: case 214: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1593 +//line sql.y:1596 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("now"), Fsp: yyDollar[2].exprUnion()} } @@ -10377,7 +10308,7 @@ yydefault: case 217: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1603 +//line sql.y:1606 { yyLOCAL = &NullVal{} } @@ -10385,7 +10316,7 @@ yydefault: case 219: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1610 +//line sql.y:1613 { yyLOCAL = yyDollar[2].exprUnion() } @@ -10393,7 +10324,7 @@ yydefault: case 220: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1614 +//line sql.y:1617 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } @@ -10401,7 +10332,7 @@ yydefault: case 221: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1620 +//line sql.y:1623 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10409,7 +10340,7 @@ yydefault: case 222: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1624 +//line sql.y:1627 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10417,7 +10348,7 @@ yydefault: case 223: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1628 +//line sql.y:1631 { yyLOCAL = yyDollar[1].boolValUnion() } @@ -10425,7 +10356,7 @@ yydefault: case 224: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1632 +//line sql.y:1635 { yyLOCAL = NewHexLiteral(yyDollar[1].str) } @@ -10433,7 +10364,7 @@ yydefault: case 225: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1636 +//line sql.y:1639 { yyLOCAL = NewHexNumLiteral(yyDollar[1].str) } @@ -10441,7 +10372,7 @@ yydefault: case 226: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1640 +//line sql.y:1643 { yyLOCAL = NewBitLiteral(yyDollar[1].str[2:]) } @@ -10449,7 +10380,7 @@ yydefault: case 227: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1644 +//line sql.y:1647 { yyLOCAL = NewBitLiteral(yyDollar[1].str) } @@ -10457,7 +10388,7 @@ yydefault: case 228: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1648 +//line sql.y:1651 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) @@ -10466,7 +10397,7 @@ yydefault: case 229: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1653 +//line sql.y:1656 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral(yyDollar[2].str)} } @@ -10474,7 +10405,7 @@ yydefault: case 230: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1657 +//line sql.y:1660 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexNumLiteral(yyDollar[2].str)} } @@ -10482,7 +10413,7 @@ yydefault: case 231: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1661 +//line sql.y:1664 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral(yyDollar[2].str[2:])} } @@ -10490,7 +10421,7 @@ yydefault: case 232: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1665 +//line sql.y:1668 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexLiteral(yyDollar[2].str)} } @@ -10498,7 +10429,7 @@ yydefault: case 233: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1669 +//line sql.y:1672 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: yyDollar[2].exprUnion()} } @@ -10506,7 +10437,7 @@ yydefault: case 234: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1673 +//line sql.y:1676 { bindVariable(yylex, yyDollar[2].str[1:]) yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewArgument(yyDollar[2].str[1:])} @@ -10515,7 +10446,7 @@ yydefault: case 235: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1678 +//line sql.y:1681 { yyLOCAL = NewDateLiteral(yyDollar[2].str) } @@ -10523,7 +10454,7 @@ yydefault: case 236: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1682 +//line sql.y:1685 { yyLOCAL = NewTimeLiteral(yyDollar[2].str) } @@ -10531,267 +10462,267 @@ yydefault: case 237: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1686 +//line sql.y:1689 { yyLOCAL = NewTimestampLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 238: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1692 +//line sql.y:1695 { yyVAL.str = Armscii8Str } case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1696 +//line sql.y:1699 { yyVAL.str = ASCIIStr } case 240: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1700 +//line sql.y:1703 { yyVAL.str = Big5Str } case 241: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1704 +//line sql.y:1707 { yyVAL.str = UBinaryStr } case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1708 +//line sql.y:1711 { yyVAL.str = Cp1250Str } case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1712 +//line sql.y:1715 { yyVAL.str = Cp1251Str } case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1716 +//line sql.y:1719 { yyVAL.str = Cp1256Str } case 245: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1720 +//line sql.y:1723 { yyVAL.str = Cp1257Str } case 246: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1724 +//line sql.y:1727 { yyVAL.str = Cp850Str } case 247: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1728 +//line sql.y:1731 { yyVAL.str = Cp852Str } case 248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1732 +//line sql.y:1735 { yyVAL.str = Cp866Str } case 249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1736 +//line sql.y:1739 { yyVAL.str = Cp932Str } case 250: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1740 +//line sql.y:1743 { yyVAL.str = Dec8Str } case 251: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1744 +//line sql.y:1747 { yyVAL.str = EucjpmsStr } case 252: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1748 +//line sql.y:1751 { yyVAL.str = EuckrStr } case 253: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1752 +//line sql.y:1755 { yyVAL.str = Gb18030Str } case 254: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1756 +//line sql.y:1759 { yyVAL.str = Gb2312Str } case 255: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1760 +//line sql.y:1763 { yyVAL.str = GbkStr } case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1764 +//line sql.y:1767 { yyVAL.str = Geostd8Str } case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1768 +//line sql.y:1771 { yyVAL.str = GreekStr } case 258: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1772 +//line sql.y:1775 { yyVAL.str = HebrewStr } case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1776 +//line sql.y:1779 { yyVAL.str = Hp8Str } case 260: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1780 +//line sql.y:1783 { yyVAL.str = Keybcs2Str } case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1784 +//line sql.y:1787 { yyVAL.str = Koi8rStr } case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1788 +//line sql.y:1791 { yyVAL.str = Koi8uStr } case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1792 +//line sql.y:1795 { yyVAL.str = Latin1Str } case 264: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1796 +//line sql.y:1799 { yyVAL.str = Latin2Str } case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1800 +//line sql.y:1803 { yyVAL.str = Latin5Str } case 266: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1804 +//line sql.y:1807 { yyVAL.str = Latin7Str } case 267: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1808 +//line sql.y:1811 { yyVAL.str = MacceStr } case 268: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1812 +//line sql.y:1815 { yyVAL.str = MacromanStr } case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1816 +//line sql.y:1819 { yyVAL.str = SjisStr } case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1820 +//line sql.y:1823 { yyVAL.str = Swe7Str } case 271: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1824 +//line sql.y:1827 { yyVAL.str = Tis620Str } case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1828 +//line sql.y:1831 { yyVAL.str = Ucs2Str } case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1832 +//line sql.y:1835 { yyVAL.str = UjisStr } case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1836 +//line sql.y:1839 { yyVAL.str = Utf16Str } case 275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1840 +//line sql.y:1843 { yyVAL.str = Utf16leStr } case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1844 +//line sql.y:1847 { yyVAL.str = Utf32Str } case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1848 +//line sql.y:1851 { yyVAL.str = Utf8Str } case 278: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1852 +//line sql.y:1855 { yyVAL.str = Utf8mb4Str } case 279: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1856 +//line sql.y:1859 { yyVAL.str = Utf8Str } case 282: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1866 +//line sql.y:1869 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } @@ -10799,7 +10730,7 @@ yydefault: case 283: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1870 +//line sql.y:1873 { yyLOCAL = NewFloatLiteral(yyDollar[1].str) } @@ -10807,7 +10738,7 @@ yydefault: case 284: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1874 +//line sql.y:1877 { yyLOCAL = NewDecimalLiteral(yyDollar[1].str) } @@ -10815,7 +10746,7 @@ yydefault: case 285: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1880 +//line sql.y:1883 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } @@ -10823,7 +10754,7 @@ yydefault: case 286: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1884 +//line sql.y:1887 { yyLOCAL = &UnaryExpr{Operator: NStringOp, Expr: NewStrLiteral(yyDollar[1].str)} } @@ -10831,7 +10762,7 @@ yydefault: case 287: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1888 +//line sql.y:1891 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewStrLiteral(yyDollar[2].str)} } @@ -10839,7 +10770,7 @@ yydefault: case 288: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1894 +//line sql.y:1897 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10847,7 +10778,7 @@ yydefault: case 289: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1898 +//line sql.y:1901 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) @@ -10856,7 +10787,7 @@ yydefault: case 290: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1905 +//line sql.y:1908 { yyLOCAL = colKeyPrimary } @@ -10864,7 +10795,7 @@ yydefault: case 291: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1909 +//line sql.y:1912 { yyLOCAL = colKeyUnique } @@ -10872,7 +10803,7 @@ yydefault: case 292: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1913 +//line sql.y:1916 { yyLOCAL = colKeyUniqueKey } @@ -10880,14 +10811,14 @@ yydefault: case 293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1917 +//line sql.y:1920 { yyLOCAL = colKey } yyVAL.union = yyLOCAL case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1923 +//line sql.y:1926 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].booleanUnion() @@ -10895,74 +10826,74 @@ yydefault: } case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1934 +//line sql.y:1937 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literalUnion() } case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1939 +//line sql.y:1942 { yyVAL.columnType = yyDollar[1].columnType } case 300: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1945 +//line sql.y:1948 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1949 +//line sql.y:1952 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1953 +//line sql.y:1956 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1957 +//line sql.y:1960 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1961 +//line sql.y:1964 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1965 +//line sql.y:1968 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 306: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1969 +//line sql.y:1972 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1973 +//line sql.y:1976 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1977 +//line sql.y:1980 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 309: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1983 +//line sql.y:1986 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10970,7 +10901,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1989 +//line sql.y:1992 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10978,7 +10909,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1995 +//line sql.y:1998 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10986,7 +10917,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2001 +//line sql.y:2004 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10994,7 +10925,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2007 +//line sql.y:2010 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -11002,43 +10933,43 @@ yydefault: } case 314: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2015 +//line sql.y:2018 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 315: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2019 +//line sql.y:2022 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2023 +//line sql.y:2026 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2027 +//line sql.y:2030 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 318: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2031 +//line sql.y:2034 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 319: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2037 +//line sql.y:2040 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2041 +//line sql.y:2044 { // CHAR BYTE is an alias for binary. See also: // https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html @@ -11046,153 +10977,153 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2047 +//line sql.y:2050 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2051 +//line sql.y:2054 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 323: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2055 +//line sql.y:2058 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2059 +//line sql.y:2062 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 325: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2063 +//line sql.y:2066 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2067 +//line sql.y:2070 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 327: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2071 +//line sql.y:2074 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2075 +//line sql.y:2078 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2079 +//line sql.y:2082 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2083 +//line sql.y:2086 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2087 +//line sql.y:2090 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2091 +//line sql.y:2094 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 333: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2095 +//line sql.y:2098 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 334: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2100 +//line sql.y:2103 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2106 +//line sql.y:2109 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2110 +//line sql.y:2113 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 337: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2114 +//line sql.y:2117 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 338: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2118 +//line sql.y:2121 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 339: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2122 +//line sql.y:2125 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2126 +//line sql.y:2129 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2130 +//line sql.y:2133 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2134 +//line sql.y:2137 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2140 +//line sql.y:2143 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, encodeSQLString(yyDollar[1].str)) } case 344: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2145 +//line sql.y:2148 { yyVAL.strs = append(yyDollar[1].strs, encodeSQLString(yyDollar[3].str)) } case 345: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Literal -//line sql.y:2150 +//line sql.y:2153 { yyLOCAL = nil } @@ -11200,20 +11131,20 @@ yydefault: case 346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:2154 +//line sql.y:2157 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2159 +//line sql.y:2162 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 348: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2163 +//line sql.y:2166 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11222,13 +11153,13 @@ yydefault: } case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2171 +//line sql.y:2174 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 350: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2175 +//line sql.y:2178 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11236,7 +11167,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2181 +//line sql.y:2184 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11246,7 +11177,7 @@ yydefault: case 352: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2189 +//line sql.y:2192 { yyLOCAL = false } @@ -11254,7 +11185,7 @@ yydefault: case 353: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2193 +//line sql.y:2196 { yyLOCAL = true } @@ -11262,7 +11193,7 @@ yydefault: case 354: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2197 +//line sql.y:2200 { yyLOCAL = false } @@ -11270,7 +11201,7 @@ yydefault: case 355: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2202 +//line sql.y:2205 { yyLOCAL = false } @@ -11278,66 +11209,66 @@ yydefault: case 356: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2206 +//line sql.y:2209 { yyLOCAL = true } yyVAL.union = yyLOCAL case 357: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2211 +//line sql.y:2214 { yyVAL.columnCharset = ColumnCharset{} } case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2215 +//line sql.y:2218 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].identifierCI.String()), Binary: yyDollar[3].booleanUnion()} } case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2219 +//line sql.y:2222 { yyVAL.columnCharset = ColumnCharset{Name: encodeSQLString(yyDollar[2].str), Binary: yyDollar[3].booleanUnion()} } case 360: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2223 +//line sql.y:2226 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].str)} } case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2227 +//line sql.y:2230 { // ASCII: Shorthand for CHARACTER SET latin1. yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: yyDollar[2].booleanUnion()} } case 362: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2232 +//line sql.y:2235 { // UNICODE: Shorthand for CHARACTER SET ucs2. yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: yyDollar[2].booleanUnion()} } case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2237 +//line sql.y:2240 { // BINARY: Shorthand for default CHARACTER SET but with binary collation yyVAL.columnCharset = ColumnCharset{Name: "", Binary: true} } case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2242 +//line sql.y:2245 { // BINARY ASCII: Shorthand for CHARACTER SET latin1 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: true} } case 365: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2247 +//line sql.y:2250 { // BINARY UNICODE: Shorthand for CHARACTER SET ucs2 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: true} @@ -11345,7 +11276,7 @@ yydefault: case 366: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2253 +//line sql.y:2256 { yyLOCAL = false } @@ -11353,33 +11284,33 @@ yydefault: case 367: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2257 +//line sql.y:2260 { yyLOCAL = true } yyVAL.union = yyLOCAL case 368: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2262 +//line sql.y:2265 { yyVAL.str = "" } case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2266 +//line sql.y:2269 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2270 +//line sql.y:2273 { yyVAL.str = encodeSQLString(yyDollar[2].str) } case 371: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexDefinition -//line sql.y:2276 +//line sql.y:2279 { yyLOCAL = &IndexDefinition{Info: yyDollar[1].indexInfoUnion(), Columns: yyDollar[3].indexColumnsUnion(), Options: yyDollar[5].indexOptionsUnion()} } @@ -11387,7 +11318,7 @@ yydefault: case 372: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2281 +//line sql.y:2284 { yyLOCAL = nil } @@ -11395,7 +11326,7 @@ yydefault: case 373: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2285 +//line sql.y:2288 { yyLOCAL = yyDollar[1].indexOptionsUnion() } @@ -11403,14 +11334,14 @@ yydefault: case 374: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2291 +//line sql.y:2294 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2295 +//line sql.y:2298 { yySLICE := (*[]*IndexOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexOptionUnion()) @@ -11418,7 +11349,7 @@ yydefault: case 376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2301 +//line sql.y:2304 { yyLOCAL = yyDollar[1].indexOptionUnion() } @@ -11426,7 +11357,7 @@ yydefault: case 377: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2305 +//line sql.y:2308 { // should not be string yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} @@ -11435,7 +11366,7 @@ yydefault: case 378: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2310 +//line sql.y:2313 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[2].str)} } @@ -11443,7 +11374,7 @@ yydefault: case 379: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2314 +//line sql.y:2317 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } @@ -11451,7 +11382,7 @@ yydefault: case 380: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2318 +//line sql.y:2321 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } @@ -11459,7 +11390,7 @@ yydefault: case 381: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2322 +//line sql.y:2325 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str) + " " + string(yyDollar[2].str), String: yyDollar[3].identifierCI.String()} } @@ -11467,7 +11398,7 @@ yydefault: case 382: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2326 +//line sql.y:2329 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -11475,27 +11406,27 @@ yydefault: case 383: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2330 +//line sql.y:2333 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL case 384: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2336 +//line sql.y:2339 { yyVAL.str = "" } case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2340 +//line sql.y:2343 { yyVAL.str = string(yyDollar[1].str) } case 386: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2346 +//line sql.y:2349 { yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI("PRIMARY"), Primary: true, Unique: true} } @@ -11503,7 +11434,7 @@ yydefault: case 387: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2350 +//line sql.y:2353 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewIdentifierCI(yyDollar[3].str), Spatial: true, Unique: false} } @@ -11511,7 +11442,7 @@ yydefault: case 388: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2354 +//line sql.y:2357 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewIdentifierCI(yyDollar[3].str), Fulltext: true, Unique: false} } @@ -11519,7 +11450,7 @@ yydefault: case 389: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2358 +//line sql.y:2361 { yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI(yyDollar[4].str), Unique: true} } @@ -11527,100 +11458,100 @@ yydefault: case 390: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2362 +//line sql.y:2365 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str), Name: NewIdentifierCI(yyDollar[2].str), Unique: false} } yyVAL.union = yyLOCAL case 391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2367 +//line sql.y:2370 { yyVAL.str = "" } case 392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2371 +//line sql.y:2374 { yyVAL.str = yyDollar[2].str } case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2377 +//line sql.y:2380 { yyVAL.str = string(yyDollar[1].str) } case 394: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2381 +//line sql.y:2384 { yyVAL.str = string(yyDollar[1].str) } case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2385 +//line sql.y:2388 { yyVAL.str = string(yyDollar[1].str) } case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2391 +//line sql.y:2394 { yyVAL.str = string(yyDollar[1].str) } case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2395 +//line sql.y:2398 { yyVAL.str = string(yyDollar[1].str) } case 398: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2400 +//line sql.y:2403 { yyVAL.str = "key" } case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2404 +//line sql.y:2407 { yyVAL.str = yyDollar[1].str } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2410 +//line sql.y:2413 { yyVAL.str = string(yyDollar[1].str) } case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2414 +//line sql.y:2417 { yyVAL.str = string(yyDollar[1].str) } case 402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2419 +//line sql.y:2422 { yyVAL.str = "" } case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2423 +//line sql.y:2426 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } case 404: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexColumn -//line sql.y:2429 +//line sql.y:2432 { yyLOCAL = []*IndexColumn{yyDollar[1].indexColumnUnion()} } yyVAL.union = yyLOCAL case 405: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2433 +//line sql.y:2436 { yySLICE := (*[]*IndexColumn)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].indexColumnUnion()) @@ -11628,7 +11559,7 @@ yydefault: case 406: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2439 +//line sql.y:2442 { yyLOCAL = &IndexColumn{Column: yyDollar[1].identifierCI, Length: yyDollar[2].literalUnion(), Direction: yyDollar[3].orderDirectionUnion()} } @@ -11636,7 +11567,7 @@ yydefault: case 407: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2443 +//line sql.y:2446 { yyLOCAL = &IndexColumn{Expression: yyDollar[2].exprUnion(), Direction: yyDollar[4].orderDirectionUnion()} } @@ -11644,7 +11575,7 @@ yydefault: case 408: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2449 +//line sql.y:2452 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } @@ -11652,7 +11583,7 @@ yydefault: case 409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2453 +//line sql.y:2456 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } @@ -11660,7 +11591,7 @@ yydefault: case 410: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2459 +//line sql.y:2462 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } @@ -11668,7 +11599,7 @@ yydefault: case 411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2463 +//line sql.y:2466 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } @@ -11676,7 +11607,7 @@ yydefault: case 412: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2469 +//line sql.y:2472 { yyLOCAL = &ForeignKeyDefinition{IndexName: NewIdentifierCI(yyDollar[3].str), Source: yyDollar[5].columnsUnion(), ReferenceDefinition: yyDollar[7].referenceDefinitionUnion()} } @@ -11684,7 +11615,7 @@ yydefault: case 413: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2475 +//line sql.y:2478 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion()} } @@ -11692,7 +11623,7 @@ yydefault: case 414: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2479 +//line sql.y:2482 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion()} } @@ -11700,7 +11631,7 @@ yydefault: case 415: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2483 +//line sql.y:2486 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion()} } @@ -11708,7 +11639,7 @@ yydefault: case 416: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2487 +//line sql.y:2490 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion(), OnUpdate: yyDollar[8].referenceActionUnion()} } @@ -11716,7 +11647,7 @@ yydefault: case 417: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2491 +//line sql.y:2494 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion(), OnDelete: yyDollar[8].referenceActionUnion()} } @@ -11724,7 +11655,7 @@ yydefault: case 418: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2496 +//line sql.y:2499 { yyLOCAL = nil } @@ -11732,7 +11663,7 @@ yydefault: case 419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2500 +//line sql.y:2503 { yyLOCAL = yyDollar[1].referenceDefinitionUnion() } @@ -11740,7 +11671,7 @@ yydefault: case 420: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2506 +//line sql.y:2509 { yyLOCAL = &CheckConstraintDefinition{Expr: yyDollar[3].exprUnion(), Enforced: yyDollar[5].booleanUnion()} } @@ -11748,7 +11679,7 @@ yydefault: case 421: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2512 +//line sql.y:2515 { yyLOCAL = yyDollar[2].matchActionUnion() } @@ -11756,7 +11687,7 @@ yydefault: case 422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2518 +//line sql.y:2521 { yyLOCAL = Full } @@ -11764,7 +11695,7 @@ yydefault: case 423: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2522 +//line sql.y:2525 { yyLOCAL = Partial } @@ -11772,7 +11703,7 @@ yydefault: case 424: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2526 +//line sql.y:2529 { yyLOCAL = Simple } @@ -11780,7 +11711,7 @@ yydefault: case 425: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2531 +//line sql.y:2534 { yyLOCAL = DefaultMatch } @@ -11788,7 +11719,7 @@ yydefault: case 426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2535 +//line sql.y:2538 { yyLOCAL = yyDollar[1].matchActionUnion() } @@ -11796,7 +11727,7 @@ yydefault: case 427: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2541 +//line sql.y:2544 { yyLOCAL = yyDollar[3].referenceActionUnion() } @@ -11804,7 +11735,7 @@ yydefault: case 428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2547 +//line sql.y:2550 { yyLOCAL = yyDollar[3].referenceActionUnion() } @@ -11812,7 +11743,7 @@ yydefault: case 429: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2553 +//line sql.y:2556 { yyLOCAL = Restrict } @@ -11820,7 +11751,7 @@ yydefault: case 430: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2557 +//line sql.y:2560 { yyLOCAL = Cascade } @@ -11828,7 +11759,7 @@ yydefault: case 431: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2561 +//line sql.y:2564 { yyLOCAL = NoAction } @@ -11836,7 +11767,7 @@ yydefault: case 432: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2565 +//line sql.y:2568 { yyLOCAL = SetDefault } @@ -11844,33 +11775,33 @@ yydefault: case 433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2569 +//line sql.y:2572 { yyLOCAL = SetNull } yyVAL.union = yyLOCAL case 434: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2574 +//line sql.y:2577 { yyVAL.str = "" } case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2578 +//line sql.y:2581 { yyVAL.str = string(yyDollar[1].str) } case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2582 +//line sql.y:2585 { yyVAL.str = string(yyDollar[1].str) } case 437: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2588 +//line sql.y:2591 { yyLOCAL = true } @@ -11878,7 +11809,7 @@ yydefault: case 438: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:2592 +//line sql.y:2595 { yyLOCAL = false } @@ -11886,7 +11817,7 @@ yydefault: case 439: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2597 +//line sql.y:2600 { yyLOCAL = true } @@ -11894,7 +11825,7 @@ yydefault: case 440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2601 +//line sql.y:2604 { yyLOCAL = yyDollar[1].booleanUnion() } @@ -11902,7 +11833,7 @@ yydefault: case 441: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2606 +//line sql.y:2609 { yyLOCAL = nil } @@ -11910,7 +11841,7 @@ yydefault: case 442: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2610 +//line sql.y:2613 { yyLOCAL = yyDollar[1].tableOptionsUnion() } @@ -11918,21 +11849,21 @@ yydefault: case 443: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2616 +//line sql.y:2619 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL case 444: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2620 +//line sql.y:2623 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableOptionUnion()) } case 445: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2624 +//line sql.y:2627 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) @@ -11940,14 +11871,14 @@ yydefault: case 446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2630 +//line sql.y:2633 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL case 447: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2634 +//line sql.y:2637 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) @@ -11955,7 +11886,7 @@ yydefault: case 448: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2640 +//line sql.y:2643 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11963,7 +11894,7 @@ yydefault: case 449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2644 +//line sql.y:2647 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11971,7 +11902,7 @@ yydefault: case 450: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2648 +//line sql.y:2651 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11979,7 +11910,7 @@ yydefault: case 451: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2652 +//line sql.y:2655 { yyLOCAL = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str, CaseSensitive: true} } @@ -11987,7 +11918,7 @@ yydefault: case 452: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2656 +//line sql.y:2659 { yyLOCAL = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str, CaseSensitive: true} } @@ -11995,7 +11926,7 @@ yydefault: case 453: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2660 +//line sql.y:2663 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12003,7 +11934,7 @@ yydefault: case 454: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2664 +//line sql.y:2667 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12011,7 +11942,7 @@ yydefault: case 455: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2668 +//line sql.y:2671 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12019,7 +11950,7 @@ yydefault: case 456: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2672 +//line sql.y:2675 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12027,7 +11958,7 @@ yydefault: case 457: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2676 +//line sql.y:2679 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } @@ -12035,7 +11966,7 @@ yydefault: case 458: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2680 +//line sql.y:2683 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } @@ -12043,7 +11974,7 @@ yydefault: case 459: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2684 +//line sql.y:2687 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12051,7 +11982,7 @@ yydefault: case 460: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2688 +//line sql.y:2691 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12059,7 +11990,7 @@ yydefault: case 461: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2692 +//line sql.y:2695 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].identifierCS.String(), CaseSensitive: true} } @@ -12067,7 +11998,7 @@ yydefault: case 462: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2696 +//line sql.y:2699 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12075,7 +12006,7 @@ yydefault: case 463: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2700 +//line sql.y:2703 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12083,7 +12014,7 @@ yydefault: case 464: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2704 +//line sql.y:2707 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12091,7 +12022,7 @@ yydefault: case 465: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2708 +//line sql.y:2711 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12099,7 +12030,7 @@ yydefault: case 466: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2712 +//line sql.y:2715 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12107,7 +12038,7 @@ yydefault: case 467: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2716 +//line sql.y:2719 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12115,7 +12046,7 @@ yydefault: case 468: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2720 +//line sql.y:2723 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12123,7 +12054,7 @@ yydefault: case 469: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2724 +//line sql.y:2727 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12131,7 +12062,7 @@ yydefault: case 470: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2728 +//line sql.y:2731 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12139,7 +12070,7 @@ yydefault: case 471: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2732 +//line sql.y:2735 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12147,7 +12078,7 @@ yydefault: case 472: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2736 +//line sql.y:2739 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12155,7 +12086,7 @@ yydefault: case 473: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2740 +//line sql.y:2743 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12163,7 +12094,7 @@ yydefault: case 474: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2744 +//line sql.y:2747 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12171,7 +12102,7 @@ yydefault: case 475: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2748 +//line sql.y:2751 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12179,7 +12110,7 @@ yydefault: case 476: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2752 +//line sql.y:2755 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12187,7 +12118,7 @@ yydefault: case 477: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2756 +//line sql.y:2759 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].identifierCI.String() + yyDollar[4].str)} } @@ -12195,57 +12126,57 @@ yydefault: case 478: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2760 +//line sql.y:2763 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2765 +//line sql.y:2768 { yyVAL.str = "" } case 480: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2769 +//line sql.y:2772 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2773 +//line sql.y:2776 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2792 +//line sql.y:2795 { yyVAL.str = yyDollar[1].identifierCI.String() } case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2796 +//line sql.y:2799 { yyVAL.str = encodeSQLString(yyDollar[1].str) } case 493: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2800 +//line sql.y:2803 { yyVAL.str = string(yyDollar[1].str) } case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2805 +//line sql.y:2808 { yyVAL.str = "" } case 496: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2811 +//line sql.y:2814 { yyLOCAL = false } @@ -12253,7 +12184,7 @@ yydefault: case 497: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2815 +//line sql.y:2818 { yyLOCAL = true } @@ -12261,7 +12192,7 @@ yydefault: case 498: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColName -//line sql.y:2820 +//line sql.y:2823 { yyLOCAL = nil } @@ -12269,27 +12200,27 @@ yydefault: case 499: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColName -//line sql.y:2824 +//line sql.y:2827 { yyLOCAL = yyDollar[2].colNameUnion() } yyVAL.union = yyLOCAL case 500: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2829 +//line sql.y:2832 { yyVAL.str = "" } case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2833 +//line sql.y:2836 { yyVAL.str = string(yyDollar[2].str) } case 502: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Literal -//line sql.y:2838 +//line sql.y:2841 { yyLOCAL = nil } @@ -12297,7 +12228,7 @@ yydefault: case 503: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2842 +//line sql.y:2845 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } @@ -12305,428 +12236,440 @@ yydefault: case 504: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2846 +//line sql.y:2849 { yyLOCAL = NewDecimalLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 505: yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2854 + { + yyVAL.str = "" + } + case 506: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2858 + { + yyVAL.str = string(yyDollar[2].str) + } + case 507: + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2851 +//line sql.y:2863 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 506: + case 508: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2855 +//line sql.y:2867 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 507: + case 509: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2859 +//line sql.y:2871 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &OrderByOption{Cols: yyDollar[5].columnsUnion()}) } - case 508: + case 510: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2863 +//line sql.y:2875 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 509: + case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2867 +//line sql.y:2879 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionsUnion()...) } - case 510: + case 512: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2871 +//line sql.y:2883 { yyLOCAL = append(append(yyDollar[1].alterOptionsUnion(), yyDollar[3].alterOptionsUnion()...), &OrderByOption{Cols: yyDollar[7].columnsUnion()}) } yyVAL.union = yyLOCAL - case 511: + case 513: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2877 +//line sql.y:2889 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 512: + case 514: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2881 +//line sql.y:2893 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 513: + case 515: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2885 +//line sql.y:2897 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 514: + case 516: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2891 +//line sql.y:2903 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 515: + case 517: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2895 +//line sql.y:2907 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 516: + case 518: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2899 +//line sql.y:2911 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 517: + case 519: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2903 +//line sql.y:2915 { yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()} } yyVAL.union = yyLOCAL - case 518: + case 520: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2907 +//line sql.y:2919 { yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 519: + case 521: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2911 +//line sql.y:2923 { yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 520: + case 522: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2915 +//line sql.y:2927 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true} } yyVAL.union = yyLOCAL - case 521: + case 523: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2919 +//line sql.y:2931 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 522: + case 524: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2923 +//line sql.y:2935 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 523: + case 525: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2927 +//line sql.y:2939 { val := false yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL - case 524: + case 526: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2932 +//line sql.y:2944 { val := true yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL - case 525: + case 527: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2937 +//line sql.y:2949 { yyLOCAL = &AlterCheck{Name: yyDollar[3].identifierCI, Enforced: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 526: + case 528: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2941 +//line sql.y:2953 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: false} } yyVAL.union = yyLOCAL - case 527: + case 529: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2945 +//line sql.y:2957 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: true} } yyVAL.union = yyLOCAL - case 528: + case 530: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2949 +//line sql.y:2961 { yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].booleanUnion(), After: yyDollar[6].colNameUnion()} } yyVAL.union = yyLOCAL - case 529: + case 531: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2953 +//line sql.y:2965 { yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 530: + case 532: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2957 +//line sql.y:2969 { yyLOCAL = &RenameColumn{OldName: yyDollar[3].colNameUnion(), NewName: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 531: + case 533: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2961 +//line sql.y:2973 { yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 532: + case 534: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2965 +//line sql.y:2977 { yyLOCAL = &KeyState{Enable: false} } yyVAL.union = yyLOCAL - case 533: + case 535: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2969 +//line sql.y:2981 { yyLOCAL = &KeyState{Enable: true} } yyVAL.union = yyLOCAL - case 534: + case 536: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2973 +//line sql.y:2985 { yyLOCAL = &TablespaceOperation{Import: false} } yyVAL.union = yyLOCAL - case 535: + case 537: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2977 +//line sql.y:2989 { yyLOCAL = &TablespaceOperation{Import: true} } yyVAL.union = yyLOCAL - case 536: + case 538: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2981 +//line sql.y:2993 { yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 537: + case 539: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2985 +//line sql.y:2997 { yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 538: + case 540: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2989 +//line sql.y:3001 { yyLOCAL = &DropKey{Type: PrimaryKeyType} } yyVAL.union = yyLOCAL - case 539: + case 541: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2993 +//line sql.y:3005 { yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 540: + case 542: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2997 +//line sql.y:3009 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 541: + case 543: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3001 +//line sql.y:3013 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 542: + case 544: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3005 +//line sql.y:3017 { yyLOCAL = &Force{} } yyVAL.union = yyLOCAL - case 543: + case 545: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3009 +//line sql.y:3021 { yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 544: + case 546: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3013 +//line sql.y:3025 { yyLOCAL = &RenameIndex{OldName: yyDollar[3].identifierCI, NewName: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 545: + case 547: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:3019 +//line sql.y:3031 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 546: + case 548: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3023 +//line sql.y:3035 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 547: + case 549: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3029 +//line sql.y:3041 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 548: + case 550: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3033 +//line sql.y:3045 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 549: + case 551: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3037 +//line sql.y:3049 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 550: + case 552: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3041 +//line sql.y:3053 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 551: + case 553: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3045 +//line sql.y:3057 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 552: + case 554: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3049 +//line sql.y:3061 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 553: + case 555: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3053 +//line sql.y:3065 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 554: + case 556: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3057 +//line sql.y:3069 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 555: + case 557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3061 +//line sql.y:3073 { yyLOCAL = &Validation{With: true} } yyVAL.union = yyLOCAL - case 556: + case 558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3065 +//line sql.y:3077 { yyLOCAL = &Validation{With: false} } yyVAL.union = yyLOCAL - case 557: + case 559: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3071 +//line sql.y:3083 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12734,10 +12677,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 558: + case 560: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3078 +//line sql.y:3090 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12745,10 +12688,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 559: + case 561: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3085 +//line sql.y:3097 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12756,28 +12699,28 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 560: + case 562: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3092 +//line sql.y:3104 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[2].partSpecUnion() yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 561: + case 563: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:3098 +//line sql.y:3110 { yyLOCAL = &AlterView{ViewName: yyDollar[7].tableName.ToViewName(), Comments: Comments(yyDollar[2].strs).Parsed(), Algorithm: yyDollar[3].str, Definer: yyDollar[4].definerUnion(), Security: yyDollar[5].str, Columns: yyDollar[8].columnsUnion(), Select: yyDollar[10].selStmtUnion(), CheckOption: yyDollar[11].str} } yyVAL.union = yyLOCAL - case 562: + case 564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3108 +//line sql.y:3120 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12785,10 +12728,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 563: + case 565: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3115 +//line sql.y:3127 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12796,10 +12739,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 564: + case 566: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3122 +//line sql.y:3134 { yyLOCAL = &AlterVschema{ Action: CreateVindexDDLAction, @@ -12812,10 +12755,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 565: + case 567: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3134 +//line sql.y:3146 { yyLOCAL = &AlterVschema{ Action: DropVindexDDLAction, @@ -12826,26 +12769,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 566: + case 568: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3144 +//line sql.y:3156 { yyLOCAL = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 567: + case 569: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3148 +//line sql.y:3160 { yyLOCAL = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 568: + case 570: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL Statement -//line sql.y:3152 +//line sql.y:3164 { yyLOCAL = &AlterVschema{ Action: AddColVindexDDLAction, @@ -12859,10 +12802,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 569: + case 571: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3165 +//line sql.y:3177 { yyLOCAL = &AlterVschema{ Action: DropColVindexDDLAction, @@ -12873,18 +12816,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 570: + case 572: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3175 +//line sql.y:3187 { yyLOCAL = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 571: + case 573: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:3179 +//line sql.y:3191 { yyLOCAL = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -12896,10 +12839,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 572: + case 574: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3190 +//line sql.y:3202 { yyLOCAL = &AlterMigration{ Type: RetryMigrationType, @@ -12907,10 +12850,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 573: + case 575: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3197 +//line sql.y:3209 { yyLOCAL = &AlterMigration{ Type: CleanupMigrationType, @@ -12918,10 +12861,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 574: + case 576: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3204 +//line sql.y:3216 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12929,10 +12872,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 575: + case 577: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3211 +//line sql.y:3223 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12941,20 +12884,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 576: + case 578: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3219 +//line sql.y:3231 { yyLOCAL = &AlterMigration{ Type: LaunchAllMigrationType, } } yyVAL.union = yyLOCAL - case 577: + case 579: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3225 +//line sql.y:3237 { yyLOCAL = &AlterMigration{ Type: CompleteMigrationType, @@ -12962,20 +12905,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 578: + case 580: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3232 +//line sql.y:3244 { yyLOCAL = &AlterMigration{ Type: CompleteAllMigrationType, } } yyVAL.union = yyLOCAL - case 579: + case 581: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3238 +//line sql.y:3250 { yyLOCAL = &AlterMigration{ Type: CancelMigrationType, @@ -12983,20 +12926,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 580: + case 582: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3245 +//line sql.y:3257 { yyLOCAL = &AlterMigration{ Type: CancelAllMigrationType, } } yyVAL.union = yyLOCAL - case 581: + case 583: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3251 +//line sql.y:3263 { yyLOCAL = &AlterMigration{ Type: ThrottleMigrationType, @@ -13006,10 +12949,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 582: + case 584: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3260 +//line sql.y:3272 { yyLOCAL = &AlterMigration{ Type: ThrottleAllMigrationType, @@ -13018,10 +12961,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 583: + case 585: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3268 +//line sql.y:3280 { yyLOCAL = &AlterMigration{ Type: UnthrottleMigrationType, @@ -13029,28 +12972,62 @@ yydefault: } } yyVAL.union = yyLOCAL - case 584: + case 586: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3275 +//line sql.y:3287 { yyLOCAL = &AlterMigration{ Type: UnthrottleAllMigrationType, } } yyVAL.union = yyLOCAL - case 585: + case 587: + yyDollar = yyS[yypt-4 : yypt+1] + var yyLOCAL Statement +//line sql.y:3293 + { + yyLOCAL = &AlterThrottler{ + Type: AlterThrottlerDisableType, + Comments: Comments(yyDollar[2].strs).Parsed(), + } + } + yyVAL.union = yyLOCAL + case 588: + yyDollar = yyS[yypt-4 : yypt+1] + var yyLOCAL Statement +//line sql.y:3300 + { + yyLOCAL = &AlterThrottler{ + Type: AlterThrottlerEnableType, + Comments: Comments(yyDollar[2].strs).Parsed(), + } + } + yyVAL.union = yyLOCAL + case 589: + yyDollar = yyS[yypt-4 : yypt+1] + var yyLOCAL Statement +//line sql.y:3307 + { + yyLOCAL = &AlterThrottler{ + Type: AlterThrottlerParamsType, + Threshold: yyDollar[4].str, + Comments: Comments(yyDollar[2].strs).Parsed(), + } + } + yyVAL.union = yyLOCAL + case 590: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3282 +//line sql.y:3317 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 586: + case 591: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3286 +//line sql.y:3321 { yyDollar[3].partitionOptionUnion().Partitions = yyDollar[4].integerUnion() yyDollar[3].partitionOptionUnion().SubPartition = yyDollar[5].subPartitionUnion() @@ -13058,10 +13035,10 @@ yydefault: yyLOCAL = yyDollar[3].partitionOptionUnion() } yyVAL.union = yyLOCAL - case 587: + case 592: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3295 +//line sql.y:3330 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13070,10 +13047,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 588: + case 593: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3303 +//line sql.y:3338 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13083,10 +13060,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 589: + case 594: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3312 +//line sql.y:3347 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13094,10 +13071,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 590: + case 595: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3319 +//line sql.y:3354 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13105,18 +13082,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 591: + case 596: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3327 +//line sql.y:3362 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 592: + case 597: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3331 +//line sql.y:3366 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13126,10 +13103,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 593: + case 598: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3340 +//line sql.y:3375 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13140,682 +13117,682 @@ yydefault: } } yyVAL.union = yyLOCAL - case 594: + case 599: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3351 +//line sql.y:3386 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 595: + case 600: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3355 +//line sql.y:3390 { yyLOCAL = yyDollar[2].partDefsUnion() } yyVAL.union = yyLOCAL - case 596: + case 601: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3360 +//line sql.y:3395 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 597: + case 602: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3364 +//line sql.y:3399 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 598: + case 603: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3369 +//line sql.y:3404 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 599: + case 604: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3373 +//line sql.y:3408 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 600: + case 605: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL TableExpr -//line sql.y:3379 +//line sql.y:3414 { yyLOCAL = &JSONTableExpr{Expr: yyDollar[3].exprUnion(), Filter: yyDollar[5].exprUnion(), Columns: yyDollar[6].jtColumnListUnion(), Alias: yyDollar[8].identifierCS} } yyVAL.union = yyLOCAL - case 601: + case 606: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3385 +//line sql.y:3420 { yyLOCAL = yyDollar[3].jtColumnListUnion() } yyVAL.union = yyLOCAL - case 602: + case 607: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3391 +//line sql.y:3426 { yyLOCAL = []*JtColumnDefinition{yyDollar[1].jtColumnDefinitionUnion()} } yyVAL.union = yyLOCAL - case 603: + case 608: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3395 +//line sql.y:3430 { yySLICE := (*[]*JtColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jtColumnDefinitionUnion()) } - case 604: + case 609: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3401 +//line sql.y:3436 { yyLOCAL = &JtColumnDefinition{JtOrdinal: &JtOrdinalColDef{Name: yyDollar[1].identifierCI}} } yyVAL.union = yyLOCAL - case 605: + case 610: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3405 +//line sql.y:3440 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 606: + case 611: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3411 +//line sql.y:3446 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 607: + case 612: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3417 +//line sql.y:3452 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 608: + case 613: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3423 +//line sql.y:3458 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 609: + case 614: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3429 +//line sql.y:3464 { jtNestedPath := &JtNestedPathColDef{Path: yyDollar[3].exprUnion(), Columns: yyDollar[4].jtColumnListUnion()} yyLOCAL = &JtColumnDefinition{JtNestedPath: jtNestedPath} } yyVAL.union = yyLOCAL - case 610: + case 615: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3435 +//line sql.y:3470 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 611: + case 616: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3439 +//line sql.y:3474 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 612: + case 617: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3443 +//line sql.y:3478 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 613: + case 618: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3447 +//line sql.y:3482 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 614: + case 619: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3453 +//line sql.y:3488 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 615: + case 620: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3459 +//line sql.y:3494 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 616: + case 621: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3465 +//line sql.y:3500 { yyLOCAL = &JtOnResponse{ResponseType: ErrorJSONType} } yyVAL.union = yyLOCAL - case 617: + case 622: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3469 +//line sql.y:3504 { yyLOCAL = &JtOnResponse{ResponseType: NullJSONType} } yyVAL.union = yyLOCAL - case 618: + case 623: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3473 +//line sql.y:3508 { yyLOCAL = &JtOnResponse{ResponseType: DefaultJSONType, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 619: + case 624: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3479 +//line sql.y:3514 { yyLOCAL = RangeType } yyVAL.union = yyLOCAL - case 620: + case 625: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3483 +//line sql.y:3518 { yyLOCAL = ListType } yyVAL.union = yyLOCAL - case 621: + case 626: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3488 +//line sql.y:3523 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 622: + case 627: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3492 +//line sql.y:3527 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 623: + case 628: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3497 +//line sql.y:3532 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 624: + case 629: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3501 +//line sql.y:3536 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 625: + case 630: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3507 +//line sql.y:3542 { yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}} } yyVAL.union = yyLOCAL - case 626: + case 631: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3511 +//line sql.y:3546 { yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 627: + case 632: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3515 +//line sql.y:3550 { yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()} } yyVAL.union = yyLOCAL - case 628: + case 633: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3519 +//line sql.y:3554 { yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 629: + case 634: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3523 +//line sql.y:3558 { yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true} } yyVAL.union = yyLOCAL - case 630: + case 635: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3527 +//line sql.y:3562 { yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 631: + case 636: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3531 +//line sql.y:3566 { yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true} } yyVAL.union = yyLOCAL - case 632: + case 637: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3535 +//line sql.y:3570 { yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 633: + case 638: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3539 +//line sql.y:3574 { yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true} } yyVAL.union = yyLOCAL - case 634: + case 639: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3543 +//line sql.y:3578 { yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 635: + case 640: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3547 +//line sql.y:3582 { yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].identifierCI}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()} } yyVAL.union = yyLOCAL - case 636: + case 641: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3551 +//line sql.y:3586 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 637: + case 642: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3555 +//line sql.y:3590 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 638: + case 643: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3559 +//line sql.y:3594 { yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 639: + case 644: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3563 +//line sql.y:3598 { yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true} } yyVAL.union = yyLOCAL - case 640: + case 645: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3567 +//line sql.y:3602 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 641: + case 646: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3571 +//line sql.y:3606 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 642: + case 647: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3575 +//line sql.y:3610 { yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 643: + case 648: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3579 +//line sql.y:3614 { yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true} } yyVAL.union = yyLOCAL - case 644: + case 649: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3583 +//line sql.y:3618 { yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 645: + case 650: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3587 +//line sql.y:3622 { yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true} } yyVAL.union = yyLOCAL - case 646: + case 651: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3591 +//line sql.y:3626 { yyLOCAL = &PartitionSpec{Action: UpgradeAction} } yyVAL.union = yyLOCAL - case 647: + case 652: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3596 +//line sql.y:3631 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 648: + case 653: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3600 +//line sql.y:3635 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 649: + case 654: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3604 +//line sql.y:3639 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 650: + case 655: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3610 +//line sql.y:3645 { yyLOCAL = []*PartitionDefinition{yyDollar[1].partDefUnion()} } yyVAL.union = yyLOCAL - case 651: + case 656: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3614 +//line sql.y:3649 { yySLICE := (*[]*PartitionDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].partDefUnion()) } - case 652: + case 657: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3620 +//line sql.y:3655 { yyVAL.partDefUnion().Options = yyDollar[2].partitionDefinitionOptionsUnion() } - case 653: + case 658: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3625 +//line sql.y:3660 { yyLOCAL = &PartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 654: + case 659: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3629 +//line sql.y:3664 { yyDollar[1].partitionDefinitionOptionsUnion().ValueRange = yyDollar[2].partitionValueRangeUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 655: + case 660: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3634 +//line sql.y:3669 { yyDollar[1].partitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 656: + case 661: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3639 +//line sql.y:3674 { yyDollar[1].partitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 657: + case 662: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3644 +//line sql.y:3679 { yyDollar[1].partitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 658: + case 663: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3649 +//line sql.y:3684 { yyDollar[1].partitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 659: + case 664: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3654 +//line sql.y:3689 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 660: + case 665: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3660 +//line sql.y:3695 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 661: + case 666: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3666 +//line sql.y:3701 { yyDollar[1].partitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 662: + case 667: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3671 +//line sql.y:3706 { yyDollar[1].partitionDefinitionOptionsUnion().SubPartitionDefinitions = yyDollar[2].subPartitionDefinitionsUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 663: + case 668: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3677 +//line sql.y:3712 { yyLOCAL = yyDollar[2].subPartitionDefinitionsUnion() } yyVAL.union = yyLOCAL - case 664: + case 669: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3683 +//line sql.y:3718 { yyLOCAL = SubPartitionDefinitions{yyDollar[1].subPartitionDefinitionUnion()} } yyVAL.union = yyLOCAL - case 665: + case 670: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3687 +//line sql.y:3722 { yySLICE := (*SubPartitionDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].subPartitionDefinitionUnion()) } - case 666: + case 671: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SubPartitionDefinition -//line sql.y:3693 +//line sql.y:3728 { yyLOCAL = &SubPartitionDefinition{Name: yyDollar[2].identifierCI, Options: yyDollar[3].subPartitionDefinitionOptionsUnion()} } yyVAL.union = yyLOCAL - case 667: + case 672: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3698 +//line sql.y:3733 { yyLOCAL = &SubPartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 668: + case 673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3702 +//line sql.y:3737 { yyDollar[1].subPartitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 669: + case 674: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3707 +//line sql.y:3742 { yyDollar[1].subPartitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 670: + case 675: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3712 +//line sql.y:3747 { yyDollar[1].subPartitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 671: + case 676: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3717 +//line sql.y:3752 { yyDollar[1].subPartitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 672: + case 677: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3722 +//line sql.y:3757 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 673: + case 678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3728 +//line sql.y:3763 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 674: + case 679: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3734 +//line sql.y:3769 { yyDollar[1].subPartitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 675: + case 680: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3741 +//line sql.y:3776 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13823,10 +13800,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 676: + case 681: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3748 +//line sql.y:3783 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13834,10 +13811,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 677: + case 682: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3755 +//line sql.y:3790 { yyLOCAL = &PartitionValueRange{ Type: InType, @@ -13845,131 +13822,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 678: + case 683: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3763 +//line sql.y:3798 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 679: + case 684: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3767 +//line sql.y:3802 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 680: + case 685: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionEngine -//line sql.y:3773 +//line sql.y:3808 { yyLOCAL = &PartitionEngine{Storage: yyDollar[1].booleanUnion(), Name: yyDollar[4].identifierCS.String()} } yyVAL.union = yyLOCAL - case 681: + case 686: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:3779 +//line sql.y:3814 { yyLOCAL = NewStrLiteral(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 682: + case 687: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3785 +//line sql.y:3820 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 683: + case 688: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3791 +//line sql.y:3826 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 684: + case 689: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3797 +//line sql.y:3832 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 685: + case 690: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3803 +//line sql.y:3838 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 686: + case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3809 +//line sql.y:3844 { yyVAL.str = yyDollar[3].identifierCS.String() } - case 687: + case 692: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinition -//line sql.y:3815 +//line sql.y:3850 { yyLOCAL = &PartitionDefinition{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 688: + case 693: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3821 +//line sql.y:3856 { yyVAL.str = "" } - case 689: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3825 +//line sql.y:3860 { yyVAL.str = "" } - case 690: + case 695: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3831 +//line sql.y:3866 { yyLOCAL = &RenameTable{TablePairs: yyDollar[3].renameTablePairsUnion()} } yyVAL.union = yyLOCAL - case 691: + case 696: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*RenameTablePair -//line sql.y:3837 +//line sql.y:3872 { yyLOCAL = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } yyVAL.union = yyLOCAL - case 692: + case 697: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3841 +//line sql.y:3876 { yySLICE := (*[]*RenameTablePair)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 693: + case 698: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3847 +//line sql.y:3882 { yyLOCAL = &DropTable{FromTables: yyDollar[6].tableNamesUnion(), IfExists: yyDollar[5].booleanUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), Temp: yyDollar[3].booleanUnion()} } yyVAL.union = yyLOCAL - case 694: + case 699: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3851 +//line sql.y:3886 { // Change this to an alter statement if yyDollar[4].identifierCI.Lowered() == "primary" { @@ -13979,1216 +13956,1216 @@ yydefault: } } yyVAL.union = yyLOCAL - case 695: + case 700: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3860 +//line sql.y:3895 { yyLOCAL = &DropView{FromTables: yyDollar[5].tableNamesUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 696: + case 701: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3864 +//line sql.y:3899 { yyLOCAL = &DropDatabase{Comments: Comments(yyDollar[2].strs).Parsed(), DBName: yyDollar[5].identifierCS, IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 697: + case 702: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3870 +//line sql.y:3905 { yyLOCAL = &TruncateTable{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 698: + case 703: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3874 +//line sql.y:3909 { yyLOCAL = &TruncateTable{Table: yyDollar[2].tableName} } yyVAL.union = yyLOCAL - case 699: + case 704: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3880 +//line sql.y:3915 { yyLOCAL = &OtherRead{} } yyVAL.union = yyLOCAL - case 700: + case 705: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3886 +//line sql.y:3921 { yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 701: + case 706: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3890 +//line sql.y:3925 { yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 702: + case 707: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3894 +//line sql.y:3929 { yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 703: + case 708: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3898 +//line sql.y:3933 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 704: + case 709: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3902 +//line sql.y:3937 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 705: + case 710: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3906 +//line sql.y:3941 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 706: + case 711: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3910 +//line sql.y:3945 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 707: + case 712: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3914 +//line sql.y:3949 { yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 708: + case 713: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3918 +//line sql.y:3953 { yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 709: + case 714: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3922 +//line sql.y:3957 { yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 710: + case 715: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3926 +//line sql.y:3961 { yyLOCAL = &Show{&ShowBasic{Command: Privilege}} } yyVAL.union = yyLOCAL - case 711: + case 716: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3930 +//line sql.y:3965 { yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 712: + case 717: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3934 +//line sql.y:3969 { yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 713: + case 718: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3938 +//line sql.y:3973 { yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 714: + case 719: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3942 +//line sql.y:3977 { yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 715: + case 720: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3946 +//line sql.y:3981 { yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 716: + case 721: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3950 +//line sql.y:3985 { yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 717: + case 722: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3954 +//line sql.y:3989 { yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 718: + case 723: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3958 +//line sql.y:3993 { yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].identifierCS, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 719: + case 724: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3962 +//line sql.y:3997 { yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 720: + case 725: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3966 +//line sql.y:4001 { yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 721: + case 726: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3970 +//line sql.y:4005 { yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 722: + case 727: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3974 +//line sql.y:4009 { yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 723: + case 728: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3978 +//line sql.y:4013 { yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 724: + case 729: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3982 +//line sql.y:4017 { yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 725: + case 730: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3986 +//line sql.y:4021 { yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 726: + case 731: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3990 +//line sql.y:4025 { yyLOCAL = &Show{&ShowBasic{Command: Engines}} } yyVAL.union = yyLOCAL - case 727: + case 732: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3994 +//line sql.y:4029 { yyLOCAL = &Show{&ShowBasic{Command: Plugins}} } yyVAL.union = yyLOCAL - case 728: + case 733: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3998 +//line sql.y:4033 { yyLOCAL = &Show{&ShowBasic{Command: GtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 729: + case 734: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4002 +//line sql.y:4037 { yyLOCAL = &Show{&ShowBasic{Command: VGtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 730: + case 735: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4006 +//line sql.y:4041 { yyLOCAL = &Show{&ShowBasic{Command: VitessVariables, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 731: + case 736: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4010 +//line sql.y:4045 { yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 732: + case 737: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4014 +//line sql.y:4049 { yyLOCAL = &ShowMigrationLogs{UUID: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 733: + case 738: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4018 +//line sql.y:4053 { yyLOCAL = &ShowThrottledApps{} } yyVAL.union = yyLOCAL - case 734: + case 739: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4022 +//line sql.y:4057 { yyLOCAL = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 735: + case 740: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4026 +//line sql.y:4061 { yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} } yyVAL.union = yyLOCAL - case 736: + case 741: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4030 +//line sql.y:4065 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} } yyVAL.union = yyLOCAL - case 737: + case 742: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4034 +//line sql.y:4069 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} } yyVAL.union = yyLOCAL - case 738: + case 743: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4038 +//line sql.y:4073 { yyLOCAL = &Show{&ShowBasic{Command: Warnings}} } yyVAL.union = yyLOCAL - case 739: + case 744: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4042 +//line sql.y:4077 { yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 740: + case 745: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4046 +//line sql.y:4081 { yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 741: + case 746: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4050 +//line sql.y:4085 { yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} } yyVAL.union = yyLOCAL - case 742: + case 747: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4057 +//line sql.y:4092 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} } yyVAL.union = yyLOCAL - case 743: + case 748: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4061 +//line sql.y:4096 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 744: + case 749: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4065 +//line sql.y:4100 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} } yyVAL.union = yyLOCAL - case 745: + case 750: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4069 +//line sql.y:4104 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 746: + case 751: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4073 +//line sql.y:4108 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 747: + case 752: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4077 +//line sql.y:4112 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 748: + case 753: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4081 +//line sql.y:4116 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 749: + case 754: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4085 +//line sql.y:4120 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 750: + case 755: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4089 +//line sql.y:4124 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 751: + case 756: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4095 +//line sql.y:4130 { yyVAL.str = "" } - case 752: + case 757: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4099 +//line sql.y:4134 { yyVAL.str = "extended " } - case 753: + case 758: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4105 +//line sql.y:4140 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 754: + case 759: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4109 +//line sql.y:4144 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 755: + case 760: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4115 +//line sql.y:4150 { yyVAL.str = string(yyDollar[1].str) } - case 756: + case 761: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4119 +//line sql.y:4154 { yyVAL.str = string(yyDollar[1].str) } - case 757: + case 762: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4125 +//line sql.y:4160 { yyVAL.identifierCS = NewIdentifierCS("") } - case 758: + case 763: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4129 +//line sql.y:4164 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 759: + case 764: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4133 +//line sql.y:4168 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 760: + case 765: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4139 +//line sql.y:4174 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 761: + case 766: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4143 +//line sql.y:4178 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 762: + case 767: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4147 +//line sql.y:4182 { yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 763: + case 768: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4153 +//line sql.y:4188 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 764: + case 769: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4157 +//line sql.y:4192 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 765: + case 770: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4163 +//line sql.y:4198 { yyVAL.empty = struct{}{} } - case 766: + case 771: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4167 +//line sql.y:4202 { yyVAL.empty = struct{}{} } - case 767: + case 772: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4171 +//line sql.y:4206 { yyVAL.empty = struct{}{} } - case 768: + case 773: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4177 +//line sql.y:4212 { yyVAL.str = string(yyDollar[1].str) } - case 769: + case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4181 +//line sql.y:4216 { yyVAL.str = string(yyDollar[1].str) } - case 770: + case 775: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4187 +//line sql.y:4222 { yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL - case 771: + case 776: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4191 +//line sql.y:4226 { yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} } yyVAL.union = yyLOCAL - case 772: + case 777: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4195 +//line sql.y:4230 { yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} } yyVAL.union = yyLOCAL - case 773: + case 778: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4202 +//line sql.y:4237 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 774: + case 779: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4206 +//line sql.y:4241 { yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) } - case 775: + case 780: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4210 +//line sql.y:4245 { yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) } - case 776: + case 781: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4214 +//line sql.y:4249 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 777: + case 782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4221 +//line sql.y:4256 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 778: + case 783: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4225 +//line sql.y:4260 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 779: + case 784: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4231 +//line sql.y:4266 { yyLOCAL = &Commit{} } yyVAL.union = yyLOCAL - case 780: + case 785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4237 +//line sql.y:4272 { yyLOCAL = &Rollback{} } yyVAL.union = yyLOCAL - case 781: + case 786: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4241 +//line sql.y:4276 { yyLOCAL = &SRollback{Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 782: + case 787: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4246 +//line sql.y:4281 { yyVAL.empty = struct{}{} } - case 783: + case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4248 +//line sql.y:4283 { yyVAL.empty = struct{}{} } - case 784: + case 789: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4251 +//line sql.y:4286 { yyVAL.empty = struct{}{} } - case 785: + case 790: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4253 +//line sql.y:4288 { yyVAL.empty = struct{}{} } - case 786: + case 791: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4257 +//line sql.y:4292 { yyLOCAL = &Savepoint{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 787: + case 792: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4263 +//line sql.y:4298 { yyLOCAL = &Release{Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 788: + case 793: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4268 +//line sql.y:4303 { yyLOCAL = EmptyType } yyVAL.union = yyLOCAL - case 789: + case 794: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4272 +//line sql.y:4307 { yyLOCAL = JSONType } yyVAL.union = yyLOCAL - case 790: + case 795: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4276 +//line sql.y:4311 { yyLOCAL = TreeType } yyVAL.union = yyLOCAL - case 791: + case 796: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4280 +//line sql.y:4315 { yyLOCAL = VitessType } yyVAL.union = yyLOCAL - case 792: + case 797: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4284 +//line sql.y:4319 { yyLOCAL = VTExplainType } yyVAL.union = yyLOCAL - case 793: + case 798: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4288 +//line sql.y:4323 { yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL - case 794: + case 799: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4292 +//line sql.y:4327 { yyLOCAL = AnalyzeType } yyVAL.union = yyLOCAL - case 795: + case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4298 +//line sql.y:4333 { yyVAL.str = yyDollar[1].str } - case 796: + case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4302 +//line sql.y:4337 { yyVAL.str = yyDollar[1].str } - case 797: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4306 +//line sql.y:4341 { yyVAL.str = yyDollar[1].str } - case 798: + case 803: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4312 +//line sql.y:4347 { yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL - case 799: + case 804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4316 +//line sql.y:4351 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 800: + case 805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4320 +//line sql.y:4355 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 801: + case 806: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4324 +//line sql.y:4359 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 802: + case 807: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4329 +//line sql.y:4364 { yyVAL.str = "" } - case 803: + case 808: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4333 +//line sql.y:4368 { yyVAL.str = yyDollar[1].identifierCI.val } - case 804: + case 809: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4337 +//line sql.y:4372 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 805: + case 810: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4343 +//line sql.y:4378 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 806: + case 811: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4347 +//line sql.y:4382 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 807: + case 812: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4353 +//line sql.y:4388 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 808: + case 813: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4357 +//line sql.y:4392 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 809: + case 814: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4363 +//line sql.y:4398 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 810: + case 815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4369 +//line sql.y:4404 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 811: + case 816: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4373 +//line sql.y:4408 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 812: + case 817: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4379 +//line sql.y:4414 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 813: + case 818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4385 +//line sql.y:4420 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 814: + case 819: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4389 +//line sql.y:4424 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 815: + case 820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4393 +//line sql.y:4428 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 816: + case 821: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4397 +//line sql.y:4432 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 817: + case 822: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4403 +//line sql.y:4438 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 818: + case 823: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4409 +//line sql.y:4444 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 819: + case 824: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4415 +//line sql.y:4450 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 820: + case 825: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4419 +//line sql.y:4454 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 821: + case 826: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4423 +//line sql.y:4458 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 822: + case 827: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4427 +//line sql.y:4462 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 823: + case 828: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4431 +//line sql.y:4466 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 824: + case 829: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4435 +//line sql.y:4470 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 825: + case 830: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4441 +//line sql.y:4476 { yyVAL.strs = []string{yyDollar[1].str} } - case 826: + case 831: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4445 +//line sql.y:4480 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 827: + case 832: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4451 +//line sql.y:4486 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 828: + case 833: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4455 +//line sql.y:4490 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 829: + case 834: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4459 +//line sql.y:4494 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 830: + case 835: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4463 +//line sql.y:4498 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 831: + case 836: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4467 +//line sql.y:4502 { yyVAL.str = string(yyDollar[1].str) } - case 832: + case 837: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4471 +//line sql.y:4506 { yyVAL.str = string(yyDollar[1].str) } - case 833: + case 838: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4475 +//line sql.y:4510 { yyVAL.str = string(yyDollar[1].str) } - case 834: + case 839: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4479 +//line sql.y:4514 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } - case 835: + case 840: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4483 +//line sql.y:4518 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 836: + case 841: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4487 +//line sql.y:4522 { yyVAL.str = string(yyDollar[1].str) } - case 837: + case 842: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4491 +//line sql.y:4526 { yyVAL.str = string(yyDollar[1].str) } - case 838: + case 843: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4495 +//line sql.y:4530 { yyVAL.str = string(yyDollar[1].str) } - case 839: + case 844: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4500 +//line sql.y:4535 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 840: + case 845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4504 +//line sql.y:4539 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 841: + case 846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4508 +//line sql.y:4543 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 842: + case 847: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4513 +//line sql.y:4548 { yyVAL.str = "" } - case 843: + case 848: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4517 +//line sql.y:4552 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 844: + case 849: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4522 +//line sql.y:4557 { setAllowComments(yylex, true) } - case 845: + case 850: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4526 +//line sql.y:4561 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 846: + case 851: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4532 +//line sql.y:4567 { yyVAL.strs = nil } - case 847: + case 852: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4536 +//line sql.y:4571 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 848: + case 853: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4542 +//line sql.y:4577 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 849: + case 854: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4546 +//line sql.y:4581 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 850: + case 855: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4550 +//line sql.y:4585 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 851: + case 856: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4555 +//line sql.y:4590 { yyVAL.str = "" } - case 852: + case 857: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4559 +//line sql.y:4594 { yyVAL.str = SQLNoCacheStr } - case 853: + case 858: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4563 +//line sql.y:4598 { yyVAL.str = SQLCacheStr } - case 854: + case 859: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4568 +//line sql.y:4603 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 855: + case 860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4572 +//line sql.y:4607 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 856: + case 861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4576 +//line sql.y:4611 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 857: + case 862: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4582 +//line sql.y:4617 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 858: + case 863: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4586 +//line sql.y:4621 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -15197,595 +15174,595 @@ yydefault: } } yyVAL.union = yyLOCAL - case 859: + case 864: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4596 +//line sql.y:4631 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 860: + case 865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4601 +//line sql.y:4636 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 861: + case 866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4605 +//line sql.y:4640 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 862: + case 867: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4611 +//line sql.y:4646 { yyLOCAL = &DeallocateStmt{Type: DeallocateType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 863: + case 868: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4615 +//line sql.y:4650 { yyLOCAL = &DeallocateStmt{Type: DropType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 864: + case 869: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4620 +//line sql.y:4655 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 865: + case 870: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4624 +//line sql.y:4659 { yyLOCAL = yyDollar[1].selectExprsUnion() } yyVAL.union = yyLOCAL - case 866: + case 871: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4629 +//line sql.y:4664 { yyVAL.strs = nil } - case 867: + case 872: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4633 +//line sql.y:4668 { yyVAL.strs = []string{yyDollar[1].str} } - case 868: + case 873: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4637 +//line sql.y:4672 { // 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 869: + case 874: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4641 +//line sql.y:4676 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 870: + case 875: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4645 +//line sql.y:4680 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 871: + case 876: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4651 +//line sql.y:4686 { yyVAL.str = SQLNoCacheStr } - case 872: + case 877: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4655 +//line sql.y:4690 { yyVAL.str = SQLCacheStr } - case 873: + case 878: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4659 +//line sql.y:4694 { yyVAL.str = DistinctStr } - case 874: + case 879: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4663 +//line sql.y:4698 { yyVAL.str = DistinctStr } - case 875: + case 880: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4667 +//line sql.y:4702 { yyVAL.str = StraightJoinHint } - case 876: + case 881: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4671 +//line sql.y:4706 { yyVAL.str = SQLCalcFoundRowsStr } - case 877: + case 882: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4675 +//line sql.y:4710 { yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway } - case 878: + case 883: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4681 +//line sql.y:4716 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 879: + case 884: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4685 +//line sql.y:4720 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 880: + case 885: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4691 +//line sql.y:4726 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 881: + case 886: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4695 +//line sql.y:4730 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 882: + case 887: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4699 +//line sql.y:4734 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 883: + case 888: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4703 +//line sql.y:4738 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 884: + case 889: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4708 +//line sql.y:4743 { yyVAL.identifierCI = IdentifierCI{} } - case 885: + case 890: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4712 +//line sql.y:4747 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 886: + case 891: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4716 +//line sql.y:4751 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 888: + case 893: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4723 +//line sql.y:4758 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 889: + case 894: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4728 +//line sql.y:4763 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 890: + case 895: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4732 +//line sql.y:4767 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 891: + case 896: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4738 +//line sql.y:4773 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 892: + case 897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4744 +//line sql.y:4779 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 893: + case 898: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4748 +//line sql.y:4783 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 896: + case 901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4758 +//line sql.y:4793 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 897: + case 902: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4762 +//line sql.y:4797 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 898: + case 903: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4766 +//line sql.y:4801 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 899: + case 904: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4770 +//line sql.y:4805 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 900: + case 905: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4776 +//line sql.y:4811 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 901: + case 906: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4780 +//line sql.y:4815 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[3].selStmtUnion()} } yyVAL.union = yyLOCAL - case 902: + case 907: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4786 +//line sql.y:4821 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 903: + case 908: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4790 +//line sql.y:4825 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 904: + case 909: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4795 +//line sql.y:4830 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 905: + case 910: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4799 +//line sql.y:4834 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 906: + case 911: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4804 +//line sql.y:4839 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 907: + case 912: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4808 +//line sql.y:4843 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 908: + case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4814 +//line sql.y:4849 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 909: + case 914: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4818 +//line sql.y:4853 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 910: + case 915: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4824 +//line sql.y:4859 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 911: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4828 +//line sql.y:4863 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 912: + case 917: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4834 +//line sql.y:4869 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 913: + case 918: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4838 +//line sql.y:4873 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 914: + case 919: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4842 +//line sql.y:4877 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 915: + case 920: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4846 +//line sql.y:4881 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 916: + case 921: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:4852 +//line sql.y:4887 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 917: + case 922: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4856 +//line sql.y:4891 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 918: + case 923: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4869 +//line sql.y:4904 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 919: + case 924: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4873 +//line sql.y:4908 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 920: + case 925: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4877 +//line sql.y:4912 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 921: + case 926: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4881 +//line sql.y:4916 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 922: + case 927: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4887 +//line sql.y:4922 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 923: + case 928: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4889 +//line sql.y:4924 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 924: + case 929: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4893 +//line sql.y:4928 { yyVAL.joinCondition = &JoinCondition{} } - case 925: + case 930: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4895 +//line sql.y:4930 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 926: + case 931: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4899 +//line sql.y:4934 { yyVAL.joinCondition = &JoinCondition{} } - case 927: + case 932: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4901 +//line sql.y:4936 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 928: + case 933: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4904 +//line sql.y:4939 { yyVAL.empty = struct{}{} } - case 929: + case 934: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4906 +//line sql.y:4941 { yyVAL.empty = struct{}{} } - case 930: + case 935: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4909 +//line sql.y:4944 { yyVAL.identifierCS = NewIdentifierCS("") } - case 931: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4913 +//line sql.y:4948 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 932: + case 937: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4917 +//line sql.y:4952 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 934: + case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4924 +//line sql.y:4959 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 935: + case 940: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4930 +//line sql.y:4965 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 936: + case 941: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4934 +//line sql.y:4969 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 937: + case 942: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4938 +//line sql.y:4973 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 938: + case 943: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4944 +//line sql.y:4979 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 939: + case 944: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4950 +//line sql.y:4985 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 940: + case 945: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4954 +//line sql.y:4989 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 941: + case 946: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4958 +//line sql.y:4993 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 942: + case 947: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4962 +//line sql.y:4997 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 943: + case 948: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4968 +//line sql.y:5003 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 944: + case 949: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4972 +//line sql.y:5007 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -15794,593 +15771,593 @@ yydefault: } } yyVAL.union = yyLOCAL - case 945: + case 950: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4982 +//line sql.y:5017 { yyVAL.tableName = yyDollar[2].tableName } - case 946: + case 951: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4986 +//line sql.y:5021 { yyVAL.tableName = yyDollar[1].tableName } - case 947: + case 952: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4992 +//line sql.y:5027 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 948: + case 953: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4996 +//line sql.y:5031 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 949: + case 954: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5002 +//line sql.y:5037 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 950: + case 955: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5007 +//line sql.y:5042 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 951: + case 956: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5011 +//line sql.y:5046 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 952: + case 957: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5017 +//line sql.y:5052 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 953: + case 958: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5021 +//line sql.y:5056 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 954: + case 959: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5027 +//line sql.y:5062 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 955: + case 960: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5031 +//line sql.y:5066 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 956: + case 961: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5035 +//line sql.y:5070 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 957: + case 962: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5039 +//line sql.y:5074 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 958: + case 963: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5044 +//line sql.y:5079 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 959: + case 964: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5048 +//line sql.y:5083 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 960: + case 965: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5052 +//line sql.y:5087 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 961: + case 966: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5056 +//line sql.y:5091 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 962: + case 967: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5062 +//line sql.y:5097 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 963: + case 968: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5066 +//line sql.y:5101 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 964: + case 969: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5073 +//line sql.y:5108 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 965: + case 970: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5077 +//line sql.y:5112 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 966: + case 971: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5081 +//line sql.y:5116 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 967: + case 972: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5085 +//line sql.y:5120 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 968: + case 973: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5089 +//line sql.y:5124 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 969: + case 974: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5093 +//line sql.y:5128 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 970: + case 975: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5097 +//line sql.y:5132 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 971: + case 976: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5103 +//line sql.y:5138 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 972: + case 977: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5107 +//line sql.y:5142 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 973: + case 978: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5111 +//line sql.y:5146 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 974: + case 979: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5115 +//line sql.y:5150 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 975: + case 980: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5121 +//line sql.y:5156 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 976: + case 981: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5125 +//line sql.y:5160 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 977: + case 982: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5129 +//line sql.y:5164 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 978: + case 983: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5133 +//line sql.y:5168 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 979: + case 984: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5137 +//line sql.y:5172 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 980: + case 985: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5141 +//line sql.y:5176 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 981: + case 986: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5145 +//line sql.y:5180 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 982: + case 987: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5149 +//line sql.y:5184 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 983: + case 988: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5153 +//line sql.y:5188 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 984: + case 989: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5157 +//line sql.y:5192 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 985: + case 990: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5161 +//line sql.y:5196 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 986: + case 991: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5167 +//line sql.y:5202 { } - case 987: + case 992: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5170 +//line sql.y:5205 { } - case 988: + case 993: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5176 +//line sql.y:5211 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 989: + case 994: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5180 +//line sql.y:5215 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 990: + case 995: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5184 +//line sql.y:5219 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 991: + case 996: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5188 +//line sql.y:5223 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 992: + case 997: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5192 +//line sql.y:5227 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 993: + case 998: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5196 +//line sql.y:5231 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 994: + case 999: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5200 +//line sql.y:5235 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 995: + case 1000: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5204 +//line sql.y:5239 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 996: + case 1001: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5208 +//line sql.y:5243 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 997: + case 1002: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5212 +//line sql.y:5247 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 998: + case 1003: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5216 +//line sql.y:5251 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 999: + case 1004: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5220 +//line sql.y:5255 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1000: + case 1005: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5224 +//line sql.y:5259 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1001: + case 1006: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5230 +//line sql.y:5265 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1002: + case 1007: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5234 +//line sql.y:5269 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1003: + case 1008: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5238 +//line sql.y:5273 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1004: + case 1009: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5242 +//line sql.y:5277 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1005: + case 1010: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5246 +//line sql.y:5281 { yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1006: + case 1011: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5250 +//line sql.y:5285 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1007: + case 1012: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5254 +//line sql.y:5289 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1008: + case 1013: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5258 +//line sql.y:5293 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1009: + case 1014: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5262 +//line sql.y:5297 { yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL - case 1010: + case 1015: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5266 +//line sql.y:5301 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1011: + case 1016: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5270 +//line sql.y:5305 { yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1012: + case 1017: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5274 +//line sql.y:5309 { yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1013: + case 1018: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5278 +//line sql.y:5313 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1014: + case 1019: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5282 +//line sql.y:5317 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1015: + case 1020: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5286 +//line sql.y:5321 { yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1016: + case 1021: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5290 +//line sql.y:5325 { yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL - case 1017: + case 1022: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5294 +//line sql.y:5329 { yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1023: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5298 +//line sql.y:5333 { yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1019: + case 1024: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5302 +//line sql.y:5337 { yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1020: + case 1025: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5306 +//line sql.y:5341 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -16389,18 +16366,18 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1021: + case 1026: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5314 +//line sql.y:5349 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1022: + case 1027: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5318 +//line sql.y:5353 { // INTERVAL can trigger a shift / reduce conflict. We want // to shift here for the interval rule. In case we do have @@ -16409,2192 +16386,2192 @@ yydefault: yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1023: + case 1028: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5326 +//line sql.y:5361 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1024: + case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5330 +//line sql.y:5365 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1025: + case 1030: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5334 +//line sql.y:5369 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1026: + case 1031: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5340 +//line sql.y:5375 { yyLOCAL = &IntervalExpr{Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].identifierCI.String()} } yyVAL.union = yyLOCAL - case 1027: + case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5346 +//line sql.y:5381 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1028: + case 1033: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5350 +//line sql.y:5385 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1029: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5356 +//line sql.y:5391 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1035: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5360 +//line sql.y:5395 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1031: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5366 +//line sql.y:5401 { yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL - case 1032: + case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5370 +//line sql.y:5405 { yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL - case 1033: + case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5374 +//line sql.y:5409 { yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL - case 1034: + case 1039: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5380 +//line sql.y:5415 { yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL - case 1035: + case 1040: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5384 +//line sql.y:5419 { yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL - case 1036: + case 1041: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5391 +//line sql.y:5426 { yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL - case 1037: + case 1042: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5395 +//line sql.y:5430 { yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL - case 1038: + case 1043: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5399 +//line sql.y:5434 { yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL - case 1039: + case 1044: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5403 +//line sql.y:5438 { yyLOCAL = RankExprType } yyVAL.union = yyLOCAL - case 1040: + case 1045: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5407 +//line sql.y:5442 { yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL - case 1041: + case 1046: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5413 +//line sql.y:5448 { yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL - case 1042: + case 1047: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5417 +//line sql.y:5452 { yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL - case 1043: + case 1048: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5421 +//line sql.y:5456 { yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL - case 1044: + case 1049: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5425 +//line sql.y:5460 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1045: + case 1050: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5429 +//line sql.y:5464 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1046: + case 1051: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5435 +//line sql.y:5470 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1047: + case 1052: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5439 +//line sql.y:5474 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1048: + case 1053: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5444 +//line sql.y:5479 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1049: + case 1054: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5448 +//line sql.y:5483 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1050: + case 1055: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5454 +//line sql.y:5489 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1051: + case 1056: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5458 +//line sql.y:5493 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1052: + case 1057: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5463 +//line sql.y:5498 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1053: + case 1058: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5467 +//line sql.y:5502 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1054: + case 1059: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5472 +//line sql.y:5507 { } - case 1055: + case 1060: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5475 +//line sql.y:5510 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1056: + case 1061: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5481 +//line sql.y:5516 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1062: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5487 +//line sql.y:5522 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1063: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5491 +//line sql.y:5526 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1059: + case 1064: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5496 +//line sql.y:5531 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1061: + case 1066: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5503 +//line sql.y:5538 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1062: + case 1067: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5509 +//line sql.y:5544 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1063: + case 1068: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5513 +//line sql.y:5548 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1064: + case 1069: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5519 +//line sql.y:5554 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1065: + case 1070: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5523 +//line sql.y:5558 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1066: + case 1071: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5529 +//line sql.y:5564 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1067: + case 1072: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5533 +//line sql.y:5568 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1068: + case 1073: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5538 +//line sql.y:5573 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1070: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5545 +//line sql.y:5580 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1071: + case 1076: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5551 +//line sql.y:5586 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1072: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5555 +//line sql.y:5590 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1073: + case 1078: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5561 +//line sql.y:5596 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1074: + case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5567 +//line sql.y:5602 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1075: + case 1080: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5571 +//line sql.y:5606 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1076: + case 1081: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5577 +//line sql.y:5612 { yyVAL.str = "" } - case 1077: + case 1082: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5581 +//line sql.y:5616 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1078: + case 1083: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5587 +//line sql.y:5622 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1079: + case 1084: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5591 +//line sql.y:5626 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1080: + case 1085: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5598 +//line sql.y:5633 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1081: + case 1086: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5602 +//line sql.y:5637 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1082: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5606 +//line sql.y:5641 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1083: + case 1088: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5610 +//line sql.y:5645 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1084: + case 1089: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5616 +//line sql.y:5651 { yyLOCAL = EqualOp } yyVAL.union = yyLOCAL - case 1085: + case 1090: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5620 +//line sql.y:5655 { yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL - case 1086: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5624 +//line sql.y:5659 { yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL - case 1087: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5628 +//line sql.y:5663 { yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL - case 1088: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5632 +//line sql.y:5667 { yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL - case 1089: + case 1094: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5636 +//line sql.y:5671 { yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL - case 1090: + case 1095: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5640 +//line sql.y:5675 { yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL - case 1091: + case 1096: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5646 +//line sql.y:5681 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1092: + case 1097: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5650 +//line sql.y:5685 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1093: + case 1098: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5654 +//line sql.y:5689 { yyLOCAL = ListArg(yyDollar[1].str[2:]) bindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1094: + case 1099: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5661 +//line sql.y:5696 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1095: + case 1100: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5667 +//line sql.y:5702 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1096: + case 1101: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5671 +//line sql.y:5706 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1097: + case 1102: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5681 +//line sql.y:5716 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1098: + case 1103: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5685 +//line sql.y:5720 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1099: + case 1104: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5695 +//line sql.y:5730 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1100: + case 1105: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5699 +//line sql.y:5734 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1101: + case 1106: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5703 +//line sql.y:5738 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1102: + case 1107: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5707 +//line sql.y:5742 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1103: + case 1108: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5711 +//line sql.y:5746 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1104: + case 1109: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5715 +//line sql.y:5750 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1105: + case 1110: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5719 +//line sql.y:5754 { yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1106: + case 1111: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5723 +//line sql.y:5758 { yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 1107: + case 1112: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:5727 +//line sql.y:5762 { yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1108: + case 1113: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5731 +//line sql.y:5766 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1109: + case 1114: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5742 +//line sql.y:5777 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL - case 1110: + case 1115: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5746 +//line sql.y:5781 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1111: + case 1116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5752 +//line sql.y:5787 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL - case 1112: + case 1117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5756 +//line sql.y:5791 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1113: + case 1118: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5761 +//line sql.y:5796 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1114: + case 1119: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5765 +//line sql.y:5800 { yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL - case 1115: + case 1120: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5769 +//line sql.y:5804 { yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1116: + case 1121: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5773 +//line sql.y:5808 { yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1117: + case 1122: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5777 +//line sql.y:5812 { yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1118: + case 1123: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5781 +//line sql.y:5816 { yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1119: + case 1124: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5785 +//line sql.y:5820 { yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1120: + case 1125: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5789 +//line sql.y:5824 { yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1121: + case 1126: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5793 +//line sql.y:5828 { yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1122: + case 1127: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5797 +//line sql.y:5832 { yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1123: + case 1128: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5801 +//line sql.y:5836 { yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1124: + case 1129: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5805 +//line sql.y:5840 { yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1125: + case 1130: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5809 +//line sql.y:5844 { yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1126: + case 1131: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5813 +//line sql.y:5848 { yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1127: + case 1132: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5817 +//line sql.y:5852 { yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1128: + case 1133: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5821 +//line sql.y:5856 { yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1129: + case 1134: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5825 +//line sql.y:5860 { yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1130: + case 1135: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5829 +//line sql.y:5864 { yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL - case 1131: + case 1136: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5833 +//line sql.y:5868 { yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1132: + case 1137: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5837 +//line sql.y:5872 { yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1133: + case 1138: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5841 +//line sql.y:5876 { yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1134: + case 1139: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5845 +//line sql.y:5880 { yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1140: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5849 +//line sql.y:5884 { yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1136: + case 1141: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5853 +//line sql.y:5888 { yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1137: + case 1142: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5857 +//line sql.y:5892 { yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1143: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5861 +//line sql.y:5896 { yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1139: + case 1144: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5865 +//line sql.y:5900 { yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1140: + case 1145: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5869 +//line sql.y:5904 { yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1141: + case 1146: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5873 +//line sql.y:5908 { yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1142: + case 1147: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5877 +//line sql.y:5912 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1143: + case 1148: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5881 +//line sql.y:5916 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1144: + case 1149: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5885 +//line sql.y:5920 { yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1145: + case 1150: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5889 +//line sql.y:5924 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1146: + case 1151: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5893 +//line sql.y:5928 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1147: + case 1152: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5897 +//line sql.y:5932 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1148: + case 1153: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5901 +//line sql.y:5936 { yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1149: + case 1154: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5905 +//line sql.y:5940 { yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1150: + case 1155: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5909 +//line sql.y:5944 { yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1151: + case 1156: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5913 +//line sql.y:5948 { yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL - case 1152: + case 1157: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5917 +//line sql.y:5952 { yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1153: + case 1158: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5921 +//line sql.y:5956 { yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1154: + case 1159: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5925 +//line sql.y:5960 { yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1155: + case 1160: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5929 +//line sql.y:5964 { yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1156: + case 1161: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5933 +//line sql.y:5968 { yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1157: + case 1162: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5937 +//line sql.y:5972 { yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1158: + case 1163: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5941 +//line sql.y:5976 { yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1159: + case 1164: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5945 +//line sql.y:5980 { yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL - case 1160: + case 1165: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5949 +//line sql.y:5984 { yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1161: + case 1166: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5953 +//line sql.y:5988 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1162: + case 1167: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5957 +//line sql.y:5992 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1163: + case 1168: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5961 +//line sql.y:5996 { yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1164: + case 1169: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5965 +//line sql.y:6000 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1165: + case 1170: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:5969 +//line sql.y:6004 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1166: + case 1171: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5973 +//line sql.y:6008 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1167: + case 1172: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5977 +//line sql.y:6012 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1168: + case 1173: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5981 +//line sql.y:6016 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1169: + case 1174: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:5985 +//line sql.y:6020 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1170: + case 1175: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5989 +//line sql.y:6024 { yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1171: + case 1176: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5993 +//line sql.y:6028 { yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1172: + case 1177: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5997 +//line sql.y:6032 { yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1173: + case 1178: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6001 +//line sql.y:6036 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1174: + case 1179: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6005 +//line sql.y:6040 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1175: + case 1180: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6009 +//line sql.y:6044 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1176: + case 1181: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6013 +//line sql.y:6048 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1177: + case 1182: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6017 +//line sql.y:6052 { yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1178: + case 1183: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6021 +//line sql.y:6056 { yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1179: + case 1184: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6025 +//line sql.y:6060 { yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1185: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6029 +//line sql.y:6064 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1181: + case 1186: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6033 +//line sql.y:6068 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1182: + case 1187: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6037 +//line sql.y:6072 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1183: + case 1188: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6041 +//line sql.y:6076 { yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1184: + case 1189: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6045 +//line sql.y:6080 { yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1185: + case 1190: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6049 +//line sql.y:6084 { yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1186: + case 1191: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6053 +//line sql.y:6088 { yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1187: + case 1192: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6057 +//line sql.y:6092 { yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1188: + case 1193: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6061 +//line sql.y:6096 { yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1189: + case 1194: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6065 +//line sql.y:6100 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1190: + case 1195: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6069 +//line sql.y:6104 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1195: + case 1200: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6079 +//line sql.y:6114 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1196: + case 1201: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6083 +//line sql.y:6118 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1197: + case 1202: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6087 +//line sql.y:6122 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1198: + case 1203: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6091 +//line sql.y:6126 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1199: + case 1204: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6097 +//line sql.y:6132 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1200: + case 1205: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6101 +//line sql.y:6136 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1201: + case 1206: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6107 +//line sql.y:6142 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1202: + case 1207: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6111 +//line sql.y:6146 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1203: + case 1208: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6115 +//line sql.y:6150 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1204: + case 1209: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6119 +//line sql.y:6154 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1205: + case 1210: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6123 +//line sql.y:6158 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1206: + case 1211: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6128 +//line sql.y:6163 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1207: + case 1212: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6132 +//line sql.y:6167 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1208: + case 1213: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6136 +//line sql.y:6171 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1214: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6140 +//line sql.y:6175 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1215: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6144 +//line sql.y:6179 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1211: + case 1216: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6148 +//line sql.y:6183 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1217: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6153 +//line sql.y:6188 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1218: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6157 +//line sql.y:6192 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1219: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6161 +//line sql.y:6196 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1220: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6165 +//line sql.y:6200 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1221: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6172 +//line sql.y:6207 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1222: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6176 +//line sql.y:6211 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1223: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6182 +//line sql.y:6217 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1219: + case 1224: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6186 +//line sql.y:6221 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1225: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6190 +//line sql.y:6225 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1221: + case 1226: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6194 +//line sql.y:6229 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1227: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6200 +//line sql.y:6235 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1228: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6204 +//line sql.y:6239 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1229: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6208 +//line sql.y:6243 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1230: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6212 +//line sql.y:6247 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1226: + case 1231: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6216 +//line sql.y:6251 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1227: + case 1232: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6220 +//line sql.y:6255 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1228: + case 1233: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6224 +//line sql.y:6259 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1234: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6229 +//line sql.y:6264 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1230: + case 1235: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6233 +//line sql.y:6268 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1231: + case 1236: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6239 +//line sql.y:6274 { } - case 1232: + case 1237: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6241 +//line sql.y:6276 { yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL - case 1233: + case 1238: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6245 +//line sql.y:6280 { yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL - case 1234: + case 1239: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6249 +//line sql.y:6284 { yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL - case 1235: + case 1240: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6253 +//line sql.y:6288 { yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL - case 1236: + case 1241: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6257 +//line sql.y:6292 { yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL - case 1237: + case 1242: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6261 +//line sql.y:6296 { yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL - case 1238: + case 1243: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6265 +//line sql.y:6300 { yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL - case 1239: + case 1244: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6269 +//line sql.y:6304 { yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL - case 1240: + case 1245: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6273 +//line sql.y:6308 { yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL - case 1241: + case 1246: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6277 +//line sql.y:6312 { yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL - case 1242: + case 1247: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6281 +//line sql.y:6316 { yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL - case 1243: + case 1248: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6287 +//line sql.y:6322 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1244: + case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6291 +//line sql.y:6326 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1245: + case 1250: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6295 +//line sql.y:6330 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1246: + case 1251: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6299 +//line sql.y:6334 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1247: + case 1252: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6303 +//line sql.y:6338 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1248: + case 1253: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6307 +//line sql.y:6342 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1249: + case 1254: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6311 +//line sql.y:6346 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1250: + case 1255: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6315 +//line sql.y:6350 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1251: + case 1256: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6319 +//line sql.y:6354 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1254: + case 1259: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6329 +//line sql.y:6364 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1255: + case 1260: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6333 +//line sql.y:6368 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1256: + case 1261: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6337 +//line sql.y:6372 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1257: + case 1262: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6341 +//line sql.y:6376 { yyLOCAL = NewArgument(yyDollar[2].str[1:]) bindVariable(yylex, yyDollar[2].str[1:]) } yyVAL.union = yyLOCAL - case 1258: + case 1263: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6352 +//line sql.y:6387 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1259: + case 1264: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6356 +//line sql.y:6391 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1260: + case 1265: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6360 +//line sql.y:6395 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1261: + case 1266: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6364 +//line sql.y:6399 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1262: + case 1267: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6368 +//line sql.y:6403 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1263: + case 1268: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6374 +//line sql.y:6409 { yyLOCAL = NoOption } yyVAL.union = yyLOCAL - case 1264: + case 1269: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6378 +//line sql.y:6413 { yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL - case 1265: + case 1270: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6382 +//line sql.y:6417 { yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL - case 1266: + case 1271: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6386 +//line sql.y:6421 { yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL - case 1267: + case 1272: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6390 +//line sql.y:6425 { yyLOCAL = QueryExpansionOpt } yyVAL.union = yyLOCAL - case 1268: + case 1273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6396 +//line sql.y:6431 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 1269: + case 1274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6400 +//line sql.y:6435 { yyVAL.str = string(yyDollar[1].str) } - case 1270: + case 1275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6404 +//line sql.y:6439 { yyVAL.str = string(yyDollar[1].str) } - case 1271: + case 1276: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6410 +//line sql.y:6445 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1272: + case 1277: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6414 +//line sql.y:6449 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1273: + case 1278: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6418 +//line sql.y:6453 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1274: + case 1279: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6424 +//line sql.y:6459 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1275: + case 1280: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6428 +//line sql.y:6463 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL - case 1276: + case 1281: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6432 +//line sql.y:6467 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1277: + case 1282: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6436 +//line sql.y:6471 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1278: + case 1283: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6440 +//line sql.y:6475 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL - case 1279: + case 1284: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6446 +//line sql.y:6481 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1280: + case 1285: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6450 +//line sql.y:6485 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1281: + case 1286: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6454 +//line sql.y:6489 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1282: + case 1287: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6458 +//line sql.y:6493 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1283: + case 1288: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6462 +//line sql.y:6497 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1284: + case 1289: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6466 +//line sql.y:6501 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1285: + case 1290: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6470 +//line sql.y:6505 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1286: + case 1291: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6474 +//line sql.y:6509 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1287: + case 1292: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6478 +//line sql.y:6513 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1288: + case 1293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6482 +//line sql.y:6517 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1289: + case 1294: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:6488 +//line sql.y:6523 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1290: + case 1295: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:6492 +//line sql.y:6527 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1291: + case 1296: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6497 +//line sql.y:6532 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1292: + case 1297: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6501 +//line sql.y:6536 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1293: + case 1298: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6506 +//line sql.y:6541 { yyVAL.str = string("") } - case 1294: + case 1299: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6510 +//line sql.y:6545 { yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str) } - case 1295: + case 1300: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:6516 +//line sql.y:6551 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1296: + case 1301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6520 +//line sql.y:6555 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1297: + case 1302: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:6526 +//line sql.y:6561 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1298: + case 1303: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6531 +//line sql.y:6566 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1299: + case 1304: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6535 +//line sql.y:6570 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1300: + case 1305: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6541 +//line sql.y:6576 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1301: + case 1306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6545 +//line sql.y:6580 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1302: + case 1307: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:6549 +//line sql.y:6584 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1303: + case 1308: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:6553 +//line sql.y:6588 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1304: + case 1309: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6559 +//line sql.y:6594 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1305: + case 1310: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6563 +//line sql.y:6598 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1306: + case 1311: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6569 +//line sql.y:6604 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -18604,427 +18581,427 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1307: + case 1312: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6578 +//line sql.y:6613 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1308: + case 1313: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6582 +//line sql.y:6617 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1309: + case 1314: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:6588 +//line sql.y:6623 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1310: + case 1315: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:6592 +//line sql.y:6627 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1311: + case 1316: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6597 +//line sql.y:6632 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1312: + case 1317: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6601 +//line sql.y:6636 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1313: + case 1318: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:6607 +//line sql.y:6642 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1314: + case 1319: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6613 +//line sql.y:6648 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1315: + case 1320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6617 +//line sql.y:6652 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1316: + case 1321: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6622 +//line sql.y:6657 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1317: + case 1322: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6626 +//line sql.y:6661 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1318: + case 1323: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6631 +//line sql.y:6666 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1319: + case 1324: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6635 +//line sql.y:6670 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1320: + case 1325: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6641 +//line sql.y:6676 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1321: + case 1326: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6647 +//line sql.y:6682 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1322: + case 1327: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6651 +//line sql.y:6686 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1323: + case 1328: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:6657 +//line sql.y:6692 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1324: + case 1329: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6662 +//line sql.y:6697 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1325: + case 1330: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6666 +//line sql.y:6701 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1326: + case 1331: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6670 +//line sql.y:6705 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1327: + case 1332: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:6675 +//line sql.y:6710 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1328: + case 1333: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:6679 +//line sql.y:6714 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1329: + case 1334: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:6685 +//line sql.y:6720 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1330: + case 1335: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6689 +//line sql.y:6724 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1331: + case 1336: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6693 +//line sql.y:6728 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1332: + case 1337: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6698 +//line sql.y:6733 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1333: + case 1338: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6702 +//line sql.y:6737 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1334: + case 1339: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6706 +//line sql.y:6741 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1340: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6710 +//line sql.y:6745 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1336: + case 1341: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6714 +//line sql.y:6749 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1337: + case 1342: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6721 +//line sql.y:6756 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 1338: + case 1343: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6725 +//line sql.y:6760 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 1339: + case 1344: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6729 +//line sql.y:6764 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 1340: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6733 +//line sql.y:6768 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 1341: + case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6739 +//line sql.y:6774 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1342: + case 1347: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6743 +//line sql.y:6778 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1343: + case 1348: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6747 +//line sql.y:6782 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1344: + case 1349: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6751 +//line sql.y:6786 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1345: + case 1350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6756 +//line sql.y:6791 { yyVAL.str = "" } - case 1346: + case 1351: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6760 +//line sql.y:6795 { yyVAL.str = string(yyDollar[3].str) } - case 1347: + case 1352: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6764 +//line sql.y:6799 { yyVAL.str = string(yyDollar[3].str) } - case 1348: + case 1353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6768 +//line sql.y:6803 { yyVAL.str = string(yyDollar[3].str) } - case 1349: + case 1354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6773 +//line sql.y:6808 { yyVAL.str = "" } - case 1350: + case 1355: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6777 +//line sql.y:6812 { yyVAL.str = yyDollar[3].str } - case 1351: + case 1356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6783 +//line sql.y:6818 { yyVAL.str = string(yyDollar[1].str) } - case 1352: + case 1357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6787 +//line sql.y:6822 { yyVAL.str = string(yyDollar[1].str) } - case 1353: + case 1358: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6792 +//line sql.y:6827 { yyVAL.str = "" } - case 1354: + case 1359: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:6796 +//line sql.y:6831 { yyVAL.str = yyDollar[2].str } - case 1355: + case 1360: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6801 +//line sql.y:6836 { yyVAL.str = "cascaded" } - case 1356: + case 1361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6805 +//line sql.y:6840 { yyVAL.str = string(yyDollar[1].str) } - case 1357: + case 1362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6809 +//line sql.y:6844 { yyVAL.str = string(yyDollar[1].str) } - case 1358: + case 1363: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:6814 +//line sql.y:6849 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1359: + case 1364: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6818 +//line sql.y:6853 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1360: + case 1365: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:6824 +//line sql.y:6859 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1361: + case 1366: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6830 +//line sql.y:6865 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1362: + case 1367: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:6836 +//line sql.y:6871 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -19032,369 +19009,369 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1363: + case 1368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6845 +//line sql.y:6880 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1364: + case 1369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6849 +//line sql.y:6884 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1365: + case 1370: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6854 +//line sql.y:6889 { yyVAL.str = "" } - case 1366: + case 1371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6858 +//line sql.y:6893 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1367: + case 1372: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:6864 +//line sql.y:6899 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1368: + case 1373: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:6868 +//line sql.y:6903 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1369: + case 1374: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6874 +//line sql.y:6909 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1370: + case 1375: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6878 +//line sql.y:6913 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1371: + case 1376: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6882 +//line sql.y:6917 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1372: + case 1377: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6887 +//line sql.y:6922 { yyVAL.str = "" } - case 1373: + case 1378: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6891 +//line sql.y:6926 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1374: + case 1379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6895 +//line sql.y:6930 { yyVAL.str = " format text" + yyDollar[3].str } - case 1375: + case 1380: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6900 +//line sql.y:6935 { yyVAL.str = "" } - case 1376: + case 1381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6904 +//line sql.y:6939 { yyVAL.str = " header" } - case 1377: + case 1382: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6909 +//line sql.y:6944 { yyVAL.str = "" } - case 1378: + case 1383: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6913 +//line sql.y:6948 { yyVAL.str = " manifest on" } - case 1379: + case 1384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6917 +//line sql.y:6952 { yyVAL.str = " manifest off" } - case 1380: + case 1385: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6922 +//line sql.y:6957 { yyVAL.str = "" } - case 1381: + case 1386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6926 +//line sql.y:6961 { yyVAL.str = " overwrite on" } - case 1382: + case 1387: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6930 +//line sql.y:6965 { yyVAL.str = " overwrite off" } - case 1383: + case 1388: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6936 +//line sql.y:6971 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1384: + case 1389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6941 +//line sql.y:6976 { yyVAL.str = "" } - case 1385: + case 1390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6945 +//line sql.y:6980 { yyVAL.str = " lines" + yyDollar[2].str } - case 1386: + case 1391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6951 +//line sql.y:6986 { yyVAL.str = yyDollar[1].str } - case 1387: + case 1392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6955 +//line sql.y:6990 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1388: + case 1393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6961 +//line sql.y:6996 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1389: + case 1394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6965 +//line sql.y:7000 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1390: + case 1395: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6970 +//line sql.y:7005 { yyVAL.str = "" } - case 1391: + case 1396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6974 +//line sql.y:7009 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1392: + case 1397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6980 +//line sql.y:7015 { yyVAL.str = yyDollar[1].str } - case 1393: + case 1398: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6984 +//line sql.y:7019 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1394: + case 1399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6990 +//line sql.y:7025 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1395: + case 1400: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:6994 +//line sql.y:7029 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1396: + case 1401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6998 +//line sql.y:7033 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1397: + case 1402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7003 +//line sql.y:7038 { yyVAL.str = "" } - case 1398: + case 1403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7007 +//line sql.y:7042 { yyVAL.str = " optionally" } - case 1399: + case 1404: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7020 +//line sql.y:7055 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1400: + case 1405: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7024 +//line sql.y:7059 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1401: + case 1406: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7028 +//line sql.y:7063 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1402: + case 1407: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7032 +//line sql.y:7067 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1403: + case 1408: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7036 +//line sql.y:7071 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1404: + case 1409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7042 +//line sql.y:7077 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1405: + case 1410: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7046 +//line sql.y:7081 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1406: + case 1411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7050 +//line sql.y:7085 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1407: + case 1412: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7054 +//line sql.y:7089 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1408: + case 1413: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7059 +//line sql.y:7094 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1409: + case 1414: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7063 +//line sql.y:7098 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1410: + case 1415: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7069 +//line sql.y:7104 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1411: + case 1416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7073 +//line sql.y:7108 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1412: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7079 +//line sql.y:7114 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1413: + case 1418: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7083 +//line sql.y:7118 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1414: + case 1419: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7089 +//line sql.y:7124 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1415: + case 1420: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7093 +//line sql.y:7128 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1416: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7098 +//line sql.y:7133 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -19403,344 +19380,344 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1417: + case 1422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7108 +//line sql.y:7143 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1418: + case 1423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7112 +//line sql.y:7147 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1419: + case 1424: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7118 +//line sql.y:7153 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1420: + case 1425: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SetExprs -//line sql.y:7124 +//line sql.y:7159 { yyLOCAL = SetExprs{yyDollar[1].setExprUnion()} } yyVAL.union = yyLOCAL - case 1421: + case 1426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7128 +//line sql.y:7163 { yySLICE := (*SetExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].setExprUnion()) } - case 1422: + case 1427: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7134 +//line sql.y:7169 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("on")} } yyVAL.union = yyLOCAL - case 1423: + case 1428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7138 +//line sql.y:7173 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("off")} } yyVAL.union = yyLOCAL - case 1424: + case 1429: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7142 +//line sql.y:7177 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1425: + case 1430: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7146 +//line sql.y:7181 { yyLOCAL = &SetExpr{Var: NewSetVariable(string(yyDollar[1].str), SessionScope), Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1426: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7152 +//line sql.y:7187 { yyLOCAL = NewSetVariable(string(yyDollar[1].str), SessionScope) } yyVAL.union = yyLOCAL - case 1427: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7156 +//line sql.y:7191 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1428: + case 1433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Variable -//line sql.y:7160 +//line sql.y:7195 { yyLOCAL = NewSetVariable(string(yyDollar[2].str), yyDollar[1].scopeUnion()) } yyVAL.union = yyLOCAL - case 1430: + case 1435: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7167 +//line sql.y:7202 { yyVAL.str = "charset" } - case 1433: + case 1438: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7177 +//line sql.y:7212 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1434: + case 1439: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7181 +//line sql.y:7216 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1435: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7185 +//line sql.y:7220 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1438: + case 1443: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7194 +//line sql.y:7229 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1439: + case 1444: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7196 +//line sql.y:7231 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1440: + case 1445: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7199 +//line sql.y:7234 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1441: + case 1446: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7201 +//line sql.y:7236 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1442: + case 1447: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7204 +//line sql.y:7239 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1443: + case 1448: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7206 +//line sql.y:7241 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1444: + case 1449: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7209 +//line sql.y:7244 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1445: + case 1450: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7211 +//line sql.y:7246 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1446: + case 1451: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7214 +//line sql.y:7249 { yyVAL.empty = struct{}{} } - case 1447: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7216 +//line sql.y:7251 { yyVAL.empty = struct{}{} } - case 1448: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7218 +//line sql.y:7253 { yyVAL.empty = struct{}{} } - case 1449: + case 1454: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7222 +//line sql.y:7257 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1450: + case 1455: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7227 +//line sql.y:7262 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1451: + case 1456: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7231 +//line sql.y:7266 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1452: + case 1457: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7236 +//line sql.y:7271 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1453: + case 1458: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7238 +//line sql.y:7273 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1454: + case 1459: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7242 +//line sql.y:7277 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1455: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7248 +//line sql.y:7283 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1456: + case 1461: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7252 +//line sql.y:7287 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1458: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7259 +//line sql.y:7294 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1459: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7265 +//line sql.y:7300 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1460: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7269 +//line sql.y:7304 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1461: + case 1466: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7275 +//line sql.y:7310 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1462: + case 1467: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7279 +//line sql.y:7314 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1464: + case 1469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7286 +//line sql.y:7321 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 2006: + case 2013: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7854 +//line sql.y:7891 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 2007: + case 2014: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7863 +//line sql.y:7900 { decNesting(yylex) } - case 2008: + case 2015: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7868 +//line sql.y:7905 { skipToEnd(yylex) } - case 2009: + case 2016: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7873 +//line sql.y:7910 { skipToEnd(yylex) } - case 2010: + case 2017: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7877 +//line sql.y:7914 { skipToEnd(yylex) } - case 2011: + case 2018: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7881 +//line sql.y:7918 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 8e4e5d02f06..7e9ba058593 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -314,6 +314,8 @@ func bindVariable(yylex yyLexer, bvar string) { // Migration tokens %token VITESS_MIGRATION CANCEL RETRY LAUNCH COMPLETE CLEANUP THROTTLE UNTHROTTLE EXPIRE RATIO +// Throttler tokens +%token VITESS_THROTTLER THRESHOLD // Transaction Tokens %token BEGIN START TRANSACTION COMMIT ROLLBACK SAVEPOINT RELEASE WORK @@ -589,6 +591,7 @@ func bindVariable(yylex yyLexer, bvar string) { %type underscore_charsets %type expire_opt %type ratio_opt +%type threshold_opt %start any_command %% @@ -2847,6 +2850,15 @@ ratio_opt: $$ = NewDecimalLiteral($2) } +threshold_opt: + { + $$ = "" + } +| THRESHOLD STRING + { + $$ = string($2) + } + alter_commands_list: { $$ = nil @@ -3277,6 +3289,29 @@ alter_statement: Type: UnthrottleAllMigrationType, } } +| ALTER comment_opt VITESS_THROTTLER DISABLE + { + $$ = &AlterThrottler{ + Type: AlterThrottlerDisableType, + Comments: Comments($2).Parsed(), + } + } +| ALTER comment_opt VITESS_THROTTLER ENABLE + { + $$ = &AlterThrottler{ + Type: AlterThrottlerEnableType, + Comments: Comments($2).Parsed(), + } + } +| ALTER comment_opt VITESS_THROTTLER threshold_opt + { + $$ = &AlterThrottler{ + Type: AlterThrottlerParamsType, + Threshold: $4, + Comments: Comments($2).Parsed(), + } + } + partitions_options_opt: { @@ -7772,6 +7807,7 @@ non_reserved_keyword: | TEXT | THAN | THREAD_PRIORITY +| THRESHOLD | THROTTLE | TIES | TIME %prec STRING_TYPE_PREFIX_NON_KEYWORD @@ -7819,6 +7855,7 @@ non_reserved_keyword: | VITESS_TABLETS | VITESS_TARGET | VITESS_THROTTLED_APPS +| VITESS_THROTTLER | VSCHEMA | WAIT_FOR_EXECUTED_GTID_SET %prec FUNCTION_CALL_NON_KEYWORD | WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS %prec FUNCTION_CALL_NON_KEYWORD From 225da725e17b80c09c07a873b7ec6c1fc0e9e563 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 09:30:40 +0300 Subject: [PATCH 02/78] vtgate supports ALTER VITESS_THROTTLER syntax Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/builder.go | 2 ++ go/vt/vtgate/planbuilder/throttler.go | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index ce299ae0f38..beda4309da8 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -242,6 +242,8 @@ func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars * return buildShowMigrationLogsPlan(query, vschema, enableOnlineDDL) case *sqlparser.ShowThrottledApps: return buildShowThrottledAppsPlan(query, vschema) + case *sqlparser.AlterThrottler: + return buildAlterThrottlerPlan(query, vschema) case *sqlparser.AlterVschema: return buildVSchemaDDLPlan(stmt, vschema) case *sqlparser.Use: diff --git a/go/vt/vtgate/planbuilder/throttler.go b/go/vt/vtgate/planbuilder/throttler.go index c1abbd17f1a..724955fc928 100644 --- a/go/vt/vtgate/planbuilder/throttler.go +++ b/go/vt/vtgate/planbuilder/throttler.go @@ -48,3 +48,28 @@ func buildShowThrottledAppsPlan(query string, vschema plancontext.VSchema) (*pla Query: query, }), nil } + +func buildAlterThrottlerPlan(query string, vschema plancontext.VSchema) (*planResult, error) { + dest, ks, tabletType, err := vschema.TargetDestination("") + if err != nil { + return nil, err + } + if ks == nil { + return nil, vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.NoDB, "No database selected: use keyspace<:shard><@type> or keyspace<[range]><@type> (<> are optional)") + } + + if tabletType != topodatapb.TabletType_PRIMARY { + return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "ALTER VITESS_THROTTLER works only on primary tablet") + } + + if dest == nil { + dest = key.DestinationAllShards{} + } + + send := &engine.Send{ + Keyspace: ks, + TargetDestination: dest, + Query: query, + } + return newPlanResult(send), nil +} From fc5f4aef31ac5fcc54a38c9761fb489ed02383ef Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 09:45:10 +0300 Subject: [PATCH 03/78] initial support for AlterThrottler in query executor Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/planbuilder/permission.go | 7 ++++++- .../vttablet/tabletserver/planbuilder/plan.go | 4 ++++ go/vt/vttablet/tabletserver/query_executor.go | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission.go b/go/vt/vttablet/tabletserver/planbuilder/permission.go index 514b820b23a..6d6a6fccd9c 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission.go @@ -51,7 +51,12 @@ func BuildPermissions(stmt sqlparser.Statement) []Permission { for _, t := range node.AffectedTables() { permissions = buildTableNamePermissions(t, tableacl.ADMIN, permissions) } - case *sqlparser.AlterMigration, *sqlparser.RevertMigration, *sqlparser.ShowMigrationLogs, *sqlparser.ShowThrottledApps: + case + *sqlparser.AlterMigration, + *sqlparser.RevertMigration, + *sqlparser.ShowMigrationLogs, + *sqlparser.ShowThrottledApps, + *sqlparser.AlterThrottler: permissions = []Permission{} // TODO(shlomi) what are the correct permissions here? Table is unknown case *sqlparser.Flush: for _, t := range node.TableNames { diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index f71f0964db0..190bf22813d 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -78,6 +78,7 @@ const ( PlanRevertMigration PlanShowMigrationLogs PlanShowThrottledApps + PlanAlterThrottler NumPlans ) @@ -112,6 +113,7 @@ var planName = []string{ "RevertMigration", "ShowMigrationLogs", "ShowThrottledApps", + "AlterThrottler", } func (pt PlanType) String() string { @@ -225,6 +227,8 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, dbNam plan, err = &Plan{PlanID: PlanShowMigrationLogs, FullStmt: stmt}, nil case *sqlparser.ShowThrottledApps: plan, err = &Plan{PlanID: PlanShowThrottledApps, FullStmt: stmt}, nil + case *sqlparser.AlterThrottler: + plan, err = &Plan{PlanID: PlanAlterThrottler, FullStmt: stmt}, nil case *sqlparser.Show: plan, err = analyzeShow(stmt, dbName) case *sqlparser.OtherRead, sqlparser.Explain: diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 882ab1c157e..a7ba819c3d6 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -182,6 +182,8 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { return qre.execShowMigrationLogs() case p.PlanShowThrottledApps: return qre.execShowThrottledApps() + case p.PlanAlterThrottler: + return qre.execAlterThrottler() case p.PlanSet: if qre.setting == nil { return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "[BUG] %s not allowed without setting connection", qre.query) @@ -952,6 +954,22 @@ func (qre *QueryExecutor) execShowThrottledApps() (*sqltypes.Result, error) { return result, nil } +func (qre *QueryExecutor) execAlterThrottler() (*sqltypes.Result, error) { + // if err := qre.tsv.lagThrottler.CheckIsReady(); err != nil { + // return nil, err + // } + // alterThrottler, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) + _, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) + if !ok { + return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "Expecting ALTER VITESS_THROTTLER plan") + } + result := &sqltypes.Result{} + if err := qre.tsv.lagThrottler.CheckIsReady(); err == nil { + result.RowsAffected = 1 + } + return result, nil +} + func (qre *QueryExecutor) drainResultSetOnConn(conn *connpool.DBConn) error { more := true for more { From 2854e464b9945af92e87a19f448323f836483718 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 10:50:28 +0300 Subject: [PATCH 04/78] towards enable/disable in throttler Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/check.go | 17 +- .../tabletserver/throttle/throttler.go | 270 +++++++++++------- 2 files changed, 178 insertions(+), 109 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/check.go b/go/vt/vttablet/tabletserver/throttle/check.go index e2c6eb7c639..76bcc9a11c4 100644 --- a/go/vt/vttablet/tabletserver/throttle/check.go +++ b/go/vt/vttablet/tabletserver/throttle/check.go @@ -186,12 +186,17 @@ func (check *ThrottlerCheck) MetricsHealth() map[string](*base.MetricHealth) { func (check *ThrottlerCheck) SelfChecks(ctx context.Context) { selfCheckTicker := time.NewTicker(selfCheckInterval) go func() { - for range selfCheckTicker.C { - for metricName, metricResult := range check.AggregatedMetrics(ctx) { - metricName := metricName - metricResult := metricResult - go check.localCheck(ctx, metricName) - go check.reportAggregated(metricName, metricResult) + for { + select { + case <-ctx.Done(): + return + case <-selfCheckTicker.C: + for metricName, metricResult := range check.AggregatedMetrics(ctx) { + metricName := metricName + metricResult := metricResult + go check.localCheck(ctx, metricName) + go check.reportAggregated(metricName, metricResult) + } } } }() diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 0ba300c2c76..52b00d07cbd 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -141,9 +141,10 @@ type Throttler struct { lastCheckTimeNano int64 - initMutex sync.Mutex - throttledAppsMutex sync.Mutex - tickers [](*timer.SuspendableTicker) + initMutex sync.Mutex + enableMutex sync.Mutex + cancelEnableContext context.CancelFunc + throttledAppsMutex sync.Mutex nonLowPriorityAppRequestsThrottled *cache.Cache httpClient *http.Client @@ -195,19 +196,19 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat. throttler.recentApps = cache.New(recentAppsExpiration, time.Minute) throttler.metricsHealth = cache.New(cache.NoExpiration, 0) - throttler.tickers = [](*timer.SuspendableTicker){} throttler.nonLowPriorityAppRequestsThrottled = cache.New(nonDeprioritizedAppMapExpiration, nonDeprioritizedAppMapInterval) - throttler.httpClient = base.SetupHTTPClient(2 * mysqlCollectInterval) - throttler.initThrottleTabletTypes() - throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) - throttler.check = NewThrottlerCheck(throttler) - throttler.initConfig() throttler.check.SelfChecks(context.Background()) } else { // Create an empty cache, just so that it isn't nil throttler.throttledApps = cache.New(cache.NoExpiration, 0) } + throttler.httpClient = base.SetupHTTPClient(2 * mysqlCollectInterval) + throttler.initThrottleTabletTypes() + throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) + throttler.check = NewThrottlerCheck(throttler) + throttler.initConfig() + return throttler } @@ -240,9 +241,6 @@ func (throttler *Throttler) initThrottleTabletTypes() { func (throttler *Throttler) InitDBConfig(keyspace, shard string) { throttler.keyspace = keyspace throttler.shard = shard - if throttler.env.Config().EnableLagThrottler { - go throttler.Operate(context.Background()) - } } // initThrottler initializes config @@ -282,6 +280,74 @@ func (throttler *Throttler) IsOpen() bool { return atomic.LoadInt64(&throttler.isOpen) > 0 } +func (throttler *Throttler) IsEnabled() bool { + throttler.enableMutex.Lock() + defer throttler.enableMutex.Unlock() + return throttler.isEnabled +} + +func (throttler *Throttler) enable(ctx context.Context) error { + throttler.enableMutex.Lock() + defer throttler.enableMutex.Unlock() + + if throttler.isEnabled { + return nil + } + throttler.isEnabled = true + throttler.mysqlThrottleMetricChan = make(chan *mysql.MySQLThrottleMetric) + + throttler.mysqlInventoryChan = make(chan *mysql.Inventory, 1) + throttler.mysqlClusterProbesChan = make(chan *mysql.ClusterProbes) + throttler.mysqlInventory = mysql.NewInventory() + + // TODO(shlomi): Read from database + throttler.metricsQuery = replicationLagQuery + throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) + + throttler.throttledApps = cache.New(cache.NoExpiration, 10*time.Second) + throttler.mysqlClusterThresholds = cache.New(cache.NoExpiration, 0) + throttler.aggregatedMetrics = cache.New(aggregatedMetricsExpiration, aggregatedMetricsCleanup) + throttler.recentApps = cache.New(recentAppsExpiration, time.Minute) + throttler.metricsHealth = cache.New(cache.NoExpiration, 0) + + throttler.nonLowPriorityAppRequestsThrottled = cache.New(nonDeprioritizedAppMapExpiration, nonDeprioritizedAppMapInterval) + + ctx, throttler.cancelEnableContext = context.WithCancel(ctx) + throttler.check.SelfChecks(ctx) + throttler.Operate(ctx) + + // Make a one-time request for a lease of heartbeats + go throttler.heartbeatWriter.RequestHeartbeats() + + return nil +} + +func (throttler *Throttler) maybeEnable(ctx context.Context) { + // TODO(shlomi): read from database + if throttler.env.Config().EnableLagThrottler { + throttler.enable(ctx) + } +} + +func (throttler *Throttler) disable() { + throttler.enableMutex.Lock() + defer throttler.enableMutex.Unlock() + + if !throttler.isEnabled { + return + } + throttler.isEnabled = false + // Create an empty cache, just so that it isn't nil + // this throws away the existing caches to garbage collection. The new caches will not + // have running tickers, so a disabled throttler does not waste any CPU + throttler.throttledApps = cache.New(cache.NoExpiration, 0) + throttler.aggregatedMetrics = cache.New(cache.NoExpiration, 0) + throttler.recentApps = cache.New(cache.NoExpiration, 0) + throttler.nonLowPriorityAppRequestsThrottled = cache.New(cache.NoExpiration, 0) + + throttler.cancelEnableContext() +} + // Open opens database pool and initializes the schema func (throttler *Throttler) Open() error { throttler.initMutex.Lock() @@ -294,37 +360,27 @@ func (throttler *Throttler) Open() error { throttler.pool.Open(throttler.env.Config().DB.AppWithDB(), throttler.env.Config().DB.DbaWithDB(), throttler.env.Config().DB.AppDebugWithDB()) atomic.StoreInt64(&throttler.isOpen, 1) - for _, t := range throttler.tickers { - t.Resume() - // since we just resume now, speed up the tickers by forcng an immediate tick - go t.TickNow() - } - go throttler.heartbeatWriter.RequestHeartbeats() - + throttler.maybeEnable(context.Background()) return nil } // Close frees resources func (throttler *Throttler) Close() { - log.Infof("Throttler - started execution of Close. Acquiring initMutex lock") + log.Infof("Throttler: started execution of Close. Acquiring initMutex lock") throttler.initMutex.Lock() - log.Infof("Throttler - acquired initMutex lock") + log.Infof("Throttler: acquired initMutex lock") defer throttler.initMutex.Unlock() if atomic.LoadInt64(&throttler.isOpen) == 0 { - log.Infof("Throttler - no throttler is open") - // not open + log.Infof("Throttler: throttler is not open") return } - for _, t := range throttler.tickers { - t.Suspend() - } - log.Infof("Throttler - finished suspending tickers") + throttler.disable() atomic.StoreInt64(&throttler.isLeader, 0) - log.Infof("Throttler - closing pool") + log.Infof("Throttler: closing pool") throttler.pool.Close() atomic.StoreInt64(&throttler.isOpen, 0) - log.Infof("Throttler - finished execution of Close") + log.Infof("Throttler: finished execution of Close") } // readSelfMySQLThrottleMetric reads the mysql metric from thi very tablet's backend mysql. @@ -394,15 +450,12 @@ func (throttler *Throttler) isDormant() bool { // run the probes, colelct metrics, refresh inventory, etc. func (throttler *Throttler) Operate(ctx context.Context) { + tickers := [](*timer.SuspendableTicker){} addTicker := func(d time.Duration) *timer.SuspendableTicker { - throttler.initMutex.Lock() - defer throttler.initMutex.Unlock() - - t := timer.NewSuspendableTicker(d, true) - throttler.tickers = append(throttler.tickers, t) + t := timer.NewSuspendableTicker(d, false) + tickers = append(tickers, t) return t } - leaderCheckTicker := addTicker(leaderCheckInterval) mysqlCollectTicker := addTicker(mysqlCollectInterval) mysqlDormantCollectTicker := addTicker(mysqlDormantCollectInterval) @@ -410,89 +463,100 @@ func (throttler *Throttler) Operate(ctx context.Context) { mysqlAggregateTicker := addTicker(mysqlAggregateInterval) throttledAppsTicker := addTicker(throttledAppsSnapshotInterval) - for { - select { - case <-leaderCheckTicker.C: - { - func() { - throttler.initMutex.Lock() - defer throttler.initMutex.Unlock() + go func() { + defer log.Infof("Throttler: Operate terminated, tickers stopped") + for _, t := range tickers { + defer t.Stop() + // since we just started the tickers now, speed up the ticks by forcng an immediate tick + go t.TickNow() + } - // sparse - shouldBeLeader := int64(0) - if atomic.LoadInt64(&throttler.isOpen) > 0 { - if throttler.tabletTypeFunc() == topodatapb.TabletType_PRIMARY { - shouldBeLeader = 1 + for { + select { + case <-ctx.Done(): + return + case <-leaderCheckTicker.C: + { + func() { + throttler.initMutex.Lock() + defer throttler.initMutex.Unlock() + + // sparse + shouldBeLeader := int64(0) + if atomic.LoadInt64(&throttler.isOpen) > 0 { + if throttler.tabletTypeFunc() == topodatapb.TabletType_PRIMARY { + shouldBeLeader = 1 + } } - } - transitionedIntoLeader := false - if shouldBeLeader > throttler.isLeader { - log.Infof("Throttler: transition into leadership") - transitionedIntoLeader = true - } - if shouldBeLeader < throttler.isLeader { - log.Infof("Throttler: transition out of leadership") - } + transitionedIntoLeader := false + if shouldBeLeader > throttler.isLeader { + log.Infof("Throttler: transition into leadership") + transitionedIntoLeader = true + } + if shouldBeLeader < throttler.isLeader { + log.Infof("Throttler: transition out of leadership") + } - atomic.StoreInt64(&throttler.isLeader, shouldBeLeader) + atomic.StoreInt64(&throttler.isLeader, shouldBeLeader) - if transitionedIntoLeader { - // transitioned into leadership, let's speed up the next 'refresh' and 'collect' ticks - go mysqlRefreshTicker.TickNow() - go throttler.heartbeatWriter.RequestHeartbeats() + if transitionedIntoLeader { + // transitioned into leadership, let's speed up the next 'refresh' and 'collect' ticks + go mysqlRefreshTicker.TickNow() + go throttler.heartbeatWriter.RequestHeartbeats() + } + }() + } + case <-mysqlCollectTicker.C: + { + if atomic.LoadInt64(&throttler.isOpen) > 0 { + // frequent + if !throttler.isDormant() { + throttler.collectMySQLMetrics(ctx) + } } - }() - } - case <-mysqlCollectTicker.C: - { - if atomic.LoadInt64(&throttler.isOpen) > 0 { - // frequent - if !throttler.isDormant() { - throttler.collectMySQLMetrics(ctx) + } + case <-mysqlDormantCollectTicker.C: + { + if atomic.LoadInt64(&throttler.isOpen) > 0 { + // infrequent + if throttler.isDormant() { + throttler.collectMySQLMetrics(ctx) + } } } - } - case <-mysqlDormantCollectTicker.C: - { - if atomic.LoadInt64(&throttler.isOpen) > 0 { - // infrequent - if throttler.isDormant() { - throttler.collectMySQLMetrics(ctx) + case metric := <-throttler.mysqlThrottleMetricChan: + { + // incoming MySQL metric, frequent, as result of collectMySQLMetrics() + throttler.mysqlInventory.InstanceKeyMetrics[metric.GetClusterInstanceKey()] = metric + } + case <-mysqlRefreshTicker.C: + { + // sparse + if atomic.LoadInt64(&throttler.isOpen) > 0 { + go throttler.refreshMySQLInventory(ctx) } } - } - case metric := <-throttler.mysqlThrottleMetricChan: - { - // incoming MySQL metric, frequent, as result of collectMySQLMetrics() - throttler.mysqlInventory.InstanceKeyMetrics[metric.GetClusterInstanceKey()] = metric - } - case <-mysqlRefreshTicker.C: - { - // sparse - if atomic.LoadInt64(&throttler.isOpen) > 0 { - go throttler.refreshMySQLInventory(ctx) + case probes := <-throttler.mysqlClusterProbesChan: + { + // incoming structural update, sparse, as result of refreshMySQLInventory() + throttler.updateMySQLClusterProbes(ctx, probes) } - } - case probes := <-throttler.mysqlClusterProbesChan: - { - // incoming structural update, sparse, as result of refreshMySQLInventory() - throttler.updateMySQLClusterProbes(ctx, probes) - } - case <-mysqlAggregateTicker.C: - { - if atomic.LoadInt64(&throttler.isOpen) > 0 { - throttler.aggregateMySQLMetrics(ctx) + case <-mysqlAggregateTicker.C: + { + if atomic.LoadInt64(&throttler.isOpen) > 0 { + throttler.aggregateMySQLMetrics(ctx) + } } - } - case <-throttledAppsTicker.C: - { - if atomic.LoadInt64(&throttler.isOpen) > 0 { - go throttler.expireThrottledApps() + case <-throttledAppsTicker.C: + { + if atomic.LoadInt64(&throttler.isOpen) > 0 { + go throttler.expireThrottledApps() + } } } } - } + }() } func (throttler *Throttler) generateTabletHTTPProbeFunction(ctx context.Context, clusterName string, probe *mysql.Probe) (probeFunc func() *mysql.MySQLThrottleMetric) { From 18052e7641b01e858cef6f6cf60fe333236edc16 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 12:18:26 +0300 Subject: [PATCH 05/78] no cleanup ticker for caches, single initialization Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/throttle/throttler.go | 72 ++++++------------- 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 52b00d07cbd..78b778b8808 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -47,12 +47,10 @@ const ( mysqlAggregateInterval = 125 * time.Millisecond aggregatedMetricsExpiration = 5 * time.Second - aggregatedMetricsCleanup = 10 * time.Second throttledAppsSnapshotInterval = 5 * time.Second recentAppsExpiration = time.Hour * 24 nonDeprioritizedAppMapExpiration = time.Second - nonDeprioritizedAppMapInterval = 10 * time.Second dormantPeriod = time.Minute defaultThrottleTTLMinutes = 60 @@ -179,30 +177,18 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat. }), } - if env.Config().EnableLagThrottler { - throttler.isEnabled = true - throttler.mysqlThrottleMetricChan = make(chan *mysql.MySQLThrottleMetric) - - throttler.mysqlInventoryChan = make(chan *mysql.Inventory, 1) - throttler.mysqlClusterProbesChan = make(chan *mysql.ClusterProbes) - throttler.mysqlInventory = mysql.NewInventory() - - throttler.metricsQuery = replicationLagQuery - throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) - - throttler.throttledApps = cache.New(cache.NoExpiration, 10*time.Second) - throttler.mysqlClusterThresholds = cache.New(cache.NoExpiration, 0) - throttler.aggregatedMetrics = cache.New(aggregatedMetricsExpiration, aggregatedMetricsCleanup) - throttler.recentApps = cache.New(recentAppsExpiration, time.Minute) - throttler.metricsHealth = cache.New(cache.NoExpiration, 0) + throttler.mysqlThrottleMetricChan = make(chan *mysql.MySQLThrottleMetric) + throttler.mysqlInventoryChan = make(chan *mysql.Inventory, 1) + throttler.mysqlClusterProbesChan = make(chan *mysql.ClusterProbes) + throttler.mysqlInventory = mysql.NewInventory() - throttler.nonLowPriorityAppRequestsThrottled = cache.New(nonDeprioritizedAppMapExpiration, nonDeprioritizedAppMapInterval) + throttler.throttledApps = cache.New(cache.NoExpiration, 0) + throttler.mysqlClusterThresholds = cache.New(cache.NoExpiration, 0) + throttler.aggregatedMetrics = cache.New(aggregatedMetricsExpiration, 0) + throttler.recentApps = cache.New(recentAppsExpiration, 0) + throttler.metricsHealth = cache.New(cache.NoExpiration, 0) + throttler.nonLowPriorityAppRequestsThrottled = cache.New(nonDeprioritizedAppMapExpiration, 0) - throttler.check.SelfChecks(context.Background()) - } else { - // Create an empty cache, just so that it isn't nil - throttler.throttledApps = cache.New(cache.NoExpiration, 0) - } throttler.httpClient = base.SetupHTTPClient(2 * mysqlCollectInterval) throttler.initThrottleTabletTypes() throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) @@ -274,12 +260,6 @@ func (throttler *Throttler) initConfig() { } } -func (throttler *Throttler) IsOpen() bool { - throttler.initMutex.Lock() - defer throttler.initMutex.Unlock() - return atomic.LoadInt64(&throttler.isOpen) > 0 -} - func (throttler *Throttler) IsEnabled() bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() @@ -294,24 +274,11 @@ func (throttler *Throttler) enable(ctx context.Context) error { return nil } throttler.isEnabled = true - throttler.mysqlThrottleMetricChan = make(chan *mysql.MySQLThrottleMetric) - - throttler.mysqlInventoryChan = make(chan *mysql.Inventory, 1) - throttler.mysqlClusterProbesChan = make(chan *mysql.ClusterProbes) - throttler.mysqlInventory = mysql.NewInventory() // TODO(shlomi): Read from database throttler.metricsQuery = replicationLagQuery throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) - throttler.throttledApps = cache.New(cache.NoExpiration, 10*time.Second) - throttler.mysqlClusterThresholds = cache.New(cache.NoExpiration, 0) - throttler.aggregatedMetrics = cache.New(aggregatedMetricsExpiration, aggregatedMetricsCleanup) - throttler.recentApps = cache.New(recentAppsExpiration, time.Minute) - throttler.metricsHealth = cache.New(cache.NoExpiration, 0) - - throttler.nonLowPriorityAppRequestsThrottled = cache.New(nonDeprioritizedAppMapExpiration, nonDeprioritizedAppMapInterval) - ctx, throttler.cancelEnableContext = context.WithCancel(ctx) throttler.check.SelfChecks(ctx) throttler.Operate(ctx) @@ -337,17 +304,22 @@ func (throttler *Throttler) disable() { return } throttler.isEnabled = false - // Create an empty cache, just so that it isn't nil - // this throws away the existing caches to garbage collection. The new caches will not - // have running tickers, so a disabled throttler does not waste any CPU - throttler.throttledApps = cache.New(cache.NoExpiration, 0) - throttler.aggregatedMetrics = cache.New(cache.NoExpiration, 0) - throttler.recentApps = cache.New(cache.NoExpiration, 0) - throttler.nonLowPriorityAppRequestsThrottled = cache.New(cache.NoExpiration, 0) + + throttler.throttledApps.Flush() + throttler.aggregatedMetrics.Flush() + throttler.recentApps.Flush() + throttler.nonLowPriorityAppRequestsThrottled.Flush() + throttler.nonLowPriorityAppRequestsThrottled.Flush() throttler.cancelEnableContext() } +func (throttler *Throttler) IsOpen() bool { + throttler.initMutex.Lock() + defer throttler.initMutex.Unlock() + return atomic.LoadInt64(&throttler.isOpen) > 0 +} + // Open opens database pool and initializes the schema func (throttler *Throttler) Open() error { throttler.initMutex.Lock() From 8898537ae4aabf3f6fb68b85f29f1db14168a6bf Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 12:34:10 +0300 Subject: [PATCH 06/78] init metrics query and threshold (temporary) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/throttler.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 78b778b8808..409f27db3f5 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -193,6 +193,11 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat. throttler.initThrottleTabletTypes() throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) throttler.check = NewThrottlerCheck(throttler) + + // TODO(shlomi): Read from database + throttler.metricsQuery = replicationLagQuery + throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) + throttler.initConfig() return throttler @@ -392,7 +397,7 @@ func (throttler *Throttler) readSelfMySQLThrottleMetric() *mysql.MySQLThrottleMe case mysql.MetricsQueryTypeShowGlobal: metric.Value, metric.Err = strconv.ParseFloat(row["Value"].ToString(), 64) default: - metric.Err = fmt.Errorf("Unsupported metrics query type for query %s", throttler.metricsQuery) + metric.Err = fmt.Errorf("Unsupported metrics query type for query: %s", throttler.metricsQuery) } return metric From d01cafba22306d5defc785125ea46bf5d70d862e Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 12:34:36 +0300 Subject: [PATCH 07/78] replace if-else with switch Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/check.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/check.go b/go/vt/vttablet/tabletserver/throttle/check.go index 76bcc9a11c4..5c5096611ca 100644 --- a/go/vt/vttablet/tabletserver/throttle/check.go +++ b/go/vt/vttablet/tabletserver/throttle/check.go @@ -74,16 +74,17 @@ func (check *ThrottlerCheck) checkAppMetricResult(ctx context.Context, appName s var statusCode int - if err == base.ErrAppDenied { + switch { + case err == base.ErrAppDenied: // app specifically not allowed to get metrics statusCode = http.StatusExpectationFailed // 417 - } else if err == base.ErrNoSuchMetric { + case err == base.ErrNoSuchMetric: // not collected yet, or metric does not exist statusCode = http.StatusNotFound // 404 - } else if err != nil { + case err != nil: // any error statusCode = http.StatusInternalServerError // 500 - } else if value > threshold { + case value > threshold: // casual throttling statusCode = http.StatusTooManyRequests // 429 err = base.ErrThresholdExceeded @@ -92,7 +93,7 @@ func (check *ThrottlerCheck) checkAppMetricResult(ctx context.Context, appName s // low priority requests will henceforth be denied go check.throttler.nonLowPriorityAppRequestsThrottled.SetDefault(metricName, true) } - } else { + default: // all good! statusCode = http.StatusOK // 200 } From c581f5d35f3a25e6e4030a2695b4e82fca187d53 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 13:08:24 +0300 Subject: [PATCH 08/78] parser: support 'show vitess_throttler status' command Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/ast.go | 104 +- go/vt/sqlparser/ast_clone.go | 14 + go/vt/sqlparser/ast_equals.go | 23 + go/vt/sqlparser/ast_format.go | 5 + go/vt/sqlparser/ast_format_fast.go | 5 + go/vt/sqlparser/ast_rewrite.go | 28 + go/vt/sqlparser/ast_visit.go | 13 + go/vt/sqlparser/cached_size.go | 17 + go/vt/sqlparser/parse_test.go | 2 + go/vt/sqlparser/sql.go | 8723 ++++++++++++++-------------- go/vt/sqlparser/sql.y | 4 + 11 files changed, 4538 insertions(+), 4400 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 293858a53d3..52893f1c3c3 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -474,6 +474,11 @@ type ( Comments Comments } + // ShowThrottlerStatus represents a SHOW VITESS_THROTTLED_APPS statement + ShowThrottlerStatus struct { + Comments Comments + } + // AlterThrottlerType represents the type of operation in an ALTER VITESS_THROTTLER statement AlterThrottlerType int8 @@ -700,55 +705,56 @@ type ( } ) -func (*Union) iStatement() {} -func (*Select) iStatement() {} -func (*Stream) iStatement() {} -func (*VStream) iStatement() {} -func (*Insert) iStatement() {} -func (*Update) iStatement() {} -func (*Delete) iStatement() {} -func (*Set) iStatement() {} -func (*SetTransaction) iStatement() {} -func (*DropDatabase) iStatement() {} -func (*Flush) iStatement() {} -func (*Show) iStatement() {} -func (*Use) iStatement() {} -func (*Begin) iStatement() {} -func (*Commit) iStatement() {} -func (*Rollback) iStatement() {} -func (*SRollback) iStatement() {} -func (*Savepoint) iStatement() {} -func (*Release) iStatement() {} -func (*OtherRead) iStatement() {} -func (*OtherAdmin) iStatement() {} -func (*CommentOnly) iStatement() {} -func (*Select) iSelectStatement() {} -func (*Union) iSelectStatement() {} -func (*Load) iStatement() {} -func (*CreateDatabase) iStatement() {} -func (*AlterDatabase) iStatement() {} -func (*CreateTable) iStatement() {} -func (*CreateView) iStatement() {} -func (*AlterView) iStatement() {} -func (*LockTables) iStatement() {} -func (*UnlockTables) iStatement() {} -func (*AlterTable) iStatement() {} -func (*AlterVschema) iStatement() {} -func (*AlterMigration) iStatement() {} -func (*RevertMigration) iStatement() {} -func (*AlterThrottler) iStatement() {} -func (*ShowMigrationLogs) iStatement() {} -func (*ShowThrottledApps) iStatement() {} -func (*DropTable) iStatement() {} -func (*DropView) iStatement() {} -func (*TruncateTable) iStatement() {} -func (*RenameTable) iStatement() {} -func (*CallProc) iStatement() {} -func (*ExplainStmt) iStatement() {} -func (*ExplainTab) iStatement() {} -func (*PrepareStmt) iStatement() {} -func (*ExecuteStmt) iStatement() {} -func (*DeallocateStmt) iStatement() {} +func (*Union) iStatement() {} +func (*Select) iStatement() {} +func (*Stream) iStatement() {} +func (*VStream) iStatement() {} +func (*Insert) iStatement() {} +func (*Update) iStatement() {} +func (*Delete) iStatement() {} +func (*Set) iStatement() {} +func (*SetTransaction) iStatement() {} +func (*DropDatabase) iStatement() {} +func (*Flush) iStatement() {} +func (*Show) iStatement() {} +func (*Use) iStatement() {} +func (*Begin) iStatement() {} +func (*Commit) iStatement() {} +func (*Rollback) iStatement() {} +func (*SRollback) iStatement() {} +func (*Savepoint) iStatement() {} +func (*Release) iStatement() {} +func (*OtherRead) iStatement() {} +func (*OtherAdmin) iStatement() {} +func (*CommentOnly) iStatement() {} +func (*Select) iSelectStatement() {} +func (*Union) iSelectStatement() {} +func (*Load) iStatement() {} +func (*CreateDatabase) iStatement() {} +func (*AlterDatabase) iStatement() {} +func (*CreateTable) iStatement() {} +func (*CreateView) iStatement() {} +func (*AlterView) iStatement() {} +func (*LockTables) iStatement() {} +func (*UnlockTables) iStatement() {} +func (*AlterTable) iStatement() {} +func (*AlterVschema) iStatement() {} +func (*AlterMigration) iStatement() {} +func (*RevertMigration) iStatement() {} +func (*AlterThrottler) iStatement() {} +func (*ShowMigrationLogs) iStatement() {} +func (*ShowThrottledApps) iStatement() {} +func (*ShowThrottlerStatus) iStatement() {} +func (*DropTable) iStatement() {} +func (*DropView) iStatement() {} +func (*TruncateTable) iStatement() {} +func (*RenameTable) iStatement() {} +func (*CallProc) iStatement() {} +func (*ExplainStmt) iStatement() {} +func (*ExplainTab) iStatement() {} +func (*PrepareStmt) iStatement() {} +func (*ExecuteStmt) iStatement() {} +func (*DeallocateStmt) iStatement() {} func (*CreateView) iDDLStatement() {} func (*AlterView) iDDLStatement() {} diff --git a/go/vt/sqlparser/ast_clone.go b/go/vt/sqlparser/ast_clone.go index 461b88980e5..e4758c03533 100644 --- a/go/vt/sqlparser/ast_clone.go +++ b/go/vt/sqlparser/ast_clone.go @@ -417,6 +417,8 @@ func CloneSQLNode(in SQLNode) SQLNode { return CloneRefOfShowOther(in) case *ShowThrottledApps: return CloneRefOfShowThrottledApps(in) + case *ShowThrottlerStatus: + return CloneRefOfShowThrottlerStatus(in) case *StarExpr: return CloneRefOfStarExpr(in) case *Std: @@ -2581,6 +2583,16 @@ func CloneRefOfShowThrottledApps(n *ShowThrottledApps) *ShowThrottledApps { return &out } +// CloneRefOfShowThrottlerStatus creates a deep clone of the input. +func CloneRefOfShowThrottlerStatus(n *ShowThrottlerStatus) *ShowThrottlerStatus { + if n == nil { + return nil + } + out := *n + out.Comments = CloneComments(n.Comments) + return &out +} + // CloneRefOfStarExpr creates a deep clone of the input. func CloneRefOfStarExpr(n *StarExpr) *StarExpr { if n == nil { @@ -3832,6 +3844,8 @@ func CloneStatement(in Statement) Statement { return CloneRefOfShowMigrationLogs(in) case *ShowThrottledApps: return CloneRefOfShowThrottledApps(in) + case *ShowThrottlerStatus: + return CloneRefOfShowThrottlerStatus(in) case *Stream: return CloneRefOfStream(in) case *TruncateTable: diff --git a/go/vt/sqlparser/ast_equals.go b/go/vt/sqlparser/ast_equals.go index 653f6e1035a..192ffc33279 100644 --- a/go/vt/sqlparser/ast_equals.go +++ b/go/vt/sqlparser/ast_equals.go @@ -1208,6 +1208,12 @@ func EqualsSQLNode(inA, inB SQLNode) bool { return false } return EqualsRefOfShowThrottledApps(a, b) + case *ShowThrottlerStatus: + b, ok := inB.(*ShowThrottlerStatus) + if !ok { + return false + } + return EqualsRefOfShowThrottlerStatus(a, b) case *StarExpr: b, ok := inB.(*StarExpr) if !ok { @@ -3907,6 +3913,17 @@ func EqualsRefOfShowThrottledApps(a, b *ShowThrottledApps) bool { return EqualsComments(a.Comments, b.Comments) } +// EqualsRefOfShowThrottlerStatus does deep equals between the two objects. +func EqualsRefOfShowThrottlerStatus(a, b *ShowThrottlerStatus) bool { + if a == b { + return true + } + if a == nil || b == nil { + return false + } + return EqualsComments(a.Comments, b.Comments) +} + // EqualsRefOfStarExpr does deep equals between the two objects. func EqualsRefOfStarExpr(a, b *StarExpr) bool { if a == b { @@ -6331,6 +6348,12 @@ func EqualsStatement(inA, inB Statement) bool { return false } return EqualsRefOfShowThrottledApps(a, b) + case *ShowThrottlerStatus: + b, ok := inB.(*ShowThrottlerStatus) + if !ok { + return false + } + return EqualsRefOfShowThrottlerStatus(a, b) case *Stream: b, ok := inB.(*Stream) if !ok { diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go index d399b24abc0..069c7dc4c04 100644 --- a/go/vt/sqlparser/ast_format.go +++ b/go/vt/sqlparser/ast_format.go @@ -339,6 +339,11 @@ func (node *AlterThrottler) Format(buf *TrackedBuffer) { } } +// Format formats the node. +func (node *ShowThrottlerStatus) Format(buf *TrackedBuffer) { + buf.astPrintf(node, "show vitess_throttler status") +} + // Format formats the node. func (node *OptLike) Format(buf *TrackedBuffer) { buf.astPrintf(node, "like %v", node.LikeTable) diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index d648e9dbda2..3a3d2f9b123 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -481,6 +481,11 @@ func (node *AlterThrottler) formatFast(buf *TrackedBuffer) { } } +// formatFast formats the node. +func (node *ShowThrottlerStatus) formatFast(buf *TrackedBuffer) { + buf.WriteString("show vitess_throttler status") +} + // formatFast formats the node. func (node *OptLike) formatFast(buf *TrackedBuffer) { buf.WriteString("like ") diff --git a/go/vt/sqlparser/ast_rewrite.go b/go/vt/sqlparser/ast_rewrite.go index 93b804ce150..8a8d38926e7 100644 --- a/go/vt/sqlparser/ast_rewrite.go +++ b/go/vt/sqlparser/ast_rewrite.go @@ -416,6 +416,8 @@ func (a *application) rewriteSQLNode(parent SQLNode, node SQLNode, replacer repl return a.rewriteRefOfShowOther(parent, node, replacer) case *ShowThrottledApps: return a.rewriteRefOfShowThrottledApps(parent, node, replacer) + case *ShowThrottlerStatus: + return a.rewriteRefOfShowThrottlerStatus(parent, node, replacer) case *StarExpr: return a.rewriteRefOfStarExpr(parent, node, replacer) case *Std: @@ -6615,6 +6617,30 @@ func (a *application) rewriteRefOfShowThrottledApps(parent SQLNode, node *ShowTh } return true } +func (a *application) rewriteRefOfShowThrottlerStatus(parent SQLNode, node *ShowThrottlerStatus, replacer replacerFunc) bool { + if node == nil { + return true + } + if a.pre != nil { + a.cur.replacer = replacer + a.cur.parent = parent + a.cur.node = node + if !a.pre(&a.cur) { + return true + } + } + if a.post != nil { + if a.pre == nil { + a.cur.replacer = replacer + a.cur.parent = parent + a.cur.node = node + } + if !a.post(&a.cur) { + return false + } + } + return true +} func (a *application) rewriteRefOfStarExpr(parent SQLNode, node *StarExpr, replacer replacerFunc) bool { if node == nil { return true @@ -8914,6 +8940,8 @@ func (a *application) rewriteStatement(parent SQLNode, node Statement, replacer return a.rewriteRefOfShowMigrationLogs(parent, node, replacer) case *ShowThrottledApps: return a.rewriteRefOfShowThrottledApps(parent, node, replacer) + case *ShowThrottlerStatus: + return a.rewriteRefOfShowThrottlerStatus(parent, node, replacer) case *Stream: return a.rewriteRefOfStream(parent, node, replacer) case *TruncateTable: diff --git a/go/vt/sqlparser/ast_visit.go b/go/vt/sqlparser/ast_visit.go index 77f6c0db3c2..3aae44fda40 100644 --- a/go/vt/sqlparser/ast_visit.go +++ b/go/vt/sqlparser/ast_visit.go @@ -416,6 +416,8 @@ func VisitSQLNode(in SQLNode, f Visit) error { return VisitRefOfShowOther(in, f) case *ShowThrottledApps: return VisitRefOfShowThrottledApps(in, f) + case *ShowThrottlerStatus: + return VisitRefOfShowThrottlerStatus(in, f) case *StarExpr: return VisitRefOfStarExpr(in, f) case *Std: @@ -3296,6 +3298,15 @@ func VisitRefOfShowThrottledApps(in *ShowThrottledApps, f Visit) error { } return nil } +func VisitRefOfShowThrottlerStatus(in *ShowThrottlerStatus, f Visit) error { + if in == nil { + return nil + } + if cont, err := f(in); err != nil || !cont { + return err + } + return nil +} func VisitRefOfStarExpr(in *StarExpr, f Visit) error { if in == nil { return nil @@ -4697,6 +4708,8 @@ func VisitStatement(in Statement, f Visit) error { return VisitRefOfShowMigrationLogs(in, f) case *ShowThrottledApps: return VisitRefOfShowThrottledApps(in, f) + case *ShowThrottlerStatus: + return VisitRefOfShowThrottlerStatus(in, f) case *Stream: return VisitRefOfStream(in, f) case *TruncateTable: diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go index 8c4beae9df4..3258e3d7837 100644 --- a/go/vt/sqlparser/cached_size.go +++ b/go/vt/sqlparser/cached_size.go @@ -3406,6 +3406,23 @@ func (cached *ShowThrottledApps) CachedSize(alloc bool) int64 { } return size } +func (cached *ShowThrottlerStatus) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + // field Comments vitess.io/vitess/go/vt/sqlparser.Comments + { + size += hack.RuntimeAllocSize(int64(cap(cached.Comments)) * int64(16)) + for _, elem := range cached.Comments { + size += hack.RuntimeAllocSize(int64(len(elem))) + } + } + return size +} func (cached *StarExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index f2ff635a413..8a9b22ce838 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2060,6 +2060,8 @@ var ( input: "alter vitess_throttler enable", }, { input: "alter vitess_throttler threshold '2s'", + }, { + input: "show vitess_throttler status", }, { input: "show warnings", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 742d626e187..445a63b4214 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1371,17 +1371,17 @@ var yyExca = [...]int{ 341, 155, -2, 507, -1, 57, - 36, 756, - 238, 756, - 249, 756, - 284, 770, - 285, 770, - -2, 758, + 36, 757, + 238, 757, + 249, 757, + 284, 771, + 285, 771, + -2, 759, -1, 62, - 240, 787, - -2, 785, + 240, 788, + -2, 786, -1, 116, - 237, 1443, + 237, 1444, -2, 121, -1, 118, 1, 148, @@ -1396,1688 +1396,1543 @@ var yyExca = [...]int{ 176, 155, 341, 155, -2, 516, - -1, 800, - 87, 1460, - -2, 1305, -1, 801, 87, 1461, - 221, 1465, -2, 1306, -1, 802, - 221, 1464, + 87, 1462, + 221, 1466, + -2, 1307, + -1, 803, + 221, 1465, -2, 39, - -1, 882, - 60, 856, - -2, 871, - -1, 968, + -1, 883, + 60, 857, + -2, 872, + -1, 969, 248, 40, 253, 40, -2, 402, - -1, 1054, + -1, 1055, 1, 564, 659, 564, -2, 155, - -1, 1343, - 221, 1465, - -2, 1306, - -1, 1491, - 60, 857, - -2, 876, - -1, 1492, + -1, 1345, + 221, 1466, + -2, 1307, + -1, 1493, 60, 858, -2, 877, - -1, 1543, + -1, 1494, + 60, 859, + -2, 878, + -1, 1545, 135, 155, 176, 155, 341, 155, -2, 441, - -1, 1622, + -1, 1624, 136, 391, 243, 391, -2, 494, - -1, 1631, + -1, 1633, 248, 41, 253, 41, -2, 403, - -1, 1989, - 221, 1469, - -2, 1463, - -1, 1990, - 221, 1465, - -2, 1461, - -1, 2089, + -1, 1991, + 221, 1470, + -2, 1464, + -1, 1992, + 221, 1466, + -2, 1462, + -1, 2091, 135, 155, 176, 155, 341, 155, -2, 442, - -1, 2096, + -1, 2098, 26, 176, -2, 178, - -1, 2460, + -1, 2462, 78, 95, 88, 95, - -2, 935, - -1, 2528, + -2, 936, + -1, 2530, 634, 683, -2, 657, - -1, 2695, - 50, 1402, - -2, 1396, - -1, 2993, + -1, 2697, + 50, 1403, + -2, 1397, + -1, 2995, 8, 54, 19, 54, 21, 54, 89, 54, - -2, 905, - -1, 3352, + -2, 906, + -1, 3354, 634, 683, -2, 671, - -1, 3440, - 23, 1821, - 33, 1821, - 177, 1821, - 260, 1821, - 321, 1821, - 322, 1821, - 323, 1821, - 324, 1821, - 325, 1821, - 326, 1821, - 327, 1821, - 329, 1821, - 330, 1821, - 331, 1821, - 332, 1821, - 333, 1821, - 334, 1821, - 335, 1821, - 336, 1821, - 337, 1821, - 338, 1821, - 339, 1821, - 340, 1821, - 342, 1821, - 344, 1821, - 345, 1821, - 346, 1821, - 347, 1821, - 348, 1821, - 349, 1821, - 350, 1821, - 351, 1821, - 352, 1821, - 355, 1821, - 356, 1821, - 357, 1821, - 358, 1821, - 359, 1821, - 361, 1821, - 362, 1821, - 363, 1821, - 364, 1821, - 505, 1821, + -1, 3442, + 23, 1822, + 33, 1822, + 177, 1822, + 260, 1822, + 321, 1822, + 322, 1822, + 323, 1822, + 324, 1822, + 325, 1822, + 326, 1822, + 327, 1822, + 329, 1822, + 330, 1822, + 331, 1822, + 332, 1822, + 333, 1822, + 334, 1822, + 335, 1822, + 336, 1822, + 337, 1822, + 338, 1822, + 339, 1822, + 340, 1822, + 342, 1822, + 344, 1822, + 345, 1822, + 346, 1822, + 347, 1822, + 348, 1822, + 349, 1822, + 350, 1822, + 351, 1822, + 352, 1822, + 355, 1822, + 356, 1822, + 357, 1822, + 358, 1822, + 359, 1822, + 361, 1822, + 362, 1822, + 363, 1822, + 364, 1822, + 505, 1822, -2, 615, } const yyPrivate = 57344 -const yyLast = 46443 +const yyLast = 46541 var yyAct = [...]int{ - 1499, 3511, 3522, 3100, 3333, 3480, 3101, 3417, 3099, 811, - 674, 804, 3481, 2086, 3438, 2925, 2038, 3070, 1546, 803, - 3383, 1856, 2847, 3406, 2018, 2750, 2757, 3317, 3265, 770, - 2798, 2807, 39, 2812, 654, 2809, 2808, 2806, 2811, 1117, - 2810, 5, 3315, 2708, 2358, 3057, 2020, 2711, 3305, 2654, - 875, 801, 3129, 2827, 2392, 2826, 656, 2709, 2156, 2712, - 2964, 2589, 2958, 2431, 2042, 898, 3134, 2765, 765, 1506, - 684, 764, 1469, 766, 2829, 2058, 2984, 2706, 2696, 2418, - 1980, 2950, 2493, 652, 2119, 2573, 2144, 2853, 2454, 771, - 1600, 2494, 2525, 2187, 2124, 2495, 157, 2074, 899, 2063, - 2443, 1119, 38, 1951, 189, 2062, 877, 189, 2424, 879, - 634, 883, 40, 2410, 1493, 640, 2394, 1871, 1852, 1095, - 2565, 2126, 2487, 1810, 2165, 189, 1950, 143, 1647, 930, - 901, 2143, 1985, 2050, 2204, 1977, 976, 958, 98, 1535, - 189, 2462, 648, 1066, 963, 1629, 99, 1515, 2065, 94, - 666, 1473, 1355, 1875, 1829, 1754, 1750, 1636, 1283, 937, - 969, 966, 1728, 934, 2141, 640, 189, 640, 938, 964, - 965, 2115, 2043, 1534, 1520, 661, 916, 918, 889, 1947, - 1000, 1339, 1986, 1315, 884, 886, 1115, 10, 79, 101, - 653, 1109, 9, 1759, 885, 8, 1595, 161, 121, 119, - 120, 1621, 126, 1049, 887, 127, 643, 78, 660, 100, - 1359, 3342, 2518, 92, 911, 2010, 3512, 3058, 2795, 1363, - 3368, 87, 1884, 906, 910, 2158, 2516, 2, 2202, 3013, - 590, 2158, 2159, 2160, 2548, 2547, 623, 629, 3050, 1713, - 3464, 89, 89, 892, 89, 1005, 3369, 122, 2581, 2582, - 3364, 3104, 128, 629, 93, 924, 768, 769, 931, 2015, - 2016, 1832, 820, 821, 822, 2817, 1817, 980, 3363, 105, - 106, 107, 1284, 110, 644, 1816, 116, 956, 2814, 185, - 1815, 623, 585, 926, 1814, 3104, 925, 878, 876, 1013, - 1813, 1812, 979, 642, 1790, 955, 2246, 3459, 646, 623, - 647, 2390, 871, 872, 873, 874, 2692, 89, 882, 1284, - 893, 1006, 1009, 1010, 947, 942, 122, 954, 953, 952, - 2658, 2815, 900, 620, 3484, 2420, 1002, 3532, 820, 821, - 822, 924, 768, 769, 1022, 3479, 913, 914, 3103, 1019, - 1020, 1021, 1500, 1024, 1025, 1026, 1027, 2821, 3502, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1045, 1046, 2817, 3364, 2538, 1300, - 3448, 606, 3103, 2191, 3468, 623, 184, 3418, 3466, 1294, - 2930, 2929, 2189, 604, 122, 2541, 3424, 3318, 3446, 2359, - 1822, 2872, 2135, 3261, 3260, 1004, 623, 3452, 3453, 3467, - 123, 3063, 145, 3465, 3064, 2767, 2768, 1003, 3493, 3271, - 3462, 80, 3447, 166, 3082, 2129, 1294, 2190, 3071, 80, - 3407, 2255, 2815, 601, 80, 80, 3347, 82, 3414, 2184, - 3270, 3081, 615, 1861, 3443, 2434, 2892, 1610, 2046, 2555, - 2556, 2391, 624, 2471, 156, 2746, 2470, 611, 2821, 2472, - 144, 2580, 3424, 1053, 2747, 2748, 2081, 2082, 2818, 1536, - 2435, 1537, 2252, 2080, 946, 2017, 2564, 948, 3147, 163, - 1112, 1085, 164, 869, 868, 1073, 2519, 3334, 2483, 917, - 1074, 951, 1290, 1059, 1060, 1282, 2253, 624, 1072, 89, - 1071, 132, 133, 155, 154, 183, 1073, 89, 2099, 2098, - 1048, 1074, 89, 89, 1297, 624, 1298, 1299, 2427, 2428, - 1090, 1091, 2766, 3485, 2961, 1062, 623, 623, 2623, 1290, - 591, 1086, 593, 607, 2769, 626, 2880, 625, 597, 2849, - 595, 599, 608, 600, 3486, 594, 1079, 605, 2878, 949, - 596, 609, 610, 613, 616, 617, 618, 614, 612, 637, - 603, 627, 1798, 2247, 2248, 2250, 2249, 1023, 635, 2818, - 1316, 2128, 641, 1102, 951, 1104, 943, 927, 921, 919, - 623, 2566, 1533, 945, 944, 2854, 1741, 1740, 1477, 2526, - 1111, 624, 2869, 1317, 1318, 1319, 1320, 1321, 1322, 1323, - 1325, 1324, 1326, 1327, 149, 130, 152, 137, 129, 2166, - 150, 151, 624, 1101, 1103, 2551, 167, 951, 1047, 1092, - 1087, 3293, 2046, 3294, 2210, 173, 138, 1734, 2850, 1093, - 1703, 2842, 949, 3460, 2205, 1080, 2044, 2045, 3514, 2843, - 141, 139, 134, 135, 136, 140, 189, 1106, 189, 1729, - 1094, 189, 131, 927, 921, 919, 2226, 1055, 2227, 2568, - 2228, 142, 2217, 2213, 2215, 2216, 2214, 2218, 2219, 2209, - 2657, 950, 1088, 1089, 1704, 3052, 1705, 3051, 2229, 2211, - 2851, 640, 1051, 640, 640, 1029, 1028, 3245, 2207, 2624, - 3048, 989, 1052, 959, 987, 2169, 3108, 960, 1330, 1614, - 2059, 960, 998, 640, 189, 1480, 997, 1333, 1334, 1335, - 1336, 2208, 996, 995, 1099, 994, 993, 1347, 1100, 978, - 1351, 1289, 1286, 1287, 1288, 1293, 1295, 1292, 1105, 1291, - 992, 1343, 624, 624, 999, 991, 986, 1330, 2769, 1285, - 1107, 1083, 3341, 2517, 957, 1069, 158, 1075, 1076, 1077, - 1078, 935, 1098, 1341, 950, 933, 184, 3533, 1289, 1286, - 1287, 1288, 1293, 1295, 1292, 3491, 1291, 935, 2253, 628, - 1113, 1114, 3420, 1743, 2520, 978, 1285, 2572, 971, 935, - 123, 2553, 1050, 2585, 972, 2485, 624, 920, 1270, 1751, - 621, 817, 817, 166, 817, 2188, 1635, 950, 1008, 2142, - 912, 2788, 3419, 3047, 971, 622, 1532, 978, 1007, 2569, - 2044, 2045, 2195, 3526, 2194, 1747, 2962, 1275, 1271, 1272, - 977, 1016, 2267, 2550, 153, 1608, 971, 974, 975, 1337, - 935, 2132, 1607, 3451, 968, 972, 2476, 990, 3420, 1737, - 988, 1735, 1736, 1606, 1738, 1739, 3102, 3011, 3012, 163, - 2536, 1748, 164, 1604, 2753, 967, 1467, 1715, 1714, 1716, - 1717, 1718, 589, 920, 584, 3330, 2819, 2820, 3419, 3000, - 83, 2133, 3080, 1343, 2980, 183, 977, 3450, 2131, 2823, - 3102, 2186, 971, 974, 975, 146, 935, 1733, 147, 2563, - 968, 972, 2562, 2467, 2430, 1501, 1503, 1331, 1332, 2754, - 2540, 2395, 2397, 1634, 1361, 2367, 1362, 1864, 977, 1524, - 1061, 1058, 2134, 1432, 1064, 2254, 1483, 1365, 159, 88, - 1487, 2425, 2130, 2756, 118, 171, 879, 88, 1070, 1468, - 189, 2575, 88, 88, 640, 640, 2574, 2870, 2087, 1484, - 2575, 2751, 1330, 1082, 2539, 2574, 1327, 2745, 1885, 895, - 189, 1481, 1096, 1110, 1084, 3355, 1001, 113, 2767, 2768, - 3043, 1834, 1886, 2974, 2206, 2752, 179, 2819, 2820, 1068, - 640, 1760, 1807, 189, 2914, 1835, 1328, 1329, 1833, 1744, - 2823, 978, 1538, 2609, 1876, 640, 167, 1876, 1485, 2284, - 2509, 189, 98, 1468, 1015, 173, 1486, 3494, 2758, 1299, - 99, 3143, 1438, 1439, 1440, 1441, 1442, 160, 165, 162, - 168, 169, 170, 172, 174, 175, 176, 177, 1824, 1826, - 1827, 1298, 1299, 178, 180, 181, 182, 1474, 640, 114, - 1461, 3524, 3018, 3017, 3525, 1730, 3523, 1731, 2173, 1644, - 1732, 1343, 1825, 101, 1643, 1300, 1633, 640, 640, 2183, - 640, 2181, 640, 640, 989, 640, 640, 640, 640, 640, - 640, 987, 2178, 1641, 3487, 2766, 3001, 2396, 1343, 3385, - 3534, 1343, 640, 1343, 189, 2185, 2178, 2769, 3323, 891, - 978, 3077, 977, 3078, 1471, 3528, 3253, 981, 971, 1698, - 1676, 1883, 983, 1679, 189, 1681, 984, 982, 876, 1097, - 1620, 2182, 3252, 1505, 878, 978, 1627, 640, 1482, 189, - 1502, 1054, 1067, 3243, 3386, 2180, 158, 2590, 1761, 1488, - 3093, 1637, 1637, 3324, 640, 1649, 189, 1650, 1723, 1652, - 1654, 3092, 1639, 1658, 1660, 1662, 1664, 1666, 1529, 1530, - 1721, 3025, 189, 1638, 1300, 1710, 1611, 1612, 1613, 189, - 1680, 2259, 2260, 2261, 3024, 1603, 3014, 3535, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 640, 2051, 2052, - 820, 821, 822, 1617, 1618, 1630, 1756, 1616, 1300, 2796, - 1297, 977, 1298, 1299, 1982, 1609, 981, 971, 1979, 2611, - 2755, 983, 1722, 2784, 2491, 984, 982, 1981, 2490, 1684, - 2592, 1762, 1763, 2138, 1720, 1300, 977, 1724, 1014, 1709, - 1300, 815, 1011, 1688, 1689, 1767, 985, 1708, 1707, 1694, - 1695, 2281, 1774, 1775, 1776, 1500, 1706, 1316, 1752, 2584, - 1696, 1690, 1881, 1764, 1322, 1323, 1325, 1324, 1326, 1327, - 1768, 1882, 1770, 1771, 1772, 1773, 1687, 1686, 1685, 1777, - 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, - 1327, 1789, 122, 954, 953, 952, 1656, 1982, 1300, 2602, - 2601, 2600, 2594, 2846, 2598, 1274, 2593, 629, 2591, 1297, - 95, 1298, 1299, 2596, 1533, 1766, 3488, 2887, 159, 3498, - 1500, 96, 2595, 3350, 2280, 171, 1316, 3349, 2266, 3008, - 629, 3327, 1787, 2474, 629, 1300, 2154, 2153, 1788, 3326, - 2597, 2599, 1509, 1297, 3325, 1298, 1299, 3248, 39, 1317, - 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, - 1803, 640, 640, 1300, 2152, 2151, 179, 2150, 2149, 640, - 1297, 3232, 1298, 1299, 189, 1297, 1500, 1298, 1299, 2416, - 3513, 1859, 1859, 1500, 1500, 104, 95, 3231, 1510, 1838, - 3142, 1857, 1857, 97, 1860, 2759, 103, 96, 102, 2763, - 3140, 1879, 3475, 1500, 3343, 1880, 2762, 160, 165, 162, - 168, 169, 170, 172, 174, 175, 176, 177, 3089, 3274, - 1467, 3279, 640, 178, 180, 181, 182, 1828, 1300, 1296, - 1500, 3278, 1343, 1297, 1466, 1298, 1299, 2416, 3413, 1943, - 2764, 1830, 1300, 640, 1465, 2760, 1464, 3496, 1500, 1343, - 2761, 3022, 1500, 3236, 1341, 3007, 1300, 1316, 2321, 2855, - 1312, 2852, 1313, 2787, 2311, 2786, 1500, 1975, 1296, 1500, - 1297, 1877, 1298, 1299, 640, 640, 1314, 1328, 1329, 1311, - 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, - 1327, 2500, 2004, 1468, 2416, 3393, 1795, 1796, 1297, 2488, - 1298, 1299, 1831, 1300, 79, 1937, 1806, 2416, 3389, 1501, - 2011, 1804, 1987, 1500, 1805, 1948, 1320, 1321, 1322, 1323, - 1325, 1324, 1326, 1327, 1990, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1325, 1324, 1326, 1327, 1836, 1978, 3376, 1500, - 3430, 1500, 3235, 2035, 1837, 1463, 1839, 1840, 1841, 1842, - 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 2225, - 1300, 2200, 1863, 1297, 2463, 1298, 1299, 189, 3061, 3340, - 3256, 1500, 640, 104, 1989, 1870, 1872, 1297, 2199, 1298, - 1299, 2041, 2272, 2012, 103, 2023, 102, 3428, 1500, 1948, - 2028, 1297, 2029, 1298, 1299, 97, 189, 2416, 3244, 640, - 2096, 3061, 1500, 3069, 1987, 1300, 98, 1992, 1993, 189, - 2416, 3059, 2527, 640, 99, 1791, 1990, 189, 1757, 189, - 2463, 189, 189, 2178, 1500, 1939, 98, 2464, 1988, 97, - 1887, 1888, 1889, 1890, 99, 1719, 640, 2466, 1297, 2505, - 1298, 1299, 1711, 2139, 1901, 1316, 2978, 1500, 2034, 2332, - 1500, 2777, 2776, 2095, 1500, 2973, 1991, 1300, 2061, 1994, - 1995, 1701, 2105, 2106, 2107, 2108, 1989, 2323, 1317, 1318, - 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, 1697, - 2090, 1693, 2100, 2464, 2101, 2102, 2103, 2104, 1500, 3426, - 1500, 640, 892, 2253, 2072, 1297, 2022, 1298, 1299, 1692, - 2111, 2112, 2113, 2114, 1304, 1305, 1306, 1307, 1308, 1309, - 1310, 1302, 1691, 2033, 2091, 2773, 2774, 2179, 640, 2121, - 2056, 1511, 2167, 2036, 640, 2127, 2773, 2772, 89, 2094, - 1108, 2274, 1296, 1316, 2440, 1500, 2054, 2253, 2549, 2432, - 1297, 2273, 1298, 1299, 926, 1300, 2078, 925, 2077, 2076, - 1300, 1599, 2530, 2975, 2093, 2092, 1317, 1318, 1319, 1320, - 1321, 1322, 1323, 1325, 1324, 1326, 1327, 3381, 1300, 2432, - 1925, 640, 2523, 2524, 2137, 2178, 640, 2416, 2415, 3354, - 640, 640, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, - 1326, 1327, 1297, 1300, 1298, 1299, 2164, 2277, 1500, 2122, - 1862, 1500, 980, 2117, 2118, 2416, 2140, 2440, 2136, 1599, - 1598, 2440, 1637, 2412, 2148, 1300, 1544, 1543, 189, 2172, - 2934, 2775, 2175, 103, 2176, 189, 2707, 979, 97, 3302, - 1500, 2170, 2171, 2174, 2122, 3489, 2740, 2973, 189, 189, - 2439, 2973, 189, 2196, 189, 2193, 2253, 2197, 2198, 2192, - 2680, 189, 3300, 1500, 2079, 2277, 2332, 2308, 189, 1917, - 1906, 1907, 1908, 1909, 1919, 1910, 1911, 1912, 1924, 1920, - 1913, 1914, 1921, 1922, 1923, 1915, 1916, 1918, 3338, 2307, - 1297, 2178, 1298, 1299, 189, 1297, 2277, 1298, 1299, 640, - 2203, 2161, 1296, 2049, 1504, 2440, 2013, 1862, 1808, 3297, - 1500, 1746, 1300, 1297, 2270, 1298, 1299, 1531, 2275, 962, - 2264, 2278, 961, 2279, 3026, 881, 3456, 1300, 2286, 3396, - 3267, 1507, 2288, 2289, 2290, 3233, 3154, 3042, 1297, 3039, - 1298, 1299, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, - 2304, 2305, 3020, 2897, 2271, 2232, 2239, 2240, 2896, 1601, - 1297, 2242, 1298, 1299, 1343, 2120, 1990, 1300, 1672, 2844, - 2243, 2801, 2797, 1830, 2531, 3027, 3028, 3029, 2312, 2313, - 2314, 2315, 2316, 2116, 2318, 2110, 2269, 1300, 2320, 2109, - 1726, 1300, 2325, 2326, 1632, 2327, 3283, 1500, 2330, 1628, - 2331, 1597, 1300, 89, 2334, 115, 1300, 2291, 2338, 2496, - 2799, 2995, 2343, 2344, 2345, 2346, 1989, 2251, 3508, 1673, - 1674, 1675, 2497, 1300, 2306, 2357, 1053, 2360, 2361, 1300, - 2985, 2986, 3030, 1300, 1831, 2363, 2365, 2848, 2262, 3268, - 2135, 1793, 2368, 2369, 2370, 2371, 2372, 1297, 1300, 1298, - 1299, 2949, 1500, 2379, 2380, 2026, 2381, 2497, 3506, 2384, - 2386, 2035, 1297, 2388, 1298, 1299, 3482, 3362, 1300, 3288, - 1988, 2942, 1500, 2400, 2988, 2263, 3240, 2265, 2283, 3031, - 3032, 3033, 2793, 2792, 1859, 2791, 2939, 1500, 2707, 1300, - 2937, 1500, 2510, 1300, 1857, 2233, 2401, 2991, 2990, 2726, - 2319, 2729, 1297, 1794, 1298, 1299, 2730, 2902, 1500, 2725, - 3358, 1300, 3269, 2885, 1500, 189, 1300, 2944, 2399, 2040, - 1508, 2032, 1297, 189, 1298, 1299, 1297, 2979, 1298, 1299, - 2685, 2684, 2387, 1500, 640, 2317, 3322, 1297, 39, 1298, - 1299, 1297, 1668, 1298, 1299, 640, 2727, 2456, 3133, 3135, - 2436, 2728, 2385, 1500, 1300, 2402, 2417, 2404, 1297, 2969, - 1298, 1299, 2694, 1745, 1297, 867, 1298, 1299, 1297, 189, - 1298, 1299, 2966, 189, 1500, 2771, 2481, 2364, 1500, 1300, - 2965, 2501, 1018, 1297, 1300, 1298, 1299, 1017, 2863, 1669, - 1670, 1671, 2496, 2697, 2699, 2347, 1500, 1513, 2578, 2413, - 2339, 1500, 2700, 1297, 2426, 1298, 1299, 2445, 2448, 2449, - 2450, 2446, 1474, 2447, 2451, 2389, 2484, 2486, 1885, 1300, - 2455, 2971, 1273, 3124, 1297, 3123, 1298, 1299, 1297, 2522, - 1298, 1299, 1886, 2409, 649, 2537, 2477, 640, 2414, 3044, - 1300, 123, 97, 189, 896, 2461, 1297, 2429, 1298, 1299, - 189, 1297, 897, 1298, 1299, 2731, 95, 2449, 2450, 3520, - 2546, 2789, 2127, 1512, 640, 2465, 1300, 96, 2940, 2468, - 2236, 640, 3435, 3122, 95, 3339, 2475, 1475, 1300, 3263, - 640, 97, 1300, 2489, 2770, 96, 2478, 1300, 102, 1297, - 2453, 1298, 1299, 2051, 2052, 1300, 1343, 2498, 2037, 1300, - 904, 905, 2951, 2912, 1300, 2224, 2223, 2683, 2222, 189, - 189, 189, 189, 189, 1297, 2682, 1298, 1299, 2544, 1297, - 2221, 1298, 1299, 2506, 2908, 2507, 2220, 2511, 2512, 2513, - 1300, 2257, 3310, 587, 189, 189, 2543, 902, 3309, 1620, - 908, 908, 2613, 2614, 2615, 2616, 2617, 1300, 3291, 3141, - 2894, 870, 2587, 3139, 1297, 189, 1298, 1299, 3138, 2499, - 1300, 2622, 2893, 103, 2502, 2503, 2890, 2542, 3131, 2532, - 2533, 104, 2492, 3040, 2970, 1297, 640, 1298, 1299, 2383, - 2968, 2802, 103, 2382, 102, 2603, 2162, 1615, 2378, 903, - 3130, 104, 936, 97, 2567, 2959, 2432, 3510, 3509, 2605, - 2586, 1297, 103, 1298, 1299, 3112, 2570, 2618, 2576, 2412, - 2625, 2577, 2309, 1297, 2377, 1298, 1299, 1297, 1300, 1298, - 1299, 2024, 1297, 640, 1298, 1299, 1525, 104, 1517, 3509, - 1297, 2376, 1298, 1299, 1297, 3510, 1298, 1299, 103, 1297, - 102, 1298, 1299, 2604, 2375, 2606, 108, 109, 3328, 3006, - 1300, 894, 3, 91, 1, 1742, 2659, 2664, 2635, 3010, - 2637, 640, 3445, 2661, 602, 1297, 2014, 1298, 1299, 640, - 1472, 3483, 3441, 3442, 1712, 1702, 2648, 2649, 2650, 2651, - 3072, 1978, 1297, 1978, 1298, 1299, 2633, 1949, 2716, 3264, - 2627, 2805, 1300, 2168, 3038, 1297, 2125, 1298, 1299, 970, - 640, 148, 2374, 2088, 2089, 2734, 2735, 3409, 112, 2588, - 928, 1300, 111, 973, 189, 1081, 2163, 883, 640, 3062, - 2664, 2482, 2097, 1550, 2687, 2643, 2644, 2645, 2646, 2647, - 1548, 1300, 640, 2719, 2373, 2739, 1343, 1487, 2456, 640, - 640, 1343, 189, 189, 189, 189, 189, 2704, 2660, 2663, - 2662, 2688, 1549, 1297, 189, 1298, 1299, 1547, 2710, 189, - 2675, 1552, 189, 2710, 189, 1551, 2871, 189, 189, 189, - 2310, 2913, 1797, 2686, 636, 2713, 2362, 2679, 2689, 2452, - 2701, 2702, 2676, 2677, 2678, 1297, 630, 1298, 1299, 186, - 884, 2721, 2722, 1539, 2724, 2356, 2720, 1518, 2825, 2723, - 885, 2741, 2732, 2926, 2742, 98, 1012, 1300, 592, 2778, - 2736, 2737, 189, 99, 2743, 2355, 2201, 2718, 598, 1756, - 1348, 1792, 2681, 2749, 1300, 640, 2469, 1297, 1343, 1298, - 1299, 923, 915, 640, 2865, 2025, 2779, 2781, 189, 2403, - 2780, 922, 1300, 3241, 2715, 2963, 1297, 2693, 1298, 1299, - 2804, 2695, 189, 2419, 2882, 2883, 2884, 2832, 2886, 2888, - 2833, 2698, 2691, 3321, 1300, 3132, 1297, 2127, 1298, 1299, - 2867, 189, 2895, 3394, 189, 2824, 2479, 2899, 2900, 2901, - 2903, 2904, 2905, 2906, 1514, 2839, 2907, 2933, 2909, 2910, - 2911, 2354, 1300, 2915, 2916, 2917, 2918, 2919, 2920, 2921, - 2922, 2923, 2924, 2803, 2859, 2856, 2858, 2282, 2353, 1300, - 1874, 2931, 1338, 2066, 2935, 3107, 2936, 2938, 2866, 2941, - 2943, 1823, 2945, 2946, 2947, 2948, 2352, 2782, 2783, 2876, - 2954, 2873, 2874, 658, 2875, 657, 655, 2877, 2405, 2879, - 2433, 2881, 1297, 1303, 1298, 1299, 805, 2393, 2351, 2928, - 1526, 2444, 2442, 2441, 640, 2234, 2932, 2073, 2987, 1297, - 2983, 1298, 1299, 3437, 1300, 2976, 2977, 2068, 2064, 2981, - 2861, 2862, 2411, 1300, 756, 755, 2350, 1297, 667, 1298, - 1299, 659, 651, 189, 754, 753, 1300, 2993, 2994, 3003, - 2831, 3421, 1300, 2349, 2552, 2845, 1300, 2554, 2480, 1297, - 2957, 1298, 1299, 2841, 1300, 1281, 1490, 645, 1300, 2952, - 2953, 2955, 2445, 2448, 2449, 2450, 2446, 941, 2447, 2451, - 2868, 2960, 2985, 2986, 2967, 3345, 2256, 1297, 1300, 1298, - 1299, 2891, 1300, 2982, 1489, 1904, 2972, 1905, 3352, 2813, - 3056, 2794, 189, 2528, 1297, 2155, 1298, 1299, 2348, 65, - 2989, 43, 3316, 2992, 3382, 2998, 2999, 2342, 752, 749, - 3109, 3110, 1057, 1300, 1063, 2996, 3111, 1065, 3045, 3046, - 2341, 189, 2832, 1300, 3004, 2833, 2340, 3060, 3005, 2997, - 2337, 2655, 2656, 3365, 1300, 1301, 3366, 3021, 2336, 3023, - 189, 748, 2335, 189, 189, 189, 3066, 3067, 1300, 1297, - 3367, 1298, 1299, 640, 640, 1932, 1300, 1278, 1297, 3458, - 1298, 1299, 2333, 1799, 1356, 90, 2329, 34, 33, 3079, - 1277, 1297, 3083, 1298, 1299, 32, 31, 1297, 30, 1298, - 1299, 1297, 25, 1298, 1299, 24, 23, 22, 21, 1297, - 27, 1298, 1299, 1297, 20, 1298, 1299, 2328, 19, 3094, - 640, 640, 640, 640, 18, 2816, 3478, 2324, 3519, 117, - 3068, 52, 49, 1297, 3098, 1298, 1299, 1297, 2322, 1298, - 1299, 47, 1498, 1494, 125, 124, 3106, 50, 46, 1056, - 44, 29, 2287, 28, 3113, 17, 16, 1495, 15, 3084, - 2276, 14, 13, 12, 3015, 3016, 11, 7, 1297, 6, - 1298, 1299, 37, 36, 35, 1802, 26, 3088, 1297, 4, - 1298, 1299, 2030, 2031, 1497, 2515, 1496, 2157, 0, 1297, - 0, 1298, 1299, 0, 0, 0, 3105, 0, 0, 3127, - 0, 3096, 0, 1297, 0, 1298, 1299, 0, 0, 0, - 0, 1297, 0, 1298, 1299, 0, 3049, 1498, 1494, 0, - 3053, 3054, 3055, 0, 0, 1859, 189, 39, 0, 0, - 0, 0, 1495, 0, 0, 1857, 0, 3156, 0, 3148, - 3128, 0, 0, 0, 3137, 1343, 0, 3150, 0, 3136, - 640, 3144, 640, 3152, 0, 3146, 0, 1491, 1492, 1497, - 0, 1496, 0, 0, 0, 0, 0, 2710, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3255, 0, 3242, - 3157, 3158, 0, 3160, 0, 2713, 3262, 0, 0, 2713, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3272, 3273, 1516, 3275, - 0, 3276, 3277, 0, 640, 3238, 3280, 3281, 3282, 3239, - 3284, 3287, 3254, 3285, 3237, 0, 3286, 189, 0, 0, - 640, 3266, 0, 0, 1859, 3259, 3296, 3298, 3299, 3301, - 3303, 3304, 3306, 640, 1857, 1602, 3289, 3258, 0, 816, - 0, 0, 81, 0, 0, 0, 0, 0, 3246, 1528, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1545, 3290, 3292, - 3336, 0, 0, 3295, 0, 0, 0, 0, 0, 0, - 0, 3332, 0, 640, 3311, 3312, 0, 640, 640, 0, - 0, 3314, 3313, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3329, 0, 0, 0, 0, - 0, 0, 0, 0, 3320, 0, 640, 0, 3335, 880, - 0, 81, 0, 0, 0, 0, 0, 0, 3331, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 880, 3249, 3250, 3251, 0, 0, 0, 2713, 0, 0, - 1682, 0, 0, 0, 0, 940, 0, 0, 0, 0, - 3337, 0, 0, 1758, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1727, 0, 0, 0, 0, - 0, 0, 0, 0, 3356, 640, 3361, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 3348, 0, 0, 0, - 0, 189, 3351, 0, 0, 3353, 3377, 0, 1765, 0, - 0, 0, 3378, 3379, 0, 1769, 0, 0, 0, 640, - 189, 0, 0, 0, 0, 0, 1780, 1781, 1782, 1783, - 1784, 1785, 1786, 0, 3390, 3344, 0, 3371, 0, 0, - 3372, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3360, 3380, 0, 0, - 3415, 3416, 0, 0, 3370, 0, 0, 0, 0, 39, - 640, 0, 3387, 3397, 3425, 3427, 3429, 0, 3423, 3422, - 1343, 3395, 640, 3408, 3400, 0, 3405, 0, 3402, 3401, - 3399, 3404, 0, 3403, 3266, 3410, 0, 0, 0, 3457, - 0, 3392, 2710, 0, 0, 0, 640, 640, 0, 3433, - 0, 0, 0, 0, 0, 3436, 0, 0, 0, 3454, - 3444, 3449, 0, 0, 0, 0, 3463, 0, 640, 3423, - 3422, 0, 0, 0, 0, 0, 3461, 0, 3474, 0, - 0, 0, 189, 640, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3472, 0, 0, 3477, 1351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3495, 3497, 3499, 3490, 0, 0, 0, 0, 0, 3492, - 0, 1818, 1819, 1820, 1821, 0, 640, 3507, 1859, 3500, - 3501, 3503, 0, 3505, 0, 0, 0, 0, 1857, 0, - 3504, 3518, 3515, 0, 0, 3423, 3422, 0, 640, 3521, - 1811, 0, 0, 3527, 0, 3529, 0, 3530, 3531, 0, - 0, 0, 0, 0, 0, 640, 0, 640, 0, 0, - 1865, 1866, 0, 0, 0, 1868, 0, 908, 908, 1873, - 3538, 3539, 1859, 1878, 3286, 3537, 0, 0, 0, 0, - 0, 0, 1857, 0, 3536, 0, 1891, 1892, 1893, 1894, - 1895, 1896, 1897, 1898, 1899, 1900, 0, 0, 0, 0, - 1926, 1927, 1928, 1929, 1930, 1931, 1933, 0, 1938, 0, - 1940, 1941, 1942, 0, 1944, 1945, 1946, 0, 1952, 1953, - 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, - 1974, 0, 1976, 0, 1983, 1984, 908, 0, 908, 908, - 908, 908, 908, 0, 0, 0, 0, 0, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 0, 2005, 2006, 2007, - 2008, 2009, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2047, 2048, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2085, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2053, 0, 0, 0, 1116, - 0, 1116, 1116, 2057, 0, 2060, 0, 0, 1811, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2123, 3178, 3180, 3179, 3197, 3198, 3199, 3200, - 3201, 3202, 3203, 706, 0, 0, 0, 0, 880, 1340, - 1345, 1346, 0, 1349, 0, 1350, 1352, 1353, 1354, 0, - 1357, 1358, 1360, 1360, 0, 1360, 1364, 1364, 1366, 1367, - 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, - 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, - 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, - 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, - 1428, 1429, 1430, 0, 0, 0, 0, 1431, 0, 1433, - 1434, 1435, 1436, 1437, 0, 0, 0, 0, 0, 0, - 0, 0, 1364, 1364, 1364, 1364, 1364, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1443, 1444, 1445, 1446, - 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1470, 0, 0, - 0, 0, 0, 0, 1811, 0, 0, 0, 184, 0, - 0, 2212, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2230, 2231, 0, 0, 2235, 0, - 0, 0, 123, 0, 0, 0, 0, 2238, 0, 0, - 0, 0, 0, 0, 2241, 166, 0, 0, 0, 0, - 1476, 0, 0, 0, 0, 0, 880, 0, 0, 0, - 880, 0, 0, 3184, 0, 0, 880, 0, 0, 0, - 2244, 0, 0, 0, 0, 0, 0, 0, 3192, 3193, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 163, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 2285, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2292, 2293, 2294, 2295, 0, 183, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 772, 0, 685, 776, 687, 773, 774, 0, 683, 686, - 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1356, 0, 0, - 0, 0, 0, 0, 0, 0, 704, 705, 3177, 3181, - 3182, 3183, 3194, 3195, 3196, 3204, 3206, 737, 3205, 3207, - 3208, 3209, 3212, 3213, 3214, 3215, 3210, 3211, 3216, 3161, - 3165, 3162, 3163, 3164, 3176, 3166, 3167, 3168, 3169, 3170, - 3171, 3172, 3173, 3174, 3175, 3217, 3218, 3219, 3220, 3221, - 3222, 3187, 3191, 3190, 3188, 3189, 3185, 3186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, - 777, 0, 778, 0, 184, 782, 0, 173, 0, 784, - 783, 0, 785, 751, 750, 2521, 0, 779, 780, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 123, 0, - 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 166, 0, 0, 1516, 1116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 156, 0, 0, 0, 0, 0, 144, 0, - 0, 0, 0, 0, 0, 3223, 3224, 3225, 3226, 3227, - 3228, 3229, 3230, 0, 0, 0, 0, 163, 0, 0, - 164, 0, 0, 0, 0, 0, 0, 0, 0, 2460, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1623, - 1624, 155, 154, 183, 0, 0, 0, 0, 158, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 619, 0, 1116, - 1116, 0, 0, 639, 0, 0, 0, 0, 81, 0, - 0, 0, 149, 1625, 152, 0, 1622, 0, 150, 151, - 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 0, 2557, 2558, 2559, 2560, 2561, - 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 639, 0, 639, 0, 0, 0, 0, - 1811, 2571, 908, 0, 0, 2607, 2608, 0, 0, 2610, - 0, 0, 2612, 0, 0, 0, 0, 0, 0, 0, - 0, 2579, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 0, 2619, 2620, 2621, 0, 0, 171, 0, 0, - 0, 0, 0, 0, 2626, 0, 0, 2628, 2629, 2630, - 0, 0, 0, 2631, 2632, 0, 0, 1952, 2634, 0, - 0, 2636, 0, 0, 2638, 2639, 2640, 2641, 0, 0, - 0, 0, 2642, 1952, 1952, 1952, 1952, 1952, 179, 0, - 3476, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1567, 908, 0, 0, 158, 0, 0, 0, 2665, 2666, - 2667, 2668, 2669, 2670, 0, 0, 0, 2671, 2672, 0, - 2673, 0, 2674, 0, 0, 0, 0, 0, 0, 160, - 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, - 0, 0, 0, 0, 0, 178, 180, 181, 182, 1567, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2705, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2738, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 1555, 0, 147, 0, 0, 0, - 0, 0, 0, 0, 2800, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 0, 0, 940, - 0, 0, 0, 171, 0, 0, 0, 0, 2790, 0, - 0, 0, 0, 1555, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 940, 0, 2828, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 1568, 2840, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2889, 2857, 0, 0, - 2860, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2898, 0, 0, 0, 0, 160, 165, 162, 168, 169, - 170, 172, 174, 175, 176, 177, 1568, 0, 0, 0, - 0, 178, 180, 181, 182, 0, 0, 0, 1581, 1584, - 1585, 1586, 1587, 1588, 1589, 0, 1590, 1591, 1592, 1593, - 1594, 1569, 1570, 1571, 1572, 1553, 1554, 1582, 0, 1556, - 0, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, - 0, 0, 1566, 1573, 1574, 1575, 1576, 0, 1577, 1578, - 1579, 1580, 0, 0, 0, 0, 0, 1581, 1584, 1585, - 1586, 1587, 1588, 1589, 0, 1590, 1591, 1592, 1593, 1594, - 1569, 1570, 1571, 1572, 1553, 1554, 1582, 0, 1556, 2956, - 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 0, - 0, 1566, 1573, 1574, 1575, 1576, 0, 1577, 1578, 1579, - 1580, 0, 0, 89, 0, 0, 818, 0, 0, 0, - 806, 819, 820, 821, 822, 807, 0, 0, 808, 809, - 0, 810, 2258, 0, 0, 0, 0, 0, 0, 639, - 1269, 639, 639, 0, 0, 815, 823, 824, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 639, 3041, 0, 0, 0, 0, 0, 0, 0, - 0, 2268, 0, 0, 0, 0, 0, 3019, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1342, - 0, 0, 2834, 2835, 0, 3065, 3034, 0, 0, 3035, - 3036, 3037, 1583, 0, 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, 0, 0, 0, 0, - 3085, 1583, 3086, 0, 0, 3087, 0, 0, 3090, 3091, - 0, 0, 0, 0, 0, 0, 0, 3095, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3097, 0, 0, - 0, 0, 0, 0, 0, 0, 2836, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2366, 0, 3114, - 0, 0, 3115, 0, 3116, 3117, 0, 3118, 757, 3119, - 0, 0, 0, 0, 3120, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2398, - 0, 1342, 0, 0, 0, 0, 0, 0, 0, 3145, - 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, - 3153, 0, 0, 3155, 0, 0, 0, 0, 0, 0, - 2837, 2838, 0, 0, 0, 0, 0, 3159, 2437, 2438, - 0, 0, 638, 0, 0, 0, 0, 2457, 0, 2458, - 2459, 0, 0, 0, 0, 3234, 0, 0, 80, 41, - 42, 82, 639, 639, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, - 0, 0, 45, 71, 72, 0, 69, 73, 0, 0, - 0, 0, 932, 0, 939, 70, 0, 0, 639, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 772, 0, 639, 776, 0, 773, 774, 0, 0, - 0, 775, 0, 1596, 58, 0, 0, 0, 0, 0, - 0, 0, 0, 1605, 0, 0, 89, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 639, 0, 1631, 2535, - 0, 0, 0, 0, 0, 3319, 1640, 0, 0, 1342, - 1642, 0, 0, 1645, 1646, 639, 639, 0, 639, 0, - 639, 639, 0, 639, 639, 639, 639, 639, 639, 0, - 0, 0, 0, 0, 0, 0, 1342, 1677, 1678, 1342, - 639, 1342, 0, 1683, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1749, - 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 0, 0, 0, 48, 51, 54, 53, 56, 1619, - 68, 0, 0, 77, 74, 0, 0, 0, 0, 0, - 0, 0, 123, 0, 145, 639, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 57, 85, 84, 3359, - 0, 66, 67, 55, 0, 0, 0, 0, 0, 75, - 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3373, 0, 0, 3374, 156, 3375, 0, 2652, - 0, 0, 144, 0, 0, 0, 3357, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 163, 59, 60, 164, 61, 62, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1623, 1624, 155, 154, 183, 0, 0, - 0, 0, 2067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2714, 0, 81, 0, 0, - 2067, 2067, 2067, 2067, 2067, 0, 0, 0, 758, 0, - 0, 3455, 0, 0, 0, 0, 0, 2457, 880, 0, - 0, 0, 2067, 0, 0, 2067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, - 639, 3469, 0, 3470, 0, 3471, 0, 639, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 588, 0, 149, 1625, 152, 0, - 1622, 0, 150, 151, 83, 0, 0, 0, 167, 0, - 0, 0, 588, 0, 0, 0, 0, 173, 2822, 0, - 0, 0, 0, 0, 0, 0, 0, 890, 2830, 0, - 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1342, 3516, 0, 3517, 909, 909, 0, 0, 0, 1867, - 0, 639, 0, 588, 0, 0, 0, 1342, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 639, 639, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0, - 1118, 1118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1276, 0, 639, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, - 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, - 0, 639, 0, 0, 639, 0, 0, 0, 0, 0, - 2067, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3002, 639, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, - 0, 0, 0, 0, 0, 0, 2145, 2146, 2147, 0, - 159, 0, 0, 0, 0, 0, 0, 171, 0, 0, - 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, - 0, 0, 639, 1640, 0, 0, 1640, 0, 1640, 0, - 0, 0, 0, 0, 2177, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, - 0, 1478, 1479, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, - 0, 0, 0, 0, 639, 0, 0, 0, 639, 639, - 0, 0, 0, 0, 0, 0, 0, 1522, 0, 160, - 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, - 0, 0, 1540, 0, 0, 178, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3121, 0, 3125, 3126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 932, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2714, 0, 81, 0, 2714, - 0, 0, 0, 0, 1648, 1648, 0, 1648, 0, 1648, - 1648, 0, 1657, 1648, 1648, 1648, 1648, 1648, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 639, 0, 932, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 588, 0, 0, 588, 0, - 0, 0, 0, 0, 1725, 0, 0, 0, 3247, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1753, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1342, 0, 639, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2714, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1385, 1386, 1387, - 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1416, 1417, 1418, - 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1443, 1444, 1445, - 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, - 1456, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 639, 0, 0, 3346, 0, 0, 0, 0, - 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, - 1344, 0, 0, 81, 0, 0, 0, 0, 1118, 1118, - 0, 0, 0, 0, 0, 0, 1800, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2473, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1853, - 0, 0, 0, 0, 3391, 0, 0, 890, 0, 81, - 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, - 1869, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 639, 0, 0, 0, 0, 0, 588, 639, - 0, 1902, 1903, 1640, 1640, 0, 0, 0, 639, 0, + 1501, 3101, 3102, 812, 3335, 3513, 3482, 3419, 3483, 3440, + 3524, 805, 3072, 3103, 2088, 675, 2927, 1548, 3385, 804, + 1858, 2040, 2849, 3408, 2020, 2752, 2759, 3319, 2809, 771, + 3267, 2814, 39, 655, 2811, 2810, 2808, 2813, 2812, 1119, + 3317, 899, 3059, 2710, 767, 3131, 5, 2360, 2022, 2800, + 876, 802, 2656, 3307, 2713, 2394, 657, 2711, 2158, 2714, + 3136, 2960, 2966, 2828, 2829, 2591, 2044, 2767, 2456, 2986, + 1508, 766, 1471, 2060, 765, 685, 2831, 2708, 2698, 772, + 2420, 2952, 1982, 653, 2121, 2495, 2855, 2575, 2189, 2146, + 1602, 2496, 2527, 931, 2126, 2497, 157, 2076, 900, 2445, + 2065, 40, 38, 2064, 189, 2426, 1121, 189, 1495, 880, + 635, 884, 878, 2412, 2396, 641, 1953, 1873, 1854, 1096, + 2567, 2145, 2128, 1812, 2167, 189, 1649, 143, 1631, 2489, + 902, 2052, 1987, 959, 2206, 2433, 964, 1979, 98, 1537, + 189, 1517, 649, 2464, 2067, 667, 94, 1067, 1475, 1357, + 1756, 1877, 99, 1831, 1752, 1638, 938, 1285, 967, 935, + 2143, 970, 1730, 939, 2117, 641, 189, 641, 965, 966, + 977, 2045, 1536, 1522, 662, 917, 919, 890, 1949, 1341, + 1001, 1988, 1317, 886, 885, 887, 101, 10, 79, 9, + 654, 1110, 8, 1761, 161, 121, 119, 120, 1597, 126, + 1623, 127, 1050, 888, 78, 912, 1117, 100, 2012, 644, + 87, 661, 1365, 1361, 3344, 2520, 92, 3514, 2819, 1886, + 3060, 2, 2797, 907, 911, 2160, 2161, 2162, 3370, 590, + 2160, 2816, 2550, 2549, 630, 2819, 2518, 2204, 3052, 89, + 893, 1715, 1952, 3466, 122, 1006, 3015, 93, 89, 624, + 932, 128, 2583, 89, 3371, 2584, 3366, 2017, 2018, 1819, + 89, 1818, 1817, 105, 106, 107, 630, 110, 3365, 1816, + 116, 1815, 1834, 185, 2817, 1814, 585, 645, 624, 1792, + 3461, 647, 927, 648, 879, 926, 877, 643, 2392, 980, + 957, 2817, 3106, 2694, 956, 2540, 872, 873, 874, 875, + 2823, 981, 883, 894, 2248, 3486, 948, 943, 1007, 1010, + 1011, 901, 2422, 122, 955, 954, 953, 2823, 3534, 3481, + 621, 3106, 2193, 1014, 2660, 3504, 1003, 1302, 2932, 2931, + 914, 915, 2543, 1023, 3320, 821, 822, 823, 2361, 1020, + 1021, 1022, 1286, 1025, 1026, 1027, 1028, 2191, 1824, 1031, + 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 1045, 1046, 1047, 2192, 3366, 606, 821, + 822, 823, 925, 769, 770, 925, 769, 770, 1502, 3105, + 604, 122, 3470, 624, 3420, 3468, 2874, 3263, 3262, 3065, + 1005, 1004, 3066, 3495, 3273, 3464, 3084, 3073, 3409, 3416, + 2186, 1286, 3272, 2137, 80, 80, 3083, 3469, 3105, 1863, + 3467, 2820, 80, 3445, 2894, 3450, 624, 1612, 2393, 624, + 601, 2557, 2558, 2748, 3349, 2048, 2131, 2582, 2820, 616, + 2257, 80, 2473, 3448, 82, 2472, 2436, 2254, 2474, 1103, + 2082, 1105, 3454, 3455, 611, 1318, 2749, 2750, 1114, 1296, + 2769, 2770, 2566, 3149, 614, 625, 1538, 3449, 1539, 3426, + 1086, 2437, 1299, 2019, 1300, 1301, 2521, 2871, 1319, 1320, + 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 1102, + 1104, 870, 89, 89, 625, 2083, 2084, 869, 3336, 1087, + 89, 2485, 1049, 3426, 3487, 2255, 1091, 1092, 1074, 1074, + 2882, 1080, 2851, 1075, 1075, 2101, 2100, 624, 1296, 89, + 2963, 1073, 624, 1072, 2880, 3488, 2625, 591, 638, 593, + 607, 1800, 627, 2856, 626, 597, 642, 595, 599, 608, + 600, 1535, 594, 947, 605, 636, 949, 596, 609, 610, + 613, 617, 618, 619, 615, 612, 2568, 603, 628, 2429, + 2430, 1054, 1292, 1024, 1705, 1284, 1927, 2768, 1113, 1743, + 1742, 2249, 2250, 2252, 2251, 952, 624, 1060, 1061, 2771, + 1479, 2528, 2130, 3295, 2168, 3296, 2553, 2207, 1088, 2844, + 1100, 2228, 2212, 2229, 1101, 2230, 1736, 2845, 3516, 625, + 1081, 2852, 1731, 1107, 1106, 1093, 918, 1112, 1706, 1063, + 1707, 1089, 1090, 1095, 1056, 1094, 3462, 3054, 2048, 2570, + 3050, 1292, 2853, 2046, 2047, 3053, 2231, 1030, 1099, 1029, + 2209, 990, 625, 950, 2211, 625, 2219, 2215, 2217, 2218, + 2216, 2220, 2221, 952, 3247, 944, 189, 2213, 189, 2171, + 3110, 189, 946, 945, 184, 1919, 1908, 1909, 1910, 1911, + 1921, 1912, 1913, 1914, 1926, 1922, 1915, 1916, 1923, 1924, + 1925, 1917, 1918, 1920, 2659, 988, 2210, 960, 123, 1482, + 1616, 961, 641, 2061, 641, 641, 1000, 2626, 961, 999, + 2771, 166, 998, 997, 928, 922, 920, 928, 922, 920, + 996, 950, 995, 994, 641, 189, 993, 1335, 1336, 1337, + 1338, 992, 987, 2255, 936, 952, 1048, 1349, 934, 1332, + 1353, 936, 2574, 625, 1084, 1343, 973, 3535, 625, 1009, + 1332, 3493, 1345, 3049, 2478, 972, 936, 1637, 972, 1008, + 1108, 3528, 1753, 2144, 913, 3343, 2519, 163, 2571, 1070, + 164, 1076, 1077, 1078, 1079, 951, 1745, 958, 2197, 2196, + 2190, 1749, 1277, 2555, 2522, 1534, 629, 1017, 2397, 2399, + 2790, 2552, 2487, 183, 1610, 1115, 1116, 991, 1609, 1608, + 1052, 2538, 625, 1750, 1606, 979, 589, 622, 584, 818, + 1053, 1291, 1288, 1289, 1290, 1295, 1297, 1294, 818, 1293, + 3332, 1272, 623, 818, 2587, 1735, 2046, 2047, 1739, 1287, + 1737, 1738, 2964, 1740, 1741, 2269, 3002, 2188, 2982, 2821, + 2822, 989, 2872, 951, 2469, 1339, 2565, 2542, 118, 2564, + 1333, 1334, 2825, 2432, 2369, 1866, 2821, 2822, 1526, 1273, + 1274, 979, 2134, 1434, 1636, 3422, 2427, 3082, 1065, 2825, + 1291, 1288, 1289, 1290, 1295, 1297, 1294, 1469, 1293, 1717, + 1716, 1718, 1719, 1720, 3013, 3014, 2089, 1332, 1287, 979, + 1329, 2541, 979, 2747, 1345, 3421, 2577, 83, 3453, 3422, + 1051, 2576, 2135, 896, 167, 2577, 978, 3104, 1069, 2133, + 2576, 113, 1097, 173, 3357, 951, 1503, 1505, 1111, 1016, + 1887, 1002, 1062, 1059, 921, 1762, 3045, 921, 1363, 3421, + 1364, 1367, 88, 88, 1888, 1071, 3104, 1485, 2976, 2208, + 88, 1489, 3452, 2136, 2256, 2592, 1083, 880, 1483, 979, + 1470, 189, 2916, 2132, 2398, 641, 641, 1085, 1809, 88, + 1486, 1746, 978, 1878, 1540, 2611, 2511, 3496, 972, 975, + 976, 189, 936, 1732, 1301, 1733, 969, 973, 1734, 3526, + 1300, 1301, 3527, 114, 3525, 1878, 3145, 2286, 3020, 3019, + 978, 641, 2175, 978, 189, 982, 972, 968, 982, 972, + 984, 1646, 1645, 984, 985, 983, 641, 985, 983, 1487, + 1635, 2185, 189, 98, 1470, 2183, 1440, 1441, 1442, 1443, + 1444, 990, 1302, 1488, 3489, 986, 988, 99, 2594, 3536, + 979, 2187, 3003, 892, 158, 1055, 1322, 1323, 1324, 1325, + 1327, 1326, 1328, 1329, 1476, 2180, 1826, 1828, 1829, 641, + 978, 1068, 3530, 1984, 1463, 1643, 972, 975, 976, 1098, + 936, 101, 1345, 1885, 969, 973, 3255, 3254, 641, 641, + 1827, 641, 1763, 641, 641, 3245, 641, 641, 641, 641, + 641, 641, 1678, 1302, 2184, 1681, 3095, 1683, 2180, 1345, + 3094, 1629, 1345, 641, 1345, 189, 2848, 2604, 2603, 2602, + 2596, 3079, 2600, 3080, 2595, 2313, 2593, 1725, 1473, 1723, + 1712, 2598, 1700, 3387, 1302, 189, 3537, 877, 1484, 3325, + 2597, 1622, 879, 1507, 1504, 2321, 1836, 2182, 641, 3027, + 189, 978, 1276, 1015, 1490, 1682, 1641, 1012, 2599, 2601, + 1837, 1330, 1331, 1835, 1651, 641, 1652, 189, 1654, 1656, + 1531, 1532, 1660, 1662, 1664, 1666, 1668, 1299, 3388, 1300, + 1301, 3026, 1640, 189, 3326, 3016, 2613, 1613, 1614, 1615, + 189, 1724, 1302, 1722, 1711, 1605, 1639, 1639, 2798, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 641, 2261, + 2262, 2263, 1620, 1619, 1618, 821, 822, 823, 1632, 1502, + 1611, 2786, 1758, 2493, 1302, 2492, 159, 1324, 1325, 1327, + 1326, 1328, 1329, 171, 1302, 2140, 1726, 1710, 1299, 1686, + 1300, 1301, 1764, 1765, 1320, 1321, 1322, 1323, 1324, 1325, + 1327, 1326, 1328, 1329, 1690, 1691, 1769, 1709, 2053, 2054, + 1696, 1697, 1708, 1776, 1777, 1778, 1984, 1754, 1502, 1299, + 1981, 1300, 1301, 1698, 179, 1883, 3500, 1502, 1766, 1983, + 1692, 1689, 1688, 1687, 1884, 1770, 1658, 1772, 1773, 1774, + 1775, 3010, 630, 816, 1779, 2476, 630, 2156, 2155, 630, + 122, 955, 954, 953, 2154, 2153, 1791, 1535, 3498, 1502, + 1302, 3490, 1318, 3352, 2586, 160, 165, 162, 168, 169, + 170, 172, 174, 175, 176, 177, 1768, 1299, 3351, 1300, + 1301, 178, 180, 181, 182, 1319, 1320, 1321, 1322, 1323, + 1324, 1325, 1327, 1326, 1328, 1329, 1302, 2152, 2151, 1790, + 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1304, 3329, 1299, + 39, 1300, 1301, 1789, 2418, 3515, 2755, 95, 1511, 1299, + 3328, 1300, 1301, 641, 641, 3327, 1302, 1805, 96, 2323, + 3250, 641, 3477, 1502, 1298, 1502, 189, 1861, 1861, 1298, + 1502, 2418, 3415, 1502, 3432, 1502, 1318, 1302, 3234, 104, + 1840, 3233, 1302, 1859, 1859, 1862, 2418, 3395, 2418, 3391, + 103, 2756, 102, 1881, 1512, 3144, 2889, 1882, 2325, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, + 3430, 1502, 1469, 1502, 641, 2758, 1302, 1343, 3142, 1830, + 3378, 1502, 3345, 1832, 1345, 1299, 3091, 1300, 1301, 1468, + 2276, 1945, 1467, 2753, 1879, 641, 3063, 3342, 2274, 1302, + 2275, 1345, 3258, 1502, 3281, 1302, 2418, 3246, 3280, 1318, + 2769, 2770, 1314, 1466, 1315, 3063, 1502, 2754, 3024, 1977, + 1502, 1299, 1502, 1300, 1301, 3009, 641, 641, 1316, 1330, + 1331, 1313, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, + 1326, 1328, 1329, 2857, 2006, 1470, 2418, 3061, 1302, 1833, + 2760, 1299, 2854, 1300, 1301, 2789, 79, 1939, 1808, 95, + 1806, 1503, 2013, 1807, 1989, 2788, 97, 1950, 1797, 1798, + 96, 2502, 1299, 2490, 1300, 1301, 1992, 1299, 1465, 1300, + 1301, 2180, 1502, 3428, 1502, 2980, 1502, 1838, 2227, 3304, + 1502, 2465, 1980, 2334, 1502, 2037, 1839, 2202, 1841, 1842, + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, + 1853, 1299, 1865, 1300, 1301, 2779, 2778, 2768, 2030, 189, + 2031, 2201, 2043, 1302, 641, 1502, 1872, 1874, 1302, 2771, + 97, 1991, 3302, 1502, 1299, 2014, 1300, 1301, 2775, 2776, + 1299, 1950, 1300, 1301, 1302, 2775, 2774, 3238, 189, 2442, + 1502, 641, 2025, 2098, 2466, 1302, 1989, 1793, 98, 1994, + 1995, 189, 2255, 2551, 2468, 641, 1302, 1759, 1992, 189, + 1721, 189, 99, 189, 189, 1990, 2414, 1941, 98, 1889, + 1890, 1891, 1892, 1299, 1302, 1300, 1301, 1713, 641, 1502, + 2063, 97, 99, 1903, 2036, 2141, 1319, 1320, 1321, 1322, + 1323, 1324, 1325, 1327, 1326, 1328, 1329, 1993, 1502, 3237, + 1996, 1997, 3299, 1502, 1601, 2532, 2107, 2108, 2109, 2110, + 2525, 2526, 3071, 1991, 2418, 2417, 1302, 1703, 3285, 1502, + 2093, 1302, 2092, 1699, 2102, 1695, 2103, 2104, 2105, 2106, + 3491, 893, 2757, 641, 1515, 2465, 2074, 2024, 1694, 2279, + 2951, 1502, 2113, 2114, 2115, 2116, 2279, 1502, 1299, 1693, + 1300, 1301, 1513, 1299, 2035, 1300, 1301, 2058, 2944, 1502, + 641, 2123, 1109, 2096, 2038, 2709, 641, 1864, 1502, 1299, + 2129, 1300, 1301, 1601, 1600, 2169, 2975, 2056, 1302, 2529, + 1299, 103, 1300, 1301, 1302, 927, 2507, 2080, 926, 2079, + 2078, 1299, 1302, 1300, 1301, 2095, 2094, 2097, 2466, 2181, + 1514, 1318, 2166, 2268, 2975, 2941, 1502, 2434, 2255, 1299, + 1302, 1300, 1301, 641, 2139, 1546, 1545, 1298, 641, 2434, + 2441, 1302, 641, 641, 1319, 1320, 1321, 1322, 1323, 1324, + 1325, 1327, 1326, 1328, 1329, 1302, 2742, 2124, 2119, 2120, + 2977, 3383, 3356, 2418, 2174, 2138, 2255, 2177, 2142, 2178, + 1298, 1299, 2150, 1300, 1301, 2194, 1299, 2180, 1300, 1301, + 189, 2442, 2939, 1502, 2936, 2777, 980, 189, 2904, 1502, + 1302, 2173, 2124, 2176, 2172, 2442, 2887, 1502, 981, 2442, + 189, 189, 2682, 2081, 189, 2198, 189, 2195, 1639, 2199, + 2200, 2975, 2279, 189, 2389, 1502, 2334, 2310, 2309, 2180, + 189, 2163, 2051, 1506, 2015, 2387, 1502, 2761, 1864, 1810, + 1318, 2765, 1748, 1299, 1533, 1300, 1301, 1302, 2764, 1299, + 3340, 1300, 1301, 963, 962, 882, 189, 1299, 89, 1300, + 1301, 641, 2205, 1319, 1320, 1321, 1322, 1323, 1324, 1325, + 1327, 1326, 1328, 1329, 1302, 1299, 2272, 1300, 1301, 3458, + 2277, 2266, 2766, 2280, 3276, 2281, 1299, 2762, 1300, 1301, + 2288, 3398, 2763, 3269, 2290, 2291, 2292, 1509, 3235, 3156, + 1299, 3044, 1300, 1301, 2298, 2299, 2300, 2301, 2302, 2303, + 2304, 2305, 2306, 2307, 3041, 2234, 2273, 1302, 3022, 2271, + 3028, 2899, 2241, 2242, 2898, 1832, 1345, 2244, 1992, 1302, + 2801, 2366, 1502, 89, 1302, 1299, 2245, 1300, 1301, 1603, + 2314, 2315, 2316, 2317, 2318, 2122, 2320, 2846, 2803, 2799, + 2322, 2533, 1302, 2118, 2327, 2328, 2112, 2329, 2349, 1502, + 2332, 2111, 2333, 2283, 1302, 1728, 2336, 1634, 1630, 2293, + 2340, 3029, 3030, 3031, 2345, 2346, 2347, 2348, 2253, 1674, + 1599, 115, 1299, 1991, 1300, 1301, 2308, 2359, 1302, 2362, + 2363, 1833, 1302, 2499, 3032, 2850, 1054, 2365, 2367, 2264, + 3270, 2341, 1502, 2498, 2370, 2371, 2372, 2373, 2374, 1299, + 2137, 1300, 1301, 1302, 3242, 2381, 2382, 2028, 2383, 3046, + 3510, 2386, 2388, 2037, 1302, 2390, 1795, 1990, 3508, 1302, + 1675, 1676, 1677, 3484, 1302, 2402, 2282, 2265, 2285, 2267, + 1861, 3033, 3034, 3035, 2987, 2988, 2993, 3364, 2997, 1302, + 3290, 2499, 1299, 1302, 1300, 1301, 1859, 2403, 2990, 2795, + 2794, 2992, 2793, 2709, 1299, 2728, 1300, 1301, 2512, 1299, + 2235, 1300, 1301, 2494, 2731, 2729, 2946, 189, 3360, 2732, + 2730, 1302, 2401, 2727, 3126, 189, 3125, 1299, 1796, 1300, + 1301, 1670, 104, 1510, 2319, 3271, 641, 2942, 2042, 1299, + 39, 1300, 1301, 103, 2034, 102, 2981, 641, 2914, 2458, + 1302, 2687, 2686, 2910, 97, 3324, 3135, 2438, 2896, 2404, + 2419, 2406, 3137, 1299, 1302, 1300, 1301, 1299, 2968, 1300, + 1301, 189, 2971, 2895, 3124, 189, 2967, 2892, 1671, 1672, + 1673, 2733, 2696, 2451, 2452, 2699, 2701, 1747, 1299, 868, + 1300, 1301, 897, 1302, 2702, 2415, 2773, 1302, 2483, 1299, + 898, 1300, 1301, 2428, 1299, 2385, 1300, 1301, 2503, 1299, + 1476, 1300, 1301, 1502, 2391, 1887, 1019, 1018, 2865, 650, + 2486, 2488, 2457, 2973, 1299, 2498, 1300, 1301, 1299, 1888, + 1300, 1301, 2411, 1302, 2384, 2416, 2524, 2580, 2479, 641, + 95, 1275, 2539, 2431, 123, 189, 95, 2463, 2380, 1302, + 97, 96, 189, 97, 3522, 1302, 1299, 96, 1300, 1301, + 2053, 2054, 2791, 2548, 2238, 3437, 641, 2129, 1302, 2467, + 3341, 2470, 3265, 641, 2477, 2772, 2455, 2379, 2039, 2226, + 2480, 2378, 641, 104, 2225, 1299, 2224, 1300, 1301, 1302, + 2223, 2546, 2491, 1302, 103, 2685, 102, 1302, 1345, 1299, + 2500, 1300, 1301, 2684, 1302, 97, 905, 906, 2222, 2953, + 2259, 189, 189, 189, 189, 189, 1302, 2377, 102, 2513, + 2514, 2515, 903, 2508, 3312, 909, 909, 2509, 1299, 104, + 1300, 1301, 1299, 2376, 1300, 1301, 189, 189, 2545, 2375, + 103, 1622, 102, 3311, 2615, 2616, 2617, 2618, 2619, 3293, + 3143, 3141, 2364, 2589, 2534, 2535, 1302, 189, 3140, 3133, + 1302, 2501, 3042, 2624, 2972, 2970, 2504, 2505, 1299, 2544, + 1300, 1301, 104, 2358, 2804, 2164, 103, 2357, 641, 1617, + 1302, 2356, 904, 103, 1299, 3132, 1300, 1301, 2355, 1302, + 1299, 2605, 1300, 1301, 2961, 2434, 2569, 3512, 3511, 3512, + 2354, 2607, 2588, 1299, 3114, 1300, 1301, 2414, 2572, 2620, + 2578, 2627, 2311, 2579, 2026, 2447, 2450, 2451, 2452, 2448, + 1302, 2449, 2453, 1527, 1299, 641, 1300, 1301, 1299, 1519, + 1300, 1301, 1299, 3511, 1300, 1301, 108, 109, 3330, 1299, + 2353, 1300, 1301, 3008, 2352, 2606, 895, 2608, 3, 91, + 1, 1299, 1744, 1300, 1301, 3012, 3447, 602, 2016, 2666, + 2637, 2661, 2639, 641, 2351, 1474, 3485, 3443, 2663, 3444, + 1714, 641, 1704, 2350, 3074, 1951, 3266, 2807, 2650, 2651, + 2652, 2653, 2170, 3040, 2127, 971, 1980, 148, 1980, 2090, + 2718, 1299, 2629, 1300, 1301, 1299, 2091, 1300, 1301, 3411, + 112, 2635, 641, 929, 2344, 111, 974, 2736, 2737, 1082, + 2165, 2590, 3064, 2484, 2099, 1299, 189, 1300, 1301, 884, + 641, 1552, 2666, 1550, 1299, 2706, 1300, 1301, 1551, 1549, + 1554, 2712, 1553, 2690, 641, 2721, 2712, 2741, 1345, 1489, + 2458, 641, 641, 1345, 189, 189, 189, 189, 189, 2873, + 2312, 2665, 2662, 2915, 2664, 1299, 189, 1300, 1301, 1799, + 2677, 189, 637, 2454, 189, 631, 189, 2715, 186, 189, + 189, 189, 1541, 1520, 2691, 2688, 2928, 2681, 1013, 2703, + 2704, 592, 2780, 2743, 2203, 598, 2744, 1350, 1794, 2683, + 2471, 886, 885, 924, 2723, 2724, 2722, 2726, 2689, 2725, + 916, 2027, 2405, 2734, 923, 2827, 3243, 98, 2717, 1302, + 2965, 2695, 2738, 2739, 189, 2697, 2745, 2720, 2678, 2679, + 2680, 99, 2421, 2806, 2700, 2751, 1758, 641, 1302, 2693, + 1345, 3323, 3134, 2781, 3396, 641, 2867, 2481, 1516, 2783, + 189, 2935, 2782, 2645, 2646, 2647, 2648, 2649, 2284, 1876, + 1340, 2068, 3109, 1825, 189, 659, 2884, 2885, 2886, 658, + 2888, 2890, 2834, 656, 1302, 2835, 2407, 2435, 1302, 2805, + 1305, 2869, 2129, 189, 2897, 806, 189, 2826, 2395, 2901, + 2902, 2903, 2905, 2906, 2907, 2908, 1528, 2841, 2909, 2446, + 2911, 2912, 2913, 2343, 1302, 2917, 2918, 2919, 2920, 2921, + 2922, 2923, 2924, 2925, 2926, 2444, 2858, 2443, 2236, 2861, + 2860, 1302, 2342, 2933, 2075, 2989, 2937, 2985, 2938, 2940, + 2868, 2943, 2945, 3439, 2947, 2948, 2949, 2950, 2070, 2784, + 2785, 2878, 2956, 2875, 2876, 2066, 2877, 2413, 757, 2879, + 756, 2881, 668, 2883, 1299, 660, 1300, 1301, 2339, 1302, + 652, 755, 2338, 754, 2930, 3005, 641, 2833, 3423, 2554, + 2847, 2934, 2556, 1299, 2482, 1300, 1301, 2978, 2979, 2843, + 1283, 2983, 1492, 1302, 646, 942, 2863, 2864, 2337, 1302, + 2870, 1500, 1496, 3347, 2258, 189, 2893, 1491, 1302, 2995, + 2996, 1906, 1907, 3354, 2815, 2335, 1497, 3058, 2796, 1299, + 2530, 1300, 1301, 1299, 1302, 1300, 1301, 2157, 65, 43, + 1302, 2954, 2955, 3318, 3384, 2957, 753, 750, 3111, 3112, + 3113, 2032, 2033, 1499, 2962, 1498, 2969, 2657, 2658, 1299, + 3367, 1300, 1301, 2331, 3368, 749, 3369, 1934, 2974, 1280, + 3460, 1801, 90, 34, 189, 2991, 1299, 33, 1300, 1301, + 32, 31, 30, 25, 24, 23, 2994, 2330, 22, 21, + 27, 2999, 20, 2326, 19, 2998, 18, 2818, 3480, 3521, + 117, 1303, 2324, 189, 2959, 3047, 3048, 2834, 52, 3062, + 2835, 3006, 3007, 49, 1299, 47, 1300, 1301, 2289, 125, + 124, 3023, 189, 3025, 2278, 189, 189, 189, 3068, 3069, + 1358, 50, 46, 1057, 44, 641, 641, 2984, 1299, 29, + 1300, 1301, 28, 17, 1299, 16, 1300, 1301, 15, 14, + 13, 3081, 12, 1299, 3085, 1300, 1301, 11, 7, 3000, + 3001, 1500, 1496, 6, 37, 36, 35, 1804, 26, 1299, + 4, 1300, 1301, 2517, 2159, 1299, 1497, 1300, 1301, 0, + 0, 3096, 641, 641, 641, 641, 0, 0, 2447, 2450, + 2451, 2452, 2448, 3070, 2449, 2453, 3100, 0, 2987, 2988, + 0, 1493, 1494, 1499, 0, 1498, 0, 0, 3108, 0, + 0, 0, 0, 0, 0, 3090, 3115, 0, 0, 0, + 0, 0, 0, 3086, 0, 0, 3017, 3018, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3129, 3107, 3098, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3051, 0, + 0, 1861, 3055, 3056, 3057, 0, 0, 0, 189, 39, + 0, 0, 0, 0, 0, 0, 0, 1859, 3158, 0, + 2712, 3130, 0, 0, 0, 3138, 3150, 1345, 3139, 0, + 0, 0, 641, 3146, 641, 3154, 3152, 3148, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2715, 0, 3257, + 0, 2715, 0, 0, 0, 3162, 3244, 0, 3264, 0, + 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, + 0, 0, 0, 817, 0, 0, 81, 0, 3274, 3275, + 0, 3277, 0, 3278, 3279, 0, 641, 0, 3282, 3283, + 3284, 3241, 3286, 3289, 3287, 3240, 3256, 3239, 0, 189, + 1861, 1604, 641, 3268, 0, 3288, 0, 0, 3298, 3300, + 3301, 3303, 3305, 3306, 3308, 641, 1859, 3291, 3261, 3260, + 3248, 0, 0, 0, 3159, 3160, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3292, 0, 3338, 881, 3294, 81, 0, 0, 3297, 0, + 0, 0, 0, 0, 0, 641, 3316, 0, 3334, 641, + 641, 3313, 3314, 0, 881, 3315, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3333, 0, 0, 941, + 0, 0, 0, 0, 3331, 0, 3322, 0, 641, 0, + 3337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2715, + 0, 0, 0, 3251, 3252, 3253, 0, 0, 0, 1760, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3339, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 641, 3363, 0, + 0, 3358, 0, 0, 0, 39, 0, 0, 0, 0, + 3350, 3353, 0, 189, 0, 0, 0, 0, 3379, 0, + 0, 0, 3355, 0, 3380, 3381, 0, 0, 0, 0, + 0, 641, 189, 0, 0, 0, 0, 3346, 0, 0, + 0, 0, 0, 0, 0, 0, 3392, 0, 0, 0, + 0, 0, 3373, 0, 0, 3374, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3382, 3362, 0, + 0, 0, 3417, 3418, 0, 0, 3372, 0, 0, 0, + 0, 39, 641, 0, 3389, 2712, 3427, 3429, 3431, 3394, + 0, 3424, 1345, 3402, 641, 3425, 3407, 3410, 3397, 3404, + 3403, 3401, 3406, 3405, 3399, 0, 3268, 3412, 0, 0, + 0, 3459, 0, 0, 0, 0, 0, 0, 641, 641, + 0, 3435, 0, 0, 0, 0, 0, 3438, 0, 0, + 0, 3456, 3446, 3451, 0, 0, 0, 0, 3465, 0, + 641, 0, 3424, 0, 0, 0, 3425, 0, 3463, 0, + 3476, 0, 0, 0, 189, 641, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3474, 0, 0, 0, 3479, + 1353, 0, 0, 0, 0, 0, 0, 0, 1820, 1821, + 1822, 1823, 3497, 3499, 3501, 0, 3494, 0, 0, 0, + 3492, 0, 0, 0, 1861, 0, 0, 3503, 641, 0, + 3509, 3507, 3502, 0, 3505, 0, 0, 0, 0, 0, + 1859, 3506, 0, 3520, 3517, 0, 0, 0, 3424, 0, + 641, 3523, 3425, 0, 0, 0, 0, 1867, 1868, 3532, + 3533, 3531, 1870, 3529, 909, 909, 1875, 641, 0, 641, + 1880, 0, 0, 0, 0, 0, 0, 0, 1861, 0, + 3539, 3540, 3541, 1893, 1894, 1895, 1896, 1897, 1898, 1899, + 1900, 1901, 1902, 3288, 1859, 3538, 0, 1928, 1929, 1930, + 1931, 1932, 1933, 1935, 0, 1940, 0, 1942, 1943, 1944, + 0, 1946, 1947, 1948, 0, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, + 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 0, 1978, + 0, 1985, 1986, 909, 0, 909, 909, 909, 909, 909, + 0, 0, 0, 0, 0, 1998, 1999, 2000, 2001, 2002, + 2003, 2004, 2005, 0, 2007, 2008, 2009, 2010, 2011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1342, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, - 0, 1118, 0, 0, 0, 3473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1344, 0, 0, 1344, 0, - 1344, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2027, - 0, 1699, 0, 0, 639, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2039, 0, 0, 0, - 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, - 1522, 0, 0, 1118, 0, 0, 0, 0, 0, 588, - 0, 639, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 932, 0, 1778, 1779, 588, 588, 588, - 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, - 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 939, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, + 0, 0, 0, 0, 2049, 2050, 3478, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1569, 0, 0, 0, + 0, 0, 0, 0, 1118, 0, 1118, 1118, 0, 0, + 2087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 932, 639, 0, 0, 0, - 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, - 639, 0, 0, 0, 1342, 0, 0, 639, 639, 1342, - 0, 0, 0, 0, 818, 0, 1982, 0, 0, 819, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, - 0, 0, 0, 0, 0, 0, 0, 0, 932, 0, - 0, 0, 0, 1853, 0, 0, 0, 1853, 1853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2785, 0, 0, 0, 0, 0, 0, 0, 818, - 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, - 0, 588, 0, 639, 1858, 0, 1342, 0, 0, 0, - 0, 639, 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, 0, 0, 0, 0, 0, 1344, - 0, 0, 2864, 0, 0, 0, 2245, 0, 0, 0, - 0, 909, 909, 0, 0, 0, 1344, 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, 0, + 0, 0, 0, 881, 1342, 1347, 1348, 0, 1351, 0, + 1352, 1354, 1355, 1356, 0, 1359, 1360, 1362, 1362, 2125, + 1362, 1366, 1366, 1368, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, + 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, + 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 0, 0, + 1557, 0, 1433, 0, 1435, 1436, 1437, 1438, 1439, 0, + 0, 0, 0, 0, 0, 0, 0, 1366, 1366, 1366, + 1366, 1366, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, + 1454, 1455, 1456, 1457, 1458, 3180, 3182, 3181, 3199, 3200, + 3201, 3202, 3203, 3204, 3205, 707, 0, 0, 0, 0, + 0, 0, 1472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 639, 1118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 909, 1755, 909, 909, 909, 909, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, + 0, 881, 0, 0, 0, 881, 0, 0, 0, 0, + 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1583, 1586, 1587, 1588, 1589, 1590, + 1591, 0, 1592, 1593, 1594, 1595, 1596, 1571, 1572, 1573, + 1574, 1555, 1556, 1584, 0, 1558, 0, 1559, 1560, 1561, + 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, 1568, 1575, + 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2294, + 2295, 2296, 2297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 3009, 0, - 0, 0, 0, 1755, 588, 0, 588, 0, 588, 2075, - 0, 0, 0, 89, 0, 0, 818, 0, 0, 0, - 806, 819, 820, 821, 822, 807, 0, 0, 808, 809, - 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 639, 639, 0, 0, 815, 823, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2406, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2421, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 639, 639, - 639, 639, 2834, 2835, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 1358, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2504, 0, 0, 0, 0, 0, + 3194, 3195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2836, 0, 0, 0, - 0, 2039, 0, 0, 0, 0, 0, 0, 2529, 0, - 0, 0, 0, 0, 0, 588, 0, 2534, 0, 0, - 0, 0, 588, 1342, 0, 0, 0, 0, 639, 0, - 639, 0, 0, 0, 0, 588, 588, 0, 0, 588, - 0, 2237, 0, 0, 0, 0, 0, 0, 588, 0, - 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2837, 2838, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, - 0, 0, 0, 1853, 0, 0, 0, 0, 0, 0, - 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1344, 0, 1755, 0, 0, 0, 0, 0, 0, - 1853, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 639, 0, 0, 0, 639, 639, 0, 0, 0, + 1118, 0, 773, 0, 686, 777, 688, 774, 775, 0, + 684, 687, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2653, 0, - 0, 0, 0, 0, 639, 0, 1118, 0, 0, 0, + 0, 1518, 0, 0, 0, 0, 0, 0, 705, 706, + 3179, 3183, 3184, 3185, 3196, 3197, 3198, 3206, 3208, 738, + 3207, 3209, 3210, 3211, 3214, 3215, 3216, 3217, 3212, 3213, + 3218, 3163, 3167, 3164, 3165, 3166, 3178, 3168, 3169, 3170, + 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3219, 3220, 3221, + 3222, 3223, 3224, 3189, 3193, 3192, 3190, 3191, 3187, 3188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1648, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2690, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118, - 0, 0, 0, 0, 0, 0, 2717, 1648, 0, 0, - 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, - 1699, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 0, 778, 0, 779, 0, 0, 783, 0, 0, + 0, 785, 784, 0, 786, 752, 751, 0, 0, 780, + 781, 801, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1569, 0, + 0, 0, 0, 0, 0, 1118, 1118, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 184, 620, + 0, 0, 0, 0, 0, 640, 0, 3225, 3226, 3227, + 3228, 3229, 3230, 3231, 3232, 0, 0, 0, 0, 0, + 0, 0, 123, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 640, 0, 0, + 2585, 0, 0, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 144, 0, 0, 0, 0, 0, 0, 909, + 0, 0, 2609, 2610, 0, 0, 2612, 0, 0, 2614, + 0, 163, 0, 0, 164, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2621, + 2622, 2623, 0, 132, 133, 155, 154, 183, 0, 0, + 0, 2628, 1557, 0, 2630, 2631, 2632, 0, 0, 0, + 2633, 2634, 0, 0, 1954, 2636, 0, 0, 2638, 0, + 0, 2640, 2641, 2642, 2643, 0, 0, 0, 0, 2644, + 1954, 1954, 1954, 1954, 1954, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 909, 0, + 0, 0, 0, 0, 0, 2667, 2668, 2669, 2670, 2671, + 2672, 0, 0, 0, 2673, 2674, 0, 2675, 0, 2676, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1570, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 149, 130, 152, 137, + 129, 0, 150, 151, 0, 0, 0, 0, 167, 0, + 0, 0, 0, 0, 2707, 0, 0, 173, 138, 0, + 0, 0, 0, 0, 0, 2069, 0, 0, 0, 0, + 0, 0, 141, 139, 134, 135, 136, 140, 0, 0, + 0, 2740, 0, 0, 131, 0, 1583, 1586, 1587, 1588, + 1589, 1590, 1591, 142, 1592, 1593, 1594, 1595, 1596, 1571, + 1572, 1573, 1574, 1555, 1556, 1584, 0, 1558, 0, 1559, + 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, + 1568, 1575, 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, + 0, 0, 0, 0, 0, 941, 0, 0, 0, 0, + 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 941, 0, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2891, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2900, 0, 0, + 0, 0, 184, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1585, 0, 0, 0, 0, 0, 123, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 2523, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 123, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 166, 163, 0, 0, 164, 0, + 159, 0, 0, 0, 0, 0, 0, 171, 2260, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 183, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 144, 640, 1271, 640, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2270, 179, 0, + 163, 0, 0, 164, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3043, + 0, 0, 1625, 1626, 155, 154, 183, 0, 0, 0, + 0, 0, 1344, 0, 0, 0, 0, 0, 0, 160, + 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, + 0, 0, 3067, 0, 0, 178, 180, 181, 182, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3087, 0, 3088, + 0, 0, 3089, 0, 0, 3092, 3093, 0, 0, 0, + 0, 0, 0, 2368, 3097, 149, 1627, 152, 0, 1624, + 0, 150, 151, 0, 3099, 0, 0, 167, 0, 0, + 0, 0, 0, 0, 758, 0, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 2400, 3116, 0, 0, 3117, + 0, 3118, 3119, 0, 3120, 0, 3121, 759, 0, 0, + 0, 3122, 0, 881, 1344, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2439, 2440, 3147, 0, 0, 0, + 0, 0, 0, 2459, 0, 2460, 2461, 3155, 639, 0, + 3157, 0, 158, 0, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 588, 3161, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, + 0, 588, 3236, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 891, 0, 933, 0, + 940, 0, 0, 0, 0, 0, 0, 158, 0, 0, + 0, 640, 0, 910, 910, 0, 0, 0, 0, 0, + 0, 0, 588, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1598, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1607, 0, 0, 0, + 0, 0, 0, 0, 0, 2537, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, + 0, 1633, 0, 0, 0, 0, 0, 0, 0, 1642, + 0, 0, 1344, 1644, 0, 153, 1647, 1648, 640, 640, + 0, 640, 3321, 640, 640, 0, 640, 640, 640, 640, + 640, 640, 0, 0, 0, 0, 0, 0, 0, 1344, + 1679, 1680, 1344, 640, 1344, 0, 1685, 0, 0, 0, + 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, + 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 640, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1751, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 179, 0, 0, 0, 0, 0, 0, 159, + 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 160, 165, 162, 168, 169, 170, 172, + 174, 175, 176, 177, 0, 0, 0, 179, 0, 178, + 180, 181, 182, 0, 0, 2654, 3361, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3375, + 0, 0, 3376, 0, 3377, 0, 0, 0, 160, 165, + 162, 168, 169, 170, 172, 174, 175, 176, 177, 0, + 0, 0, 0, 0, 178, 180, 181, 182, 2069, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2716, 0, 81, 0, 0, 2069, 2069, 2069, 2069, + 2069, 0, 0, 0, 0, 0, 0, 80, 41, 42, + 82, 0, 0, 2459, 881, 0, 0, 0, 2069, 0, + 0, 2069, 0, 0, 0, 0, 0, 86, 0, 0, + 0, 45, 71, 72, 0, 69, 73, 0, 3457, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 640, 0, 0, 0, 0, 0, + 0, 640, 0, 0, 0, 0, 0, 0, 3471, 0, + 3472, 0, 3473, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2824, 89, 0, 0, 0, 0, + 0, 0, 0, 0, 2832, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, + 0, 0, 0, 1869, 0, 640, 0, 0, 3518, 0, + 3519, 1344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 640, 0, 0, + 0, 0, 588, 0, 588, 0, 0, 588, 0, 0, + 0, 0, 0, 0, 0, 1120, 0, 1120, 1120, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1278, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 0, 48, 51, 54, 53, 56, 0, 68, + 0, 588, 77, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 819, 0, 1984, 0, 0, 820, + 0, 0, 0, 0, 0, 57, 85, 84, 1346, 1860, + 66, 67, 55, 0, 640, 0, 0, 0, 75, 76, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 640, 0, 0, 0, 0, 2069, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 640, 3004, + 0, 59, 60, 0, 61, 62, 63, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 2147, 2148, 2149, 0, 0, 0, 0, 0, 0, 0, + 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 0, 0, 0, 0, 0, 640, 1642, 0, 0, + 1642, 0, 1642, 0, 0, 0, 0, 0, 2179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1480, 1481, + 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1477, 0, 0, 588, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 640, 0, + 0, 0, 640, 640, 1524, 0, 0, 891, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1542, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 88, 3123, 0, 3127, 3128, + 587, 0, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 871, 0, + 0, 2716, 933, 81, 0, 2716, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1650, 1650, 0, 1650, 0, 1650, 1650, 0, 1659, + 1650, 1650, 1650, 1650, 1650, 0, 0, 0, 1346, 937, + 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, + 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1346, 0, 0, 1346, 0, + 1346, 588, 0, 0, 3249, 0, 0, 0, 0, 0, + 0, 1727, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1701, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, - 588, 0, 932, 0, 0, 0, 0, 0, 639, 0, - 2039, 0, 0, 0, 0, 0, 0, 0, 1342, 0, - 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 639, 639, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 2514, 0, 0, - 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1344, 639, 0, 0, 0, 0, 0, - 0, 2927, 0, 0, 0, 0, 588, 588, 588, 588, - 588, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1344, 0, 640, 0, + 0, 0, 0, 1757, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, + 0, 1120, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 1780, 1781, 588, 588, 588, + 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2716, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1368, 1369, 1370, + 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, + 1381, 1382, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, + 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, + 1414, 1415, 1416, 1418, 1419, 1420, 1421, 1422, 1423, 1424, + 1425, 1426, 1427, 1445, 1446, 1447, 1448, 1449, 1450, 1451, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 0, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1621, 3348, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 123, 0, 145, 640, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 166, 640, 0, 0, + 0, 0, 0, 0, 0, 0, 1120, 1120, 0, 0, + 0, 0, 0, 0, 1802, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, + 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, + 0, 2475, 588, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 163, 0, 0, 164, 0, 0, 0, 0, + 3393, 0, 0, 0, 0, 81, 0, 1855, 0, 0, + 0, 0, 0, 0, 1625, 1626, 155, 154, 183, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1871, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 910, 910, 0, 0, 640, 1346, 0, 1904, + 1905, 0, 0, 640, 0, 0, 0, 1642, 1642, 0, + 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1344, 2547, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3475, 0, 0, 0, 0, 0, 0, 0, 1120, + 0, 0, 0, 0, 0, 0, 0, 149, 1627, 152, + 0, 1624, 0, 150, 151, 0, 0, 0, 0, 167, + 0, 910, 1757, 910, 910, 910, 910, 910, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058, + 0, 1064, 0, 0, 1066, 0, 0, 2029, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, + 0, 0, 0, 0, 2041, 0, 0, 0, 0, 0, + 910, 0, 0, 0, 0, 0, 0, 0, 1524, 0, + 0, 1120, 0, 0, 891, 0, 0, 0, 1279, 0, + 0, 0, 0, 0, 0, 640, 0, 588, 0, 0, + 0, 933, 0, 0, 1757, 588, 0, 588, 0, 588, + 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 158, + 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 940, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 933, 0, 0, 0, 0, 0, 940, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 640, 0, 0, 0, 1344, 0, + 0, 640, 640, 1344, 0, 0, 0, 153, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, + 0, 1855, 0, 0, 0, 1855, 1855, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2787, 0, 0, 146, 0, + 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, + 1344, 0, 0, 0, 0, 640, 588, 0, 0, 0, + 0, 159, 0, 588, 0, 0, 0, 0, 171, 0, + 0, 0, 0, 0, 0, 0, 588, 588, 0, 0, + 588, 0, 2239, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 2247, 0, 2866, 1530, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 588, 588, 639, 0, 639, 0, 0, 0, 0, + 0, 0, 588, 0, 0, 1547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, + 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, + 177, 0, 0, 0, 0, 0, 178, 180, 181, 182, + 0, 1120, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1346, 0, 1757, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1767, 0, 0, 0, + 0, 0, 3011, 1771, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2039, 2039, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2408, + 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, + 2423, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 640, 640, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3073, 3074, 3075, - 3076, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1344, 0, 0, 0, 0, 1344, 588, - 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, - 0, 2733, 0, 0, 0, 0, 588, 0, 0, 1699, - 0, 588, 0, 0, 588, 2744, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1344, 0, 3149, 0, 3151, - 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, - 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2041, + 0, 588, 0, 0, 0, 0, 2531, 0, 2516, 1813, + 0, 0, 0, 0, 0, 2536, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1344, 0, 0, + 0, 0, 640, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3257, 0, 0, + 0, 0, 0, 0, 1346, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 588, 588, + 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 588, 588, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1855, 640, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 640, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2655, 0, 0, 0, + 0, 0, 0, 0, 1120, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3307, 0, 0, 0, 3307, 3307, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, + 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0, + 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, + 0, 0, 2059, 2692, 2062, 0, 0, 1813, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1120, 0, 0, + 0, 0, 588, 0, 2719, 1650, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 0, 0, 1346, 0, 0, 0, 0, 1346, + 588, 588, 588, 588, 588, 0, 0, 0, 0, 0, + 0, 0, 2735, 0, 0, 0, 0, 588, 0, 0, + 1701, 640, 588, 0, 0, 588, 2746, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 933, 0, 0, 0, 0, 0, 0, 0, 2041, 0, + 588, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1344, 0, 640, 0, 1346, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 640, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, + 640, 0, 588, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 0, 1813, 819, 0, 0, 0, 0, 820, + 2214, 0, 0, 0, 0, 0, 0, 0, 0, 1860, + 0, 0, 0, 2232, 2233, 0, 0, 2237, 0, 0, + 0, 0, 0, 0, 0, 0, 2240, 0, 640, 2929, + 0, 0, 0, 2243, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 2246, + 0, 0, 0, 0, 0, 0, 0, 640, 0, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 0, 0, 819, 0, 0, 0, 807, + 820, 821, 822, 823, 808, 0, 0, 809, 810, 588, + 811, 0, 0, 0, 0, 0, 0, 0, 2041, 2041, + 0, 0, 0, 0, 816, 824, 825, 0, 588, 0, + 0, 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2039, 0, 0, 0, 0, 588, 0, 0, - 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2039, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1118, 1118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3439, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3075, 3076, 3077, 3078, 0, + 0, 2836, 2837, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2927, 0, 3439, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2838, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1701, 3151, 0, 3153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, + 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2839, + 2840, 0, 0, 0, 0, 0, 0, 0, 2510, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3259, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1120, 0, + 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2559, 2560, 2561, 2562, 2563, 0, + 773, 0, 0, 777, 0, 774, 775, 0, 0, 0, + 776, 0, 0, 0, 0, 0, 0, 0, 3309, 1813, + 2573, 0, 3309, 3309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 380, 0, 0, 0, 1252, 1237, - 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, - 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, - 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, - 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, - 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, - 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 1699, 0, - 3411, 629, 0, 0, 0, 0, 3412, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 588, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, - 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, - 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, - 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, - 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, - 1227, 1231, 1177, 0, 0, 0, 0, 1344, 0, 0, - 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2041, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 1699, - 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, - 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, - 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, - 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, - 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, - 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, - 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, - 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, - 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, - 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, - 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, - 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, - 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, - 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, - 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, - 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, - 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, - 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, - 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, - 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, - 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, - 0, 0, 0, 2745, 0, 1155, 0, 1202, 0, 0, - 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, - 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, - 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, - 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, - 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, - 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, - 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, - 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, - 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, - 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, - 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, - 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, - 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, - 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, - 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, - 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, - 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, - 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, - 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, - 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, - 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, - 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, - 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, - 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, - 1227, 1231, 1177, 0, 0, 0, 0, 0, 2703, 0, - 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, - 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, - 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, - 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, - 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, - 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, - 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, - 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, - 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, - 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, - 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, - 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, - 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, - 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, - 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, - 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, - 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, - 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, - 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, - 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, - 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, - 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, - 0, 0, 0, 2055, 0, 1155, 0, 1202, 0, 0, - 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, - 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, - 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, - 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, - 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, - 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, - 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, - 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, - 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, - 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, - 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, - 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, - 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, - 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, - 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, - 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, - 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, - 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, - 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, - 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, - 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, - 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, - 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, - 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, - 1227, 1231, 1177, 0, 0, 0, 0, 0, 0, 0, - 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, - 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, - 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, - 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, - 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, - 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, - 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, - 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, - 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, - 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, - 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, - 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, - 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, - 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, - 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, - 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, - 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, - 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, - 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, - 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, - 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, - 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, - 0, 0, 0, 0, 0, 1155, 0, 1202, 0, 0, - 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, - 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, - 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, - 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, - 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, - 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, - 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, - 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, - 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, - 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, - 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, - 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, - 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, - 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, - 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, - 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, - 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, - 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, - 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, - 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, - 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, - 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, - 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, - 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, - 1227, 1231, 1177, 0, 0, 0, 0, 0, 0, 0, - 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 3386, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1346, 0, + 0, 1120, 1120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3441, 0, + 0, 0, 0, 0, 0, 0, 0, 2792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2830, 0, 0, 0, 0, 0, 0, + 0, 3386, 0, 0, 0, 0, 0, 2842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, - 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 542, - 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, - 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, - 242, 1159, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 1201, 1220, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 1132, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 1147, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 1236, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 1225, 1267, - 408, 452, 230, 523, 475, 1142, 1146, 1140, 1207, 1141, - 1196, 1197, 1143, 1258, 1259, 1260, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 1229, 1136, 0, 1144, 1145, - 1238, 1247, 1248, 583, 368, 465, 520, 321, 333, 336, - 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, - 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 1200, 190, 211, 352, 1263, 434, 275, - 561, 533, 528, 197, 213, 1139, 249, 1150, 1158, 0, - 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, - 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 1199, 1205, 365, 268, 291, 306, - 1214, 532, 481, 217, 446, 277, 240, 1232, 1234, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 1195, 1223, 360, 497, 498, 302, 380, - 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, - 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, - 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, - 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, + 0, 0, 0, 2041, 0, 0, 2859, 0, 0, 2862, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, + 2929, 0, 3441, 1254, 1239, 496, 0, 1182, 1257, 1151, + 1170, 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, + 1155, 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, + 1256, 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 1261, 354, 1204, 0, 476, 384, 0, - 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, - 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 411, 486, 405, 1263, 354, 1206, 0, 476, 384, 0, + 0, 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, + 1258, 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 3413, 630, 0, 0, 0, + 0, 3414, 0, 0, 0, 0, 228, 0, 2958, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, - 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, - 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, - 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, - 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, - 0, 0, 0, 0, 0, 1155, 0, 1202, 0, 0, - 0, 1134, 1126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1181, 0, 0, 0, 0, - 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, - 0, 1235, 1245, 1178, 542, 1249, 1176, 1175, 1222, 1135, - 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, - 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 1201, 1220, 450, + 334, 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, + 259, 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, + 219, 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, + 1127, 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, + 0, 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, + 0, 0, 0, 0, 0, 1157, 0, 1204, 0, 0, + 0, 1136, 1128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3021, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3036, 0, 0, 3037, 3038, + 3039, 0, 0, 0, 0, 1183, 0, 0, 0, 0, + 1139, 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, + 0, 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, + 1243, 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, + 441, 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, + 223, 271, 438, 415, 449, 422, 274, 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 1132, 536, 391, 505, + 512, 243, 563, 218, 537, 210, 1134, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1236, 500, 519, 531, 541, 547, + 227, 1149, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 1225, 1267, 408, 452, 230, 523, 475, - 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, - 1260, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 474, 319, 357, 1227, 1269, 408, 452, 230, 523, 475, + 1144, 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, + 1262, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 583, 368, + 1231, 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 1200, 190, - 211, 352, 1263, 434, 275, 561, 533, 528, 197, 213, - 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, - 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, - 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 529, 295, 448, 447, 317, 318, 363, 431, 1202, 190, + 211, 352, 1265, 434, 275, 561, 533, 528, 197, 213, + 1141, 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, + 1190, 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, + 1235, 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 1199, - 1205, 365, 268, 291, 306, 1214, 532, 481, 217, 446, - 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 301, 558, 559, 286, 517, 546, 0, 0, 362, 1201, + 1207, 365, 268, 291, 306, 1216, 532, 481, 217, 446, + 277, 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, - 360, 497, 498, 302, 380, 0, 0, 0, 0, 0, - 496, 0, 681, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 668, 0, 0, - 0, 257, 673, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 680, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 676, - 677, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 818, 802, 768, 769, 806, 819, 820, 821, 822, 807, - 0, 228, 808, 809, 235, 810, 0, 767, 708, 710, - 709, 727, 728, 729, 730, 731, 732, 733, 706, 815, - 823, 824, 0, 252, 307, 259, 251, 501, 0, 0, - 1934, 1935, 1936, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 650, 665, 0, 679, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 662, 663, 0, 0, - 0, 0, 762, 0, 664, 0, 0, 672, 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, - 675, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 761, 0, 0, 542, - 0, 0, 759, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 812, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 813, 814, 243, 563, 714, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 722, 723, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, - 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 772, 760, 685, 776, 687, - 773, 774, 682, 683, 686, 775, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 763, 671, 670, 0, 678, - 0, 704, 705, 707, 711, 712, 713, 724, 725, 726, - 734, 736, 737, 735, 738, 739, 740, 743, 744, 745, - 746, 741, 742, 747, 688, 692, 689, 690, 691, 703, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 786, 787, 788, 789, 790, 791, 717, 721, 720, 718, - 719, 715, 716, 669, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 777, 249, 778, 0, 0, - 782, 0, 0, 0, 784, 783, 0, 785, 751, 750, - 0, 0, 779, 780, 0, 781, 0, 0, 192, 193, - 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, - 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, - 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, - 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 792, 793, 794, 795, 796, 797, 798, 799, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 817, 0, 202, - 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, - 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, - 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 668, 0, 0, 0, - 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, - 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 680, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 676, 677, - 0, 0, 0, 0, 0, 0, 2083, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 89, 0, 0, 818, - 802, 768, 769, 806, 819, 820, 821, 822, 807, 0, - 228, 808, 809, 235, 810, 0, 767, 708, 710, 709, - 727, 728, 729, 730, 731, 732, 733, 706, 815, 823, - 824, 2084, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 662, 663, 0, 0, 0, - 0, 762, 0, 664, 0, 0, 672, 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, 675, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 761, 0, 0, 542, 0, - 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 812, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, + 464, 487, 488, 489, 491, 379, 253, 416, 1197, 1225, + 360, 497, 498, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, + 0, 0, 1254, 1239, 496, 3359, 1182, 1257, 1151, 1170, + 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, + 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, + 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1263, 354, 1206, 0, 476, 384, 0, 0, + 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, + 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, + 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, + 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, + 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, + 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, + 0, 0, 2747, 0, 1157, 0, 1204, 0, 0, 0, + 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1183, 0, 0, 0, 0, 1139, + 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, + 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, + 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, 441, + 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 1203, 1222, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 1134, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 1149, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, + 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 1231, + 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 1202, 190, 211, + 352, 1265, 434, 275, 561, 533, 528, 197, 213, 1141, + 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, + 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, + 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 1201, 1207, + 365, 268, 291, 306, 1216, 532, 481, 217, 446, 277, + 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 1197, 1225, 360, + 497, 498, 302, 380, 0, 0, 0, 1254, 1239, 496, + 0, 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, + 1196, 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, + 257, 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, + 1172, 196, 1220, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 1263, 354, 1206, + 0, 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, + 1181, 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, + 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, + 1165, 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, + 1193, 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, + 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, + 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, + 1233, 1179, 0, 0, 0, 0, 0, 2705, 0, 1157, + 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1183, + 0, 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, + 284, 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, + 1178, 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, + 215, 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, + 1161, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 813, 814, 243, 563, 714, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 722, 723, 267, 293, 429, 359, 430, 292, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 1134, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 526, 564, 224, 225, 227, 1149, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1238, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 1227, 1269, 408, + 452, 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, + 1199, 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, + 1249, 1250, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 1202, 190, 211, 352, 1265, 434, 275, 561, + 533, 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, + 1174, 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, + 1221, 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, + 532, 481, 217, 446, 277, 240, 1234, 1236, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1197, 1225, 360, 497, 498, 302, 380, 0, + 0, 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, + 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, + 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, + 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1263, 354, 1206, 0, 476, 384, 0, 0, + 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, + 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 803, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, + 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, + 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, + 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, + 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, + 0, 0, 2057, 0, 1157, 0, 1204, 0, 0, 0, + 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1183, 0, 0, 0, 0, 1139, + 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, + 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, + 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, 441, + 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 1203, 1222, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 1134, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 1149, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, + 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 1231, + 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 1202, 190, 211, + 352, 1265, 434, 275, 561, 533, 528, 197, 213, 1141, + 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, + 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, + 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 1201, 1207, + 365, 268, 291, 306, 1216, 532, 481, 217, 446, 277, + 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 1197, 1225, 360, + 497, 498, 302, 380, 0, 0, 0, 1254, 1239, 496, + 0, 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, + 1196, 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, + 257, 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, + 1172, 196, 1220, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 1263, 354, 1206, + 0, 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, + 1181, 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 0, + 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, + 1165, 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, + 1193, 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, + 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, + 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, + 1233, 1179, 0, 0, 0, 0, 0, 0, 0, 1157, + 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1183, + 0, 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, + 284, 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, + 1178, 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, + 215, 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, + 1161, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 1203, 1222, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 1134, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 1149, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1238, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 1227, 1269, 408, + 452, 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, + 1199, 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, + 1249, 1250, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 1202, 190, 211, 352, 1265, 434, 275, 561, + 533, 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, + 1174, 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, + 1221, 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, + 532, 481, 217, 446, 277, 240, 1234, 1236, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1197, 1225, 360, 497, 498, 302, 380, 0, + 0, 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, + 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, + 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, + 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1263, 354, 1206, 0, 476, 384, 0, 0, + 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, + 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, + 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, + 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, + 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, + 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, + 0, 0, 0, 0, 1157, 0, 1204, 0, 0, 0, + 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1183, 0, 0, 0, 0, 1139, + 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, + 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, + 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, 441, + 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 1203, 1222, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 1134, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 1149, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, + 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 1231, + 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 1202, 190, 211, + 352, 1265, 434, 275, 561, 533, 528, 197, 213, 1141, + 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, + 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, + 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 1201, 1207, + 365, 268, 291, 306, 1216, 532, 481, 217, 446, 277, + 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 1197, 1225, 360, + 497, 498, 302, 380, 0, 0, 0, 1254, 1239, 496, + 0, 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, + 1196, 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, + 257, 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, + 1172, 196, 1220, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 1263, 354, 1206, + 0, 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, + 1181, 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, + 803, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, + 1165, 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, + 1193, 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, + 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, + 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, + 1233, 1179, 0, 0, 0, 0, 0, 0, 0, 1157, + 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1183, + 0, 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, + 284, 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, + 1178, 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, + 215, 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, + 1161, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 1203, 1222, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 1134, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 1149, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 772, 760, 685, 776, 687, 773, - 774, 682, 683, 686, 775, 565, 566, 567, 568, 569, + 557, 555, 390, 297, 474, 319, 357, 1227, 1269, 408, + 452, 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, + 1199, 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 763, 671, 670, 0, 678, 0, - 704, 705, 707, 711, 712, 713, 724, 725, 726, 734, - 736, 737, 735, 738, 739, 740, 743, 744, 745, 746, - 741, 742, 747, 688, 692, 689, 690, 691, 703, 693, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 786, - 787, 788, 789, 790, 791, 717, 721, 720, 718, 719, - 715, 716, 669, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 777, 249, 778, 0, 0, 782, - 0, 0, 0, 784, 783, 0, 785, 751, 750, 0, - 0, 779, 780, 0, 781, 0, 0, 192, 193, 200, + 580, 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, + 1249, 1250, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 1202, 190, 211, 352, 1265, 434, 275, 561, + 533, 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, + 1174, 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, + 1221, 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 792, - 793, 794, 795, 796, 797, 798, 799, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 817, 0, 202, 236, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, + 532, 481, 217, 446, 277, 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 0, 380, 360, 497, 498, 302, 80, 496, - 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 668, 0, 0, 0, - 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, + 253, 416, 1197, 1225, 360, 497, 498, 302, 380, 0, + 0, 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, + 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, + 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, + 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1263, 354, 1206, 0, 476, 384, 0, 0, + 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, + 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, + 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, + 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, + 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, + 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, + 0, 0, 0, 0, 1157, 0, 1204, 0, 0, 0, + 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1183, 0, 0, 0, 0, 1139, + 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, + 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, + 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, 441, + 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, + 271, 438, 415, 449, 422, 274, 1203, 1222, 450, 356, + 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, + 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, + 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, + 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, + 243, 563, 218, 537, 210, 1134, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 1149, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 1238, 500, 519, 531, 541, 547, 548, + 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, + 319, 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, + 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 1231, + 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, + 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 295, 448, 447, 317, 318, 363, 431, 1202, 190, 211, + 352, 1265, 434, 275, 561, 533, 528, 197, 213, 1141, + 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, + 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, + 1246, 1268, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, + 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, + 558, 559, 286, 517, 546, 0, 0, 362, 1201, 1207, + 365, 268, 291, 306, 1216, 532, 481, 217, 446, 277, + 240, 1234, 1236, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 1197, 1225, 360, + 497, 498, 302, 380, 0, 0, 0, 0, 0, 496, + 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 669, 0, 0, 0, + 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 680, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 676, 677, + 256, 239, 303, 369, 411, 486, 405, 681, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 89, 0, 0, 818, - 802, 768, 769, 806, 819, 820, 821, 822, 807, 0, - 228, 808, 809, 235, 810, 0, 767, 708, 710, 709, - 727, 728, 729, 730, 731, 732, 733, 706, 815, 823, - 824, 0, 252, 307, 259, 251, 501, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 662, 663, 0, 0, 0, - 0, 762, 0, 664, 0, 0, 672, 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, 675, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 761, 0, 0, 542, 0, - 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 812, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 819, + 803, 769, 770, 807, 820, 821, 822, 823, 808, 0, + 228, 809, 810, 235, 811, 0, 768, 709, 711, 710, + 728, 729, 730, 731, 732, 733, 734, 707, 816, 824, + 825, 0, 252, 307, 259, 251, 501, 0, 0, 1936, + 1937, 1938, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 651, 666, 0, 680, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 663, 664, 0, 0, 0, + 0, 763, 0, 665, 0, 0, 673, 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, 676, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 762, 0, 0, 542, 0, + 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, @@ -3085,194 +2940,259 @@ var yyAct = [...]int{ 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 813, 814, 243, 563, 714, 537, 210, + 280, 245, 398, 814, 815, 243, 563, 715, 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 722, 723, 267, 293, 429, 359, 430, 292, + 366, 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 772, 760, 685, 776, 687, 773, - 774, 682, 683, 686, 775, 565, 566, 567, 568, 569, + 452, 230, 523, 475, 773, 761, 686, 777, 688, 774, + 775, 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 763, 671, 670, 0, 678, 0, - 704, 705, 707, 711, 712, 713, 724, 725, 726, 734, - 736, 737, 735, 738, 739, 740, 743, 744, 745, 746, - 741, 742, 747, 688, 692, 689, 690, 691, 703, 693, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 786, - 787, 788, 789, 790, 791, 717, 721, 720, 718, 719, - 715, 716, 669, 190, 211, 352, 88, 434, 275, 561, - 533, 528, 197, 213, 777, 249, 778, 0, 0, 782, - 0, 0, 0, 784, 783, 0, 785, 751, 750, 0, - 0, 779, 780, 0, 781, 0, 0, 192, 193, 200, + 580, 581, 582, 0, 764, 672, 671, 0, 679, 0, + 705, 706, 708, 712, 713, 714, 725, 726, 727, 735, + 737, 738, 736, 739, 740, 741, 744, 745, 746, 747, + 742, 743, 748, 689, 693, 690, 691, 692, 704, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 703, 787, + 788, 789, 790, 791, 792, 718, 722, 721, 719, 720, + 716, 717, 670, 190, 211, 352, 0, 434, 275, 561, + 533, 528, 197, 213, 778, 249, 779, 0, 0, 783, + 0, 0, 0, 785, 784, 0, 786, 752, 751, 0, + 0, 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 792, - 793, 794, 795, 796, 797, 798, 799, 286, 517, 546, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 793, + 794, 795, 796, 797, 798, 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 817, 0, 202, 236, + 532, 481, 217, 446, 277, 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 668, 0, 0, 0, 257, - 673, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 669, 0, 0, 0, 257, + 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 681, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 677, 678, 0, + 0, 0, 0, 0, 0, 2085, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 89, 0, 0, 819, 803, + 769, 770, 807, 820, 821, 822, 823, 808, 0, 228, + 809, 810, 235, 811, 0, 768, 709, 711, 710, 728, + 729, 730, 731, 732, 733, 734, 707, 816, 824, 825, + 2086, 252, 307, 259, 251, 501, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 651, 666, 0, 680, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 663, 664, 0, 0, 0, 0, + 763, 0, 665, 0, 0, 673, 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, 676, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 762, 0, 0, 542, 0, 0, + 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 813, 0, + 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, + 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, + 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, + 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 814, 815, 243, 563, 715, 537, 210, 0, + 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, + 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, + 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, + 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 523, 475, 773, 761, 686, 777, 688, 774, 775, + 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 0, 764, 672, 671, 0, 679, 0, 705, + 706, 708, 712, 713, 714, 725, 726, 727, 735, 737, + 738, 736, 739, 740, 741, 744, 745, 746, 747, 742, + 743, 748, 689, 693, 690, 691, 692, 704, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 703, 787, 788, + 789, 790, 791, 792, 718, 722, 721, 719, 720, 716, + 717, 670, 190, 211, 352, 0, 434, 275, 561, 533, + 528, 197, 213, 778, 249, 779, 0, 0, 783, 0, + 0, 0, 785, 784, 0, 786, 752, 751, 0, 0, + 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, + 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 510, 522, 540, 545, 460, 793, 794, + 795, 796, 797, 798, 799, 800, 286, 517, 546, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 481, 217, 446, 277, 240, 818, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 0, 380, 360, 497, 498, 302, 80, 496, 0, + 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 669, 0, 0, 0, 257, + 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 680, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 676, 677, 0, + 239, 303, 369, 411, 486, 405, 681, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 89, 0, 0, 818, 802, - 768, 769, 806, 819, 820, 821, 822, 807, 0, 228, - 808, 809, 235, 810, 0, 767, 708, 710, 709, 727, - 728, 729, 730, 731, 732, 733, 706, 815, 823, 824, + 195, 396, 477, 273, 0, 89, 0, 0, 819, 803, + 769, 770, 807, 820, 821, 822, 823, 808, 0, 228, + 809, 810, 235, 811, 0, 768, 709, 711, 710, 728, + 729, 730, 731, 732, 733, 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, + 0, 651, 666, 0, 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 662, 663, 0, 0, 0, 0, - 762, 0, 664, 0, 0, 672, 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, 675, 0, + 0, 0, 0, 0, 663, 664, 0, 0, 0, 0, + 763, 0, 665, 0, 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 761, 0, 0, 542, 0, 0, - 759, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 812, 0, + 0, 385, 244, 0, 762, 0, 0, 542, 0, 0, + 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 3398, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 813, 814, 243, 563, 714, 537, 210, 0, + 245, 398, 814, 815, 243, 563, 715, 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, - 320, 722, 723, 267, 293, 429, 359, 430, 292, 294, + 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 772, 760, 685, 776, 687, 773, 774, - 682, 683, 686, 775, 565, 566, 567, 568, 569, 570, + 230, 523, 475, 773, 761, 686, 777, 688, 774, 775, + 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 763, 671, 670, 0, 678, 0, 704, - 705, 707, 711, 712, 713, 724, 725, 726, 734, 736, - 737, 735, 738, 739, 740, 743, 744, 745, 746, 741, - 742, 747, 688, 692, 689, 690, 691, 703, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 786, 787, - 788, 789, 790, 791, 717, 721, 720, 718, 719, 715, - 716, 669, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 777, 249, 778, 0, 0, 782, 0, - 0, 0, 784, 783, 0, 785, 751, 750, 0, 0, - 779, 780, 0, 781, 0, 0, 192, 193, 200, 212, + 581, 582, 0, 764, 672, 671, 0, 679, 0, 705, + 706, 708, 712, 713, 714, 725, 726, 727, 735, 737, + 738, 736, 739, 740, 741, 744, 745, 746, 747, 742, + 743, 748, 689, 693, 690, 691, 692, 704, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 703, 787, 788, + 789, 790, 791, 792, 718, 722, 721, 719, 720, 716, + 717, 670, 190, 211, 352, 88, 434, 275, 561, 533, + 528, 197, 213, 778, 249, 779, 0, 0, 783, 0, + 0, 0, 785, 784, 0, 786, 752, 751, 0, 0, + 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 792, 793, - 794, 795, 796, 797, 798, 799, 286, 517, 546, 0, + 480, 484, 507, 510, 522, 540, 545, 460, 793, 794, + 795, 796, 797, 798, 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, - 481, 217, 446, 277, 240, 817, 0, 202, 236, 220, + 481, 217, 446, 277, 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 681, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 668, 0, 0, 0, 257, 673, + 0, 0, 0, 0, 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 680, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 676, 677, 0, 0, + 303, 369, 411, 486, 405, 681, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 89, 0, 1500, 818, 802, 768, - 769, 806, 819, 820, 821, 822, 807, 0, 228, 808, - 809, 235, 810, 0, 767, 708, 710, 709, 727, 728, - 729, 730, 731, 732, 733, 706, 815, 823, 824, 0, + 396, 477, 273, 0, 89, 0, 0, 819, 803, 769, + 770, 807, 820, 821, 822, 823, 808, 0, 228, 809, + 810, 235, 811, 0, 768, 709, 711, 710, 728, 729, + 730, 731, 732, 733, 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, + 651, 666, 0, 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 662, 663, 0, 0, 0, 0, 762, - 0, 664, 0, 0, 672, 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, 675, 0, 0, + 0, 0, 0, 663, 664, 0, 0, 0, 0, 763, + 0, 665, 0, 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 761, 0, 0, 542, 0, 0, 759, + 385, 244, 0, 762, 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 812, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 395, 441, 453, 0, 0, 0, 813, 0, 451, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 3400, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 813, 814, 243, 563, 714, 537, 210, 0, 536, + 398, 814, 815, 243, 563, 715, 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 722, 723, 267, 293, 429, 359, 430, 292, 294, 387, + 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 772, 760, 685, 776, 687, 773, 774, 682, - 683, 686, 775, 565, 566, 567, 568, 569, 570, 571, + 523, 475, 773, 761, 686, 777, 688, 774, 775, 683, + 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 763, 671, 670, 0, 678, 0, 704, 705, - 707, 711, 712, 713, 724, 725, 726, 734, 736, 737, - 735, 738, 739, 740, 743, 744, 745, 746, 741, 742, - 747, 688, 692, 689, 690, 691, 703, 693, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 786, 787, 788, - 789, 790, 791, 717, 721, 720, 718, 719, 715, 716, - 669, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 777, 249, 778, 0, 0, 782, 0, 0, - 0, 784, 783, 0, 785, 751, 750, 0, 0, 779, - 780, 0, 781, 0, 0, 192, 193, 200, 212, 222, + 582, 0, 764, 672, 671, 0, 679, 0, 705, 706, + 708, 712, 713, 714, 725, 726, 727, 735, 737, 738, + 736, 739, 740, 741, 744, 745, 746, 747, 742, 743, + 748, 689, 693, 690, 691, 692, 704, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 787, 788, 789, + 790, 791, 792, 718, 722, 721, 719, 720, 716, 717, + 670, 190, 211, 352, 0, 434, 275, 561, 533, 528, + 197, 213, 778, 249, 779, 0, 0, 783, 0, 0, + 0, 785, 784, 0, 786, 752, 751, 0, 0, 780, + 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 792, 793, 794, - 795, 796, 797, 798, 799, 286, 517, 546, 0, 0, + 484, 507, 510, 522, 540, 545, 460, 793, 794, 795, + 796, 797, 798, 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 817, 0, 202, 236, 220, 246, + 217, 446, 277, 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 681, 0, + 380, 0, 360, 497, 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 668, 0, 0, 0, 257, 673, 0, + 0, 0, 0, 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 680, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 676, 677, 0, 0, 0, + 369, 411, 486, 405, 681, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 89, 0, 0, 818, 802, 768, 769, - 806, 819, 820, 821, 822, 807, 0, 228, 808, 809, - 235, 810, 0, 767, 708, 710, 709, 727, 728, 729, - 730, 731, 732, 733, 706, 815, 823, 824, 0, 252, + 477, 273, 0, 89, 0, 1502, 819, 803, 769, 770, + 807, 820, 821, 822, 823, 808, 0, 228, 809, 810, + 235, 811, 0, 768, 709, 711, 710, 728, 729, 730, + 731, 732, 733, 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 650, - 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 651, + 666, 0, 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 662, 663, 907, 0, 0, 0, 762, 0, - 664, 0, 0, 672, 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, 675, 0, 0, 0, + 0, 0, 663, 664, 0, 0, 0, 0, 763, 0, + 665, 0, 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 761, 0, 0, 542, 0, 0, 759, 0, + 244, 0, 762, 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 812, 0, 451, 409, + 395, 441, 453, 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, @@ -3280,231 +3200,231 @@ var yyAct = [...]int{ 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 813, 814, 243, 563, 714, 537, 210, 0, 536, 391, - 505, 515, 378, 367, 209, 513, 376, 366, 320, 722, - 723, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 814, 815, 243, 563, 715, 537, 210, 0, 536, 391, + 505, 515, 378, 367, 209, 513, 376, 366, 320, 723, + 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, - 475, 772, 760, 685, 776, 687, 773, 774, 682, 683, - 686, 775, 565, 566, 567, 568, 569, 570, 571, 572, + 475, 773, 761, 686, 777, 688, 774, 775, 683, 684, + 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 763, 671, 670, 0, 678, 0, 704, 705, 707, - 711, 712, 713, 724, 725, 726, 734, 736, 737, 735, - 738, 739, 740, 743, 744, 745, 746, 741, 742, 747, - 688, 692, 689, 690, 691, 703, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 786, 787, 788, 789, - 790, 791, 717, 721, 720, 718, 719, 715, 716, 669, + 0, 764, 672, 671, 0, 679, 0, 705, 706, 708, + 712, 713, 714, 725, 726, 727, 735, 737, 738, 736, + 739, 740, 741, 744, 745, 746, 747, 742, 743, 748, + 689, 693, 690, 691, 692, 704, 694, 695, 696, 697, + 698, 699, 700, 701, 702, 703, 787, 788, 789, 790, + 791, 792, 718, 722, 721, 719, 720, 716, 717, 670, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, - 213, 777, 249, 778, 0, 0, 782, 0, 0, 0, - 784, 783, 0, 785, 751, 750, 0, 0, 779, 780, - 0, 781, 0, 0, 192, 193, 200, 212, 222, 226, + 213, 778, 249, 779, 0, 0, 783, 0, 0, 0, + 785, 784, 0, 786, 752, 751, 0, 0, 780, 781, + 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 510, 522, 540, 545, 460, 792, 793, 794, 795, - 796, 797, 798, 799, 286, 517, 546, 0, 0, 362, + 507, 510, 522, 540, 545, 460, 793, 794, 795, 796, + 797, 798, 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, - 446, 277, 240, 817, 0, 202, 236, 220, 246, 261, + 446, 277, 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, - 0, 360, 497, 498, 302, 496, 0, 681, 0, 0, + 0, 360, 497, 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 668, 0, 0, 0, 257, 673, 0, 0, + 0, 0, 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 680, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 676, 677, 0, 0, 0, 0, + 411, 486, 405, 681, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 89, 0, 0, 818, 802, 768, 769, 806, - 819, 820, 821, 822, 807, 0, 228, 808, 809, 235, - 810, 0, 767, 708, 710, 709, 727, 728, 729, 730, - 731, 732, 733, 706, 815, 823, 824, 0, 252, 307, + 273, 0, 89, 0, 0, 819, 803, 769, 770, 807, + 820, 821, 822, 823, 808, 0, 228, 809, 810, 235, + 811, 0, 768, 709, 711, 710, 728, 729, 730, 731, + 732, 733, 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 650, 665, - 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 651, 666, + 0, 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 662, 663, 0, 0, 0, 0, 762, 0, 664, - 0, 0, 672, 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, 675, 0, 0, 0, 0, + 0, 663, 664, 908, 0, 0, 0, 763, 0, 665, + 0, 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 761, 0, 0, 542, 0, 0, 759, 0, 0, + 0, 762, 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 812, 0, 451, 409, 521, + 441, 453, 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 813, - 814, 243, 563, 714, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 722, 723, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 814, + 815, 243, 563, 715, 537, 210, 0, 536, 391, 505, + 515, 378, 367, 209, 513, 376, 366, 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 772, 760, 685, 776, 687, 773, 774, 682, 683, 686, - 775, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 773, 761, 686, 777, 688, 774, 775, 683, 684, 687, + 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 763, 671, 670, 0, 678, 0, 704, 705, 707, 711, - 712, 713, 724, 725, 726, 734, 736, 737, 735, 738, - 739, 740, 743, 744, 745, 746, 741, 742, 747, 688, - 692, 689, 690, 691, 703, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 786, 787, 788, 789, 790, - 791, 717, 721, 720, 718, 719, 715, 716, 669, 190, + 764, 672, 671, 0, 679, 0, 705, 706, 708, 712, + 713, 714, 725, 726, 727, 735, 737, 738, 736, 739, + 740, 741, 744, 745, 746, 747, 742, 743, 748, 689, + 693, 690, 691, 692, 704, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 703, 787, 788, 789, 790, 791, + 792, 718, 722, 721, 719, 720, 716, 717, 670, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, - 777, 249, 778, 0, 0, 782, 0, 0, 0, 784, - 783, 0, 785, 751, 750, 0, 0, 779, 780, 0, - 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, + 778, 249, 779, 0, 0, 783, 0, 0, 0, 785, + 784, 0, 786, 752, 751, 0, 0, 780, 781, 0, + 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 792, 793, 794, 795, 796, - 797, 798, 799, 286, 517, 546, 0, 0, 362, 0, + 510, 522, 540, 545, 460, 793, 794, 795, 796, 797, + 798, 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 817, 0, 202, 236, 220, 246, 261, 264, + 277, 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 681, 0, 0, 0, + 360, 497, 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 668, 0, 0, 0, 257, 673, 0, 0, 0, + 0, 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 680, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 676, 677, 0, 0, 0, 0, 0, + 486, 405, 681, 354, 0, 0, 476, 384, 0, 0, + 0, 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 89, 0, 0, 818, 802, 768, 769, 806, 819, - 820, 821, 822, 807, 0, 228, 808, 809, 235, 810, - 0, 767, 708, 710, 709, 727, 728, 729, 730, 731, - 732, 733, 706, 815, 823, 824, 0, 252, 307, 259, + 0, 89, 0, 0, 819, 803, 769, 770, 807, 820, + 821, 822, 823, 808, 0, 228, 809, 810, 235, 811, + 0, 768, 709, 711, 710, 728, 729, 730, 731, 732, + 733, 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, - 679, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 662, 663, 0, 0, 0, 0, 762, 0, 664, 0, - 0, 672, 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, 675, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 651, 666, 0, + 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 663, 664, 0, 0, 0, 0, 763, 0, 665, 0, + 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 761, 0, 0, 542, 0, 0, 759, 0, 0, 0, + 762, 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 812, 0, 451, 409, 521, 223, + 453, 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 813, 814, - 243, 563, 714, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 722, 723, 267, + 313, 204, 0, 437, 255, 280, 245, 398, 814, 815, + 243, 563, 715, 537, 210, 0, 536, 391, 505, 515, + 378, 367, 209, 513, 376, 366, 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 772, - 760, 685, 776, 687, 773, 774, 682, 683, 686, 775, + 319, 357, 0, 0, 408, 452, 230, 523, 475, 773, + 761, 686, 777, 688, 774, 775, 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 763, - 671, 670, 0, 678, 0, 704, 705, 707, 711, 712, - 713, 724, 725, 726, 734, 736, 737, 735, 738, 739, - 740, 743, 744, 745, 746, 741, 742, 747, 688, 692, - 689, 690, 691, 703, 693, 694, 695, 696, 697, 698, - 699, 700, 701, 702, 786, 787, 788, 789, 790, 791, - 717, 721, 720, 718, 719, 715, 716, 669, 190, 211, - 352, 0, 434, 275, 561, 533, 528, 197, 213, 777, - 249, 778, 0, 0, 782, 0, 0, 0, 784, 783, - 0, 785, 751, 750, 0, 0, 779, 780, 0, 781, + 575, 576, 577, 578, 579, 580, 581, 582, 0, 764, + 672, 671, 0, 679, 0, 705, 706, 708, 712, 713, + 714, 725, 726, 727, 735, 737, 738, 736, 739, 740, + 741, 744, 745, 746, 747, 742, 743, 748, 689, 693, + 690, 691, 692, 704, 694, 695, 696, 697, 698, 699, + 700, 701, 702, 703, 787, 788, 789, 790, 791, 792, + 718, 722, 721, 719, 720, 716, 717, 670, 190, 211, + 352, 0, 434, 275, 561, 533, 528, 197, 213, 778, + 249, 779, 0, 0, 783, 0, 0, 0, 785, 784, + 0, 786, 752, 751, 0, 0, 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 792, 793, 794, 795, 796, 797, - 798, 799, 286, 517, 546, 0, 0, 362, 0, 0, + 522, 540, 545, 460, 793, 794, 795, 796, 797, 798, + 799, 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, - 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, + 240, 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, - 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 497, 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 405, 681, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 89, 0, 0, 819, 803, 769, 770, 807, 820, 821, + 822, 823, 808, 0, 228, 809, 810, 235, 811, 0, + 768, 709, 711, 710, 728, 729, 730, 731, 732, 733, + 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, - 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 666, 0, 680, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 977, 542, 0, 0, 0, 0, 0, 974, 975, - 349, 935, 316, 191, 215, 968, 972, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, + 664, 0, 0, 0, 0, 763, 0, 665, 0, 0, + 673, 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, 676, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 762, + 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 204, 0, 437, 255, 280, 245, 398, 814, 815, 243, + 563, 715, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 357, 0, 0, 408, 452, 230, 523, 475, 773, 761, + 686, 777, 688, 774, 775, 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 576, 577, 578, 579, 580, 581, 582, 0, 764, 672, + 671, 0, 679, 0, 705, 706, 708, 712, 713, 714, + 725, 726, 727, 735, 737, 738, 736, 739, 740, 741, + 744, 745, 746, 747, 742, 743, 748, 689, 693, 690, + 691, 692, 704, 694, 695, 696, 697, 698, 699, 700, + 701, 702, 703, 787, 788, 789, 790, 791, 792, 718, + 722, 721, 719, 720, 716, 717, 670, 190, 211, 352, + 0, 434, 275, 561, 533, 528, 197, 213, 778, 249, + 779, 0, 0, 783, 0, 0, 0, 785, 784, 0, + 786, 752, 751, 0, 0, 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 540, 545, 460, 793, 794, 795, 796, 797, 798, 799, + 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, + 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, @@ -3515,11 +3435,11 @@ var yyAct = [...]int{ 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 1463, 802, 0, 0, 1460, 0, 0, 0, - 0, 1458, 0, 228, 1459, 1457, 235, 1462, 0, 767, + 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3530,8 +3450,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, + 978, 542, 0, 0, 0, 0, 0, 975, 976, 349, + 936, 316, 191, 215, 969, 973, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, @@ -3571,86 +3491,21 @@ var yyAct = [...]int{ 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 0, 380, 360, 497, 498, - 302, 80, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, - 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, - 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, - 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, - 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 88, - 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, - 0, 0, 0, 0, 0, 2070, 0, 0, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 1519, 0, 360, 497, 498, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 1521, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 1523, 629, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 0, 1465, 803, 0, 0, 1462, 0, 0, 0, 0, + 1460, 0, 228, 1461, 1459, 235, 1464, 0, 768, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 1297, 0, 1298, 1299, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3710,7 +3565,7 @@ var yyAct = [...]int{ 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, - 1500, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -3753,20 +3608,85 @@ var yyAct = [...]int{ 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 88, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, + 0, 0, 0, 0, 2072, 0, 0, 2071, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, + 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, + 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, + 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, + 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, + 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, + 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, + 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, + 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, + 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, + 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, + 491, 379, 253, 416, 1521, 0, 360, 497, 498, 302, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 0, 0, 1523, 0, 0, 0, + 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, + 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, + 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 1525, 630, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, + 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, + 0, 0, 0, 0, 0, 219, 0, 0, 0, 1299, + 0, 1300, 1301, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, + 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, + 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, + 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, + 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, + 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, + 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, + 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, + 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, + 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, + 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, + 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, + 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 0, 380, 360, 497, 498, 302, 80, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, @@ -3774,8 +3694,8 @@ var yyAct = [...]int{ 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 237, 311, 195, 396, 477, 273, 0, 89, 0, 1502, + 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -3816,9 +3736,9 @@ var yyAct = [...]int{ 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 318, 363, 431, 0, 190, 211, 352, 88, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, - 0, 0, 0, 2070, 0, 0, 2069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, @@ -3833,13 +3753,13 @@ var yyAct = [...]int{ 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 2021, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 1700, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, @@ -3858,7 +3778,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 2019, 450, 356, 506, 432, 518, 543, 544, + 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, @@ -3883,7 +3803,7 @@ var yyAct = [...]int{ 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2072, 0, 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, @@ -3898,20 +3818,20 @@ var yyAct = [...]int{ 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 399, 0, 0, 0, 2023, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, + 195, 396, 477, 273, 0, 0, 0, 0, 1702, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 929, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3920,10 +3840,10 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 0, 349, 935, 316, 191, 215, - 933, 0, 395, 441, 453, 0, 0, 0, 242, 0, + 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, + 0, 2021, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, @@ -3963,20 +3883,20 @@ var yyAct = [...]int{ 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 2021, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 1700, 188, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3985,7 +3905,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 0, 0, 0, 349, 936, 316, 191, 215, 934, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, @@ -4028,13 +3948,13 @@ var yyAct = [...]int{ 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 0, 0, 2023, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 1500, 0, 629, 0, 0, + 477, 273, 0, 0, 0, 0, 1702, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, @@ -4049,7 +3969,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 542, 0, 0, 0, 3308, + 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, @@ -4099,7 +4019,7 @@ var yyAct = [...]int{ 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1854, 629, 0, 0, 0, + 273, 0, 0, 0, 1502, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -4108,13 +4028,13 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1855, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 542, 0, 0, 0, 3310, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, @@ -4164,7 +4084,7 @@ var yyAct = [...]int{ 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 2422, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 1856, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, @@ -4173,7 +4093,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2423, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4229,8 +4149,8 @@ var yyAct = [...]int{ 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 629, 0, 0, 0, 0, 2407, - 0, 0, 0, 0, 228, 0, 0, 235, 2408, 0, + 0, 0, 0, 2424, 630, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, @@ -4238,7 +4158,7 @@ var yyAct = [...]int{ 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4288,14 +4208,14 @@ var yyAct = [...]int{ 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 1542, 0, 0, 0, 350, 254, + 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 1541, 629, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 0, 0, 0, 630, 0, 0, 0, 0, 2409, 0, + 0, 0, 0, 228, 0, 0, 235, 2410, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, @@ -4353,13 +4273,13 @@ var yyAct = [...]int{ 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 0, 257, 1544, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 631, 632, 633, 0, 0, 0, 0, 0, + 0, 1543, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -4424,7 +4344,7 @@ var yyAct = [...]int{ 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 632, 633, 634, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -4439,7 +4359,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, - 0, 0, 0, 3432, 0, 0, 0, 349, 0, 316, + 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, @@ -4488,8 +4408,8 @@ var yyAct = [...]int{ 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 0, 1700, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, + 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -4504,7 +4424,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, - 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 0, 0, 3434, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, @@ -4553,7 +4473,7 @@ var yyAct = [...]int{ 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, + 195, 396, 477, 273, 0, 0, 0, 0, 1702, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, @@ -4569,7 +4489,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 3308, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, @@ -4618,7 +4538,7 @@ var yyAct = [...]int{ 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 89, 0, 0, 0, 629, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -4634,7 +4554,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 3310, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, @@ -4676,14 +4596,14 @@ var yyAct = [...]int{ 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 2071, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 188, 0, 0, + 477, 273, 0, 89, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, @@ -4741,14 +4661,14 @@ var yyAct = [...]int{ 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 2073, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1523, 629, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -4813,7 +4733,7 @@ var yyAct = [...]int{ 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 1525, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, @@ -4822,7 +4742,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4878,7 +4798,7 @@ var yyAct = [...]int{ 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -4886,7 +4806,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4920,7 +4840,7 @@ var yyAct = [...]int{ 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 1809, 434, 275, 561, 533, 528, 197, 213, 0, 249, + 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, @@ -4943,7 +4863,7 @@ var yyAct = [...]int{ 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 1801, 629, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, @@ -4984,7 +4904,7 @@ var yyAct = [...]int{ 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, - 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 1811, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5001,14 +4921,14 @@ var yyAct = [...]int{ 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 1667, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 1803, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -5066,14 +4986,14 @@ var yyAct = [...]int{ 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 1665, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 1669, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -5131,14 +5051,14 @@ var yyAct = [...]int{ 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 1663, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 1667, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -5196,13 +5116,13 @@ var yyAct = [...]int{ 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 1661, 0, 0, 0, 0, 0, 0, 257, + 399, 0, 1665, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 629, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, @@ -5261,13 +5181,13 @@ var yyAct = [...]int{ 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 1659, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 1663, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -5326,13 +5246,13 @@ var yyAct = [...]int{ 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 1655, 0, 0, 0, 0, 0, 0, 257, 0, 0, + 1661, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, + 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, @@ -5390,14 +5310,14 @@ var yyAct = [...]int{ 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 1653, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 1657, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -5455,14 +5375,14 @@ var yyAct = [...]int{ 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 1651, 0, + 0, 0, 0, 0, 0, 0, 399, 0, 1655, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, @@ -5520,14 +5440,14 @@ var yyAct = [...]int{ 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 1653, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 1626, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -5586,13 +5506,13 @@ var yyAct = [...]int{ 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 1527, 257, 0, 0, 0, 0, 350, 254, + 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 0, 1628, + 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, @@ -5651,13 +5571,13 @@ var yyAct = [...]int{ 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 1529, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, - 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -5721,8 +5641,8 @@ var yyAct = [...]int{ 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, + 0, 803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, @@ -5735,7 +5655,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, @@ -5773,7 +5693,7 @@ var yyAct = [...]int{ 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 1279, 517, + 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, @@ -5800,7 +5720,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1282, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, @@ -5831,14 +5751,14 @@ var yyAct = [...]int{ 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 888, 0, 0, 0, 192, 193, 200, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, - 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 288, 426, 427, 300, 301, 558, 559, 1281, 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, @@ -5866,7 +5786,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 586, 0, 542, 0, 0, + 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, @@ -5896,7 +5816,7 @@ var yyAct = [...]int{ 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, + 0, 0, 889, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, @@ -5916,7 +5836,7 @@ var yyAct = [...]int{ 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -5931,7 +5851,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 385, 244, 0, 0, 586, 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, @@ -5963,7 +5883,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 3440, 393, 394, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, @@ -5981,7 +5901,7 @@ var yyAct = [...]int{ 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, + 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, @@ -6028,7 +5948,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, - 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 314, 364, 370, 371, 372, 373, 3442, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, @@ -6046,7 +5966,7 @@ var yyAct = [...]int{ 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -6111,7 +6031,7 @@ var yyAct = [...]int{ 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, @@ -6167,30 +6087,120 @@ var yyAct = [...]int{ 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 0, 0, 360, - 497, 498, 302, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, + 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, + 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, + 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, + 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, + 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, + 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, + 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, + 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, + 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, + 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, + 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, + 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, + 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, + 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, + 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, + 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, + 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, + 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, + 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, + 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, + 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, + 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, + 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, + 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, + 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, + 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, + 488, 489, 491, 379, 253, 416, 0, 0, 360, 497, + 498, 302, 89, 0, 0, 819, 0, 0, 0, 807, + 820, 821, 822, 823, 808, 0, 0, 809, 810, 0, + 811, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 816, 824, 825, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2836, 2837, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2838, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2839, + 2840, } var yyPact = [...]int{ - -1000, -1000, 5199, -1000, -446, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 5528, -1000, -443, -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, 2201, 2313, - -1000, -1000, -1000, -1000, 2383, -1000, 860, 1868, -1000, 2159, - 368, -1000, 45784, 617, -1000, 43188, 615, 146, 28261, -1000, - 243, -1000, 229, 44486, 244, -1000, -1000, -1000, -315, 17875, - 2070, 84, 83, 45784, -1000, -1000, -1000, -1000, 2333, 1866, - -1000, 416, -1000, -1000, -1000, -1000, -1000, -1000, 42539, -1000, - 969, -1000, -1000, 2162, 2183, 2388, 777, 2151, -1000, 2217, - 1866, -1000, 17875, 2319, 2226, 17226, 17226, 549, -1000, -1000, - 164, -1000, -1000, 23718, 45784, 30857, 328, -1000, 2159, -1000, - -1000, -1000, 101, -1000, 414, 1784, -1000, 1781, -1000, 572, - 933, 453, 557, 554, 452, 447, 433, 432, 430, 429, - 423, 419, 456, -1000, 795, 795, -104, -116, 3950, 550, - 524, 524, 958, 571, 2101, 2096, -1000, -1000, 795, 795, - 795, 381, 795, 795, 795, 795, 395, 394, 795, 795, - 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, - 795, 795, 795, 795, 795, 371, 2159, 364, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2173, 2225, + -1000, -1000, -1000, -1000, 2373, -1000, 794, 1884, -1000, 2162, + 4360, -1000, 45633, 541, -1000, 43037, 539, 143, 28110, -1000, + 220, -1000, 198, 44335, 208, -1000, -1000, -1000, -332, 17724, + 2094, 97, 91, 45633, -1000, -1000, -1000, -1000, 2314, 1836, + -1000, 396, -1000, -1000, -1000, -1000, -1000, -1000, 42388, -1000, + 903, -1000, -1000, 2170, 2167, 2383, 711, 2099, -1000, 2247, + 1836, -1000, 17724, 2312, 2232, 17075, 17075, 493, -1000, -1000, + 281, -1000, -1000, 23567, 45633, 30706, 397, -1000, 2162, -1000, + -1000, -1000, 114, -1000, 398, 1756, -1000, 1755, -1000, 694, + 722, 429, 538, 494, 428, 423, 420, 419, 417, 410, + 409, 406, 408, -1000, 740, 740, -120, -121, 4794, 481, + 484, 484, 863, 517, 2131, 2130, -1000, -1000, 740, 740, + 740, 377, 740, 740, 740, 740, 338, 336, 740, 740, + 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, + 740, 740, 740, 740, 740, 469, 2162, 321, -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, @@ -6230,60 +6240,61 @@ 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, 45784, 245, 45784, -1000, 683, 45784, - 943, 943, 100, 943, 943, 943, 943, 252, 695, 81, - -1000, 237, 378, 226, 356, 927, 326, -1000, -1000, 352, - 927, 1600, -1000, 784, 190, -1000, 943, 943, -1000, 11360, - 162, 11360, 11360, -1000, 2139, -1000, -1000, -1000, -1000, -1000, - 1173, -1000, -1000, -1000, -1000, -1000, 567, -1000, -1000, -1000, - -1000, 44486, 41890, -1000, -1000, 95, -1000, -1000, 1604, 1164, - 17875, 1513, -1000, 1277, 756, -1000, -1000, -1000, -1000, -1000, - 664, -1000, 18524, 18524, 18524, 18524, -1000, -1000, 1601, 41241, - 1601, 1601, 18524, 1601, -1000, 18524, 1601, 1601, 1601, 17875, - 1601, 1601, 1601, 1601, -1000, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, -1000, -1000, -1000, -1000, 1601, 682, 1601, - 1601, 1601, 1601, 1601, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1601, 1601, 1601, 1601, 1601, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + -1000, -1000, -1000, -1000, 45633, 329, 45633, -1000, 617, 45633, + 862, 862, 123, 862, 862, 862, 862, 217, 678, 70, + -1000, 205, 317, 212, 319, 867, 202, -1000, -1000, 308, + 867, 1592, -1000, 729, 313, 168, -1000, 862, 862, -1000, + 11209, 175, 11209, 11209, -1000, 2158, -1000, -1000, -1000, -1000, + -1000, 1010, -1000, -1000, -1000, -1000, -1000, 512, -1000, -1000, + -1000, -1000, 44335, 41739, -1000, -1000, 165, -1000, -1000, 1649, + 1348, 17724, 1149, -1000, 1279, 681, -1000, -1000, -1000, -1000, + -1000, 597, -1000, 18373, 18373, 18373, 18373, -1000, -1000, 1761, + 41090, 1761, 1761, 18373, 1761, -1000, 18373, 1761, 1761, 1761, + 17724, 1761, 1761, 1761, 1761, -1000, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, -1000, -1000, -1000, -1000, 1761, 612, + 1761, 1761, 1761, 1761, 1761, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1761, 1761, 1761, 1761, 1761, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 19671, 1333, 1312, 1309, -1000, 15128, 1761, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 19822, 1316, 1314, 1304, -1000, 15279, 1601, -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, -1000, -1000, 45633, + -1000, 1761, 269, 44335, 44335, 399, 2247, 1836, -1000, 2314, + 2271, 396, -1000, 2857, 2074, 1446, 1254, 1836, 1735, 45633, + -1000, 1800, -1000, -1000, -1000, -1000, 2021, 1274, 1582, -1000, + -1000, -1000, -1000, 1632, 17724, -1000, -1000, 2364, -1000, 20970, + 607, 2358, 40441, -1000, 493, 493, 1746, 440, 50, -1000, + -1000, -1000, -1000, 783, 27461, -1000, -1000, -1000, -1000, 1647, + 45633, -1000, -1000, 4315, 1158, -1000, 1883, -1000, 1605, -1000, + 1842, 17724, 1904, 537, 1158, 531, 530, 526, -1000, -28, + -1000, -1000, -1000, -1000, -1000, -1000, 740, 740, 740, -1000, + 402, 2309, 4360, 6311, -1000, -1000, -1000, 39792, 1871, 1158, + -1000, 1870, -1000, 843, 591, 638, 638, 1158, -1000, -1000, + 44984, 1158, 835, 834, 1158, 1158, 44335, 44335, -1000, 39143, + -1000, 38494, 37845, 1140, 44335, 37196, 36547, 35898, 35249, 34600, + -1000, 2049, -1000, 1937, -1000, -1000, -1000, 44984, 1158, 1158, + 44984, 44335, 44984, 45633, 1158, -1000, -1000, 372, -1000, -1000, + 1137, 1136, 1135, 740, 740, 1134, 1579, 1568, 1555, 740, + 740, 1127, 1553, 29408, 1547, 300, 1116, 1111, 1091, 1048, + 1507, 209, 1490, 1047, 1045, 1090, 44335, 1868, 45633, -1000, + 304, 718, 496, 434, 780, 2162, 2092, 1744, 511, 536, + 1158, 490, 490, 44335, -1000, 13174, -1000, -1000, 1487, 17724, + -1000, 880, 867, 867, -1000, -1000, -1000, -1000, -1000, -1000, + 862, 45633, 880, -1000, -1000, -1000, 867, 862, 45633, 862, + 862, 862, 862, 867, 867, 867, 862, 45633, 45633, 45633, + 45633, 45633, 45633, 45633, 45633, 45633, 11209, 729, 862, -337, + -1000, 1477, -1000, -1000, 2001, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 45784, -1000, - 1601, 277, 44486, 44486, 425, 2217, 1866, -1000, 2333, 2369, - 416, -1000, 2973, 1525, 1323, 1255, 1866, 1766, 45784, -1000, - 1794, -1000, -1000, -1000, -1000, 2008, 1258, 1591, -1000, -1000, - -1000, -1000, 2125, 17875, -1000, -1000, 2363, -1000, 21121, 678, - 2361, 40592, -1000, 549, 549, 1779, 481, 53, -1000, -1000, - -1000, -1000, 821, 27612, -1000, -1000, -1000, -1000, 1688, 45784, - -1000, -1000, 4566, 1176, -1000, 1864, -1000, 1681, -1000, 1822, - 17875, 1894, 606, 1176, 595, 584, 577, -1000, -8, -1000, - -1000, -1000, -1000, -1000, -1000, 795, 795, 795, -1000, 421, - 2317, 368, 5410, -1000, -1000, -1000, 39943, 1862, 1176, -1000, - 1857, -1000, 899, 650, 660, 660, 1176, -1000, -1000, 45135, - 1176, 897, 892, 1176, 1176, 44486, 44486, -1000, 39294, -1000, - 38645, 37996, 1160, 44486, 37347, 36698, 36049, 35400, 34751, -1000, - 2060, -1000, 1886, -1000, -1000, -1000, 45135, 1176, 1176, 45135, - 44486, 45135, 45784, 1176, -1000, -1000, 382, -1000, -1000, 1142, - 1141, 1140, 795, 795, 1125, 1582, 1569, 1551, 795, 795, - 1124, 1549, 29559, 1531, 366, 1120, 1112, 1111, 1103, 1512, - 207, 1505, 1098, 1086, 1101, 44486, 1853, 45784, -1000, 351, - 800, 527, 451, 818, 2159, 2068, 1773, 565, 604, 1176, - 537, 537, 44486, -1000, 13325, -1000, -1000, 1488, 17875, -1000, - 946, 927, 927, -1000, -1000, -1000, -1000, -1000, -1000, 943, - 45784, 946, -1000, -1000, -1000, 927, 943, 45784, 943, 943, - 943, 943, 927, 927, 927, 943, 45784, 45784, 45784, 45784, - 45784, 45784, 45784, 45784, 45784, 11360, 784, 943, -322, -1000, - 1485, -1000, 1976, -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, @@ -6298,282 +6309,282 @@ 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, 11360, - 11360, -1000, -1000, -1000, -1000, 234, -1000, 34102, 415, 811, - -1000, 1770, 33453, -1000, -325, -326, -332, -336, -1000, -1000, - -1000, -341, -350, -1000, -1000, -1000, 17875, 17875, 17875, 17875, - -140, -1000, 889, 18524, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 155, 806, 18524, 18524, 18524, 18524, 18524, 18524, 18524, - 18524, 18524, 18524, 18524, 18524, 18524, 18524, 18524, -1000, -1000, - 25665, 6759, 6759, 756, 756, 756, 756, -1000, -71, 1769, - 45135, -1000, -1000, -1000, 676, 17875, 17875, 756, -1000, 1176, - 15279, 32804, 17226, 17226, 17875, 827, 1164, 45135, 17875, -1000, - 1255, -1000, -1000, -1000, 1126, -1000, 913, 2143, 2143, 2143, - 2143, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, - 17875, 2143, 44486, 44486, 1393, 17875, 17875, 17875, 17875, 17875, - 17875, 13980, 17875, 17875, 18524, 17875, 17875, 17875, 1255, 17875, - 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, - 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, 17875, - 17875, 17875, 17875, 17875, 17875, 17875, 1255, 17875, 1082, 17875, - 17875, 17226, 12670, 17226, 17226, 17226, 17226, 17226, -1000, -1000, - -1000, -1000, -1000, 17875, 17875, 17875, 17875, 17875, 17875, 17875, - 17875, 1255, 17875, 17875, 17875, 17875, 17875, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1337, 1247, 1301, - 17875, -1000, 1768, -1000, -149, 23069, 17875, 1455, 2356, 1927, - 44486, -1000, -1000, -1000, 2217, -1000, 2217, 1337, 2898, 2011, - 17226, -1000, -1000, 2898, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1559, -1000, 45784, 1766, 2222, 44486, 2006, 1451, - 435, -1000, 17875, 17875, 1765, -1000, 1130, 45784, -1000, -140, - -1000, 32155, -1000, -1000, 10705, 45784, 417, 45784, -1000, 22420, - 31506, 240, 53, -1000, 1726, -1000, 56, 47, 14629, 752, - -1000, -1000, -1000, 3950, 19173, 1524, 752, 128, -1000, -1000, - -1000, 1822, -1000, 1822, 1822, 1822, 1822, 435, 435, 435, - 435, -1000, -1000, -1000, -1000, -1000, 1852, 1848, -1000, 1822, - 1822, 1822, 1822, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 11209, 11209, -1000, -1000, -1000, -1000, 203, -1000, 33951, + 422, 777, -1000, 1741, 33302, -1000, -341, -345, -347, -354, + -1000, -1000, -1000, -355, -357, -1000, -1000, -1000, 17724, 17724, + 17724, 17724, -182, -1000, 897, 18373, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 166, 951, 18373, 18373, 18373, 18373, 18373, + 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, + -1000, -1000, 25514, 7624, 7624, 681, 681, 681, 681, -1000, + -95, 1740, 44984, -1000, -1000, -1000, 604, 17724, 17724, 681, + -1000, 1158, 15128, 32653, 17075, 17075, 17724, 786, 1348, 44984, + 17724, -1000, 1254, -1000, -1000, -1000, 1129, -1000, 865, 2140, + 2140, 2140, 2140, 17724, 17724, 17724, 17724, 17724, 17724, 17724, + 17724, 17724, 17724, 2140, 44335, 44335, 219, 17724, 17724, 17724, + 17724, 17724, 17724, 13829, 17724, 17724, 18373, 17724, 17724, 17724, + 1254, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, + 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, + 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 1254, 17724, + 1124, 17724, 17724, 17075, 12519, 17075, 17075, 17075, 17075, 17075, + -1000, -1000, -1000, -1000, -1000, 17724, 17724, 17724, 17724, 17724, + 17724, 17724, 17724, 1254, 17724, 17724, 17724, 17724, 17724, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1341, + 1294, 1246, 17724, -1000, 1736, -1000, -151, 22918, 17724, 1472, + 2349, 1929, 44335, -1000, -1000, -1000, 2247, -1000, 2247, 1341, + 2707, 2034, 17075, -1000, -1000, 2707, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1510, -1000, 45633, 1735, 2202, 44335, + 2025, 1442, 431, -1000, 17724, 17724, 1734, -1000, 1180, 45633, + -1000, -182, -1000, 32004, -1000, -1000, 10554, 45633, 400, 45633, + -1000, 22269, 31355, 284, 50, -1000, 1715, -1000, 33, 76, + 14478, 680, -1000, -1000, -1000, 4794, 19022, 1628, 680, 135, + -1000, -1000, -1000, 1842, -1000, 1842, 1842, 1842, 1842, 431, + 431, 431, 431, -1000, -1000, -1000, -1000, -1000, 1864, 1859, + -1000, 1842, 1842, 1842, 1842, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1846, 1846, 1846, 1828, 1828, 509, -1000, 17875, 314, 30857, - 2215, 1097, 1384, 351, 547, 1912, 1176, 1176, 1176, 547, - -1000, 1237, 1234, 1206, -1000, -422, 1763, -1000, -1000, 2316, - -1000, -1000, 628, 924, 917, 834, 44486, 301, 412, -1000, - 521, -1000, 30857, 1176, 891, 660, 1176, -1000, 1176, -1000, - -1000, -1000, -1000, -1000, 1176, -1000, -1000, 1753, -1000, 1647, - 978, 914, 964, 912, 1753, -1000, -1000, -78, 1753, -1000, - 1753, -1000, 1753, -1000, 1753, -1000, 1753, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 838, 239, -181, 44486, - 301, 564, -1000, 562, 25665, -1000, -1000, -1000, 25665, 25665, - -1000, -1000, -1000, -1000, 1448, 1431, -1000, -1000, -1000, -1000, + -1000, -1000, 1856, 1856, 1856, 1848, 1848, 478, -1000, 17724, + 325, 30706, 2182, 1089, 1529, 304, 491, 1922, 1158, 1158, + 1158, 491, -1000, 1207, 1164, 1157, -1000, -428, 1733, -1000, + -1000, 2305, -1000, -1000, 782, 869, 864, 725, 44335, 276, + 366, -1000, 463, -1000, 30706, 1158, 825, 638, 1158, -1000, + 1158, -1000, -1000, -1000, -1000, -1000, 1158, -1000, -1000, 1731, + -1000, 1689, 970, 858, 927, 854, 1731, -1000, -1000, -107, + 1731, -1000, 1731, -1000, 1731, -1000, 1731, -1000, 1731, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 774, 204, + -232, 44335, 276, 509, -1000, 508, 25514, -1000, -1000, -1000, + 25514, 25514, -1000, -1000, -1000, -1000, 1441, 1417, -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, -421, 45784, -1000, 334, 803, - 399, 422, 377, 45784, 350, 2252, 2246, 2234, 2232, 2231, - -1000, -1000, -1000, 1429, 355, 387, 45784, 45784, 537, 1968, - 45784, 2193, 45784, -1000, -1000, -1000, -1000, -1000, 1164, 45784, - -1000, -1000, 943, 943, -1000, -1000, 45784, 943, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 943, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -412, 45633, -1000, + 287, 758, 341, 387, 345, 45633, 324, 2234, 2216, 2212, + 2210, 2205, -1000, -1000, -1000, 1408, 290, 335, 45633, 45633, + 490, 1983, 45633, 2187, 45633, -1000, -1000, -1000, -1000, -1000, + 1348, 45633, -1000, -1000, 862, 862, -1000, -1000, 45633, 862, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 862, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 45784, -1000, -1000, -1000, -1000, 44486, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -56, 132, 54, - 398, -1000, -1000, -1000, -1000, -1000, 2258, -1000, 1164, 870, - 847, -1000, 1601, -1000, -1000, 1022, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 155, 18524, 18524, 18524, 1146, 551, 1553, - 1322, 1578, 1310, 1310, 1056, 1056, 763, 763, 763, 763, - 763, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1415, - -1000, 1601, 45135, 1672, 12670, 1516, 1613, 1255, 2852, -1000, - 1669, -1000, 1669, 1196, 830, -1000, 17875, 1255, 2844, -1000, - -1000, 1255, 1255, 1255, 17875, -1000, -1000, 17875, 17875, 17875, - 17875, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 17875, 1751, 1729, 2347, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 45633, -1000, -1000, -1000, -1000, 44335, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -48, + 224, 29, 407, -1000, -1000, -1000, -1000, -1000, 2237, -1000, + 1348, 809, 802, -1000, 1761, -1000, -1000, 1040, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 166, 18373, 18373, 18373, 1581, + 544, 1690, 1443, 1030, 840, 840, 1009, 1009, 687, 687, + 687, 687, 687, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1398, -1000, 1761, 44984, 1599, 12519, 1382, 1322, 1254, + 2756, -1000, 1578, -1000, 1578, 1938, 808, -1000, 17724, 1254, + 2750, -1000, -1000, 1254, 1254, 1254, 17724, -1000, -1000, 17724, + 17724, 17724, 17724, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 17724, 1730, 1729, 2347, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1398, 1384, 1384, 1384, - 1384, 1384, 17875, 2035, -1000, -1000, -1000, 1340, 2830, 1465, - 2819, 1384, 1384, -1000, 1384, 2809, 2778, 1255, 1604, 1255, - 1728, -1000, 2774, 1384, 2754, 2750, 2742, 2062, 2738, 2732, - 2719, 1384, 1384, 1384, 2057, 2710, 2655, 2638, 2610, 2588, - 2570, 2553, 2477, 2457, 1384, -142, 1384, 1255, -1000, -1000, - -1000, -1000, -1000, 2438, 2039, 1255, 1727, 1601, 674, -1000, - -1000, 1669, 1255, 1255, 1669, 1669, 2396, 2364, 2306, 2293, - 2276, 2250, 1384, 1384, -1000, 1384, 2245, 2241, 2014, 1994, - 1255, -1000, 1301, 45784, -1000, -312, -1000, 32, 816, 1601, - -1000, 29559, 1255, -1000, 6694, -1000, 1165, -1000, -1000, -1000, - -1000, -1000, 26963, 1758, 2898, -1000, -1000, 1601, 1649, -1000, - -1000, 435, 121, 26314, 734, 734, 143, 1164, 1164, 17875, - -1000, -1000, -1000, -1000, -1000, -1000, 663, 2330, 402, 1601, - -1000, 1767, 2090, -1000, -1000, -1000, 2214, 20472, -1000, 1601, - 1601, 45784, 1565, 1509, -1000, 662, -1000, 1183, 1726, 53, - 35, -1000, -1000, -1000, -1000, 1164, -1000, 1203, 418, 738, - -1000, 493, -1000, -1000, -1000, -1000, 2085, 106, -1000, -1000, - -1000, 261, 435, -1000, -1000, -1000, -1000, -1000, -1000, 1369, - 1369, -1000, -1000, -1000, -1000, -1000, 1092, -1000, -1000, -1000, - 1088, -1000, -1000, 2233, 1925, 314, -1000, -1000, 795, 1361, - -1000, -1000, 2091, 795, 795, 44486, -1000, -1000, 1510, 2215, - 334, 45784, 837, 1965, -1000, 1912, 1912, 1912, 45784, -1000, - -1000, -1000, -1000, -1000, -1000, -426, 75, 389, -1000, -1000, - -1000, 4186, 44486, 1644, -1000, 280, -1000, 1483, -1000, 44486, - -1000, 1623, 1837, 1176, 1176, -1000, -1000, -1000, 44486, 1601, - -1000, -1000, -1000, -1000, 603, 2153, 336, -1000, -1000, -161, - -1000, -1000, 301, 280, 45135, 1176, 752, -1000, -1000, -1000, - -1000, -1000, -416, 1609, 574, 308, 349, 45784, 45784, 45784, - 45784, 45784, 652, -1000, -1000, 68, -1000, -1000, 262, -1000, - -1000, -1000, -1000, 262, -1000, -1000, -1000, -1000, -1000, 367, - 559, -1000, 45784, 45784, 679, -1000, -1000, -1000, 927, -1000, - -1000, 927, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2114, 45784, 43, -377, -1000, -374, 17875, -1000, - -1000, -1000, -1000, 1077, 512, 1553, 18524, 18524, 18524, -1000, - -1000, -1000, 930, 930, 25665, -1000, 17875, 17226, -1000, -1000, - 17875, 17875, 823, -1000, 17875, 1031, -1000, 17875, -1000, -1000, - -1000, 1301, 1384, 1384, 1384, 1384, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1764, 17875, 17875, 17875, - 1255, 341, -1000, -1000, -1000, -1000, -1000, 2345, -1000, 17875, - -1000, 25665, 17875, 17875, 17875, -1000, -1000, -1000, 17875, 17875, - -1000, -1000, 17875, 17875, -1000, 17875, 17875, 17875, -1000, 17875, - 17875, 17875, 17875, -1000, -1000, -1000, -1000, 17875, 17875, 17875, - 17875, 17875, 17875, 17875, 17875, 17875, 17875, -1000, -1000, 30857, - 79, -142, 1082, 79, 1082, -1000, 17226, 12015, -1000, -1000, - -1000, -1000, -1000, 17875, 17875, 17875, 17875, 17875, 17875, -1000, - -1000, -1000, 17875, 17875, -1000, 17875, -1000, 17875, -1000, -1000, - -1000, -1000, -1000, 816, -1000, 660, 660, 660, 44486, -1000, - -1000, -1000, -1000, 1722, -1000, 2242, -1000, 2023, 2022, 2344, - 2330, -1000, 22420, 2898, -1000, -1000, 44486, -302, -1000, 2065, - 2095, 734, 734, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 10050, 2217, 17875, 1961, 45135, 157, -1000, 21771, 44486, 45135, - 22420, 22420, 22420, 22420, 22420, -1000, 1992, 1982, -1000, 2029, - 1984, 2138, 45784, -1000, 1606, 1255, 2369, 20472, 416, 17875, - 24367, 1718, 22420, -1000, -1000, 22420, 45784, 9395, -1000, -1000, - 37, 42, -1000, -1000, -1000, -1000, 3950, -1000, -1000, 812, - 2208, 2083, -1000, -1000, -1000, -1000, -1000, 1598, -1000, 1587, - 1693, 1523, 239, -1000, 1890, 2108, 795, 795, -1000, 1087, - -1000, 1176, 1335, 1333, -1000, -1000, -1000, 552, -1000, 2184, - 45784, 1958, 1956, 1955, -1000, -438, 1073, 1835, 1878, 17875, - 1834, 2311, 1677, 44486, -1000, -1000, 45135, -1000, 220, -1000, - 314, 44486, -1000, -1000, -1000, 412, 45784, -1000, 7026, -1000, - -1000, -1000, 280, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 45784, 333, -1000, 1832, 1171, -1000, -1000, 1909, -1000, -1000, - -1000, -1000, 250, 391, 1331, 265, 1329, 265, -1000, 45784, - 670, 1925, 45784, -1000, -1000, -1000, 943, 943, -1000, -1000, - 2104, -1000, 1176, 1384, 18524, 18524, -1000, 756, 420, -122, - 1822, 1822, -1000, 1822, 1828, -1000, 1822, 212, 1822, 200, - 1822, -1000, -1000, 1255, 1255, 1301, -1000, 1975, 1254, -1000, - 1164, 17875, 2228, -1000, -1000, -1000, -1000, -1000, -14, 2224, - 2212, 1384, -1000, 1821, 1816, 17875, 1384, 1255, 1969, 1384, - 1384, 1384, 1384, -1000, 1164, 1301, 2186, 1301, 1384, 1384, - 2165, 365, 1384, 1521, 1521, 1521, 1521, 1521, 1301, 1301, - 1301, 1301, 44486, -1000, -142, -1000, -1000, -182, -183, -1000, - 1255, -142, 1692, 1255, -1000, 1952, 1948, 2130, 1933, 1384, - 1979, 1384, 1384, 1384, 1913, -1000, 2229, 2229, 2229, 1495, - 1165, 45784, -1000, -1000, -1000, -1000, 2330, 2328, 1679, -1000, - -1000, 121, 462, -1000, 2074, 2095, -1000, 2310, 2059, 2304, - -1000, -1000, -1000, -1000, -1000, 1164, -1000, 2140, 1709, -1000, - 802, 1625, -1000, -1000, 16577, 1518, 2019, 643, 1495, 1713, - 2090, 1903, 1947, 2695, -1000, -1000, -1000, -1000, 1981, -1000, - 1980, -1000, -1000, 1794, -1000, -1000, 1247, 1255, 1873, 417, - 22420, 1683, 1683, -1000, 638, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 937, 4846, 2386, -1000, 1325, -1000, 1199, 197, - 1050, -1000, -1000, 795, 795, -1000, 886, 885, -1000, 45784, - 1815, -1000, 435, 1321, 435, 1048, -1000, 1035, -1000, -1000, - -1000, -1000, 1842, 1950, -1000, -1000, -1000, -1000, 45784, -1000, - -1000, 45784, 45784, 45784, 1802, 2303, -1000, 17875, 1800, 799, - 2100, 44486, 44486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 518, 795, -396, 386, 384, 795, - 795, 795, -439, -1000, -1000, 1482, 1473, -1000, -106, -1000, - 17875, -1000, -1000, -1000, 1064, 1064, 1316, 1314, 1304, -1000, - 1794, -1000, -1000, -1000, 1474, -1000, -1000, -89, 44486, 44486, - 44486, 44486, -1000, -1000, 975, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 756, 1255, 357, - -94, 1255, -1000, -1000, 435, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 17875, -1000, 17875, -1000, 1164, - 17875, 2217, 1288, 17875, 17875, -1000, 1025, 1014, 1384, -1000, - -1000, -1000, 17875, -1000, -1000, -1000, -1000, -1000, 17875, -1000, - -1000, -1000, 17875, 253, 930, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1255, 413, -1000, -1000, -1000, - -1000, 2340, -1000, 1255, 17875, -1000, -1000, 17875, -1000, 17875, - 17875, -1000, 17875, -1000, 17875, -1000, -1000, -1000, -1000, 17875, - 1601, 2156, 1601, 1601, 24367, -1000, -1000, 2328, 2322, 2298, - 2044, 2046, 2046, 2074, -1000, 2288, 2283, -1000, 1270, 2279, - 1260, 854, -1000, 45135, 17875, 157, -1000, 410, 44486, 157, - 44486, -1000, 2294, -1000, -1000, 17875, 1799, -1000, 17875, -1000, - -1000, -1000, -1000, -1000, -1000, 6759, 2330, 1683, -1000, -1000, - 769, -1000, 17875, -1000, -1000, -1000, 3675, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1257, 1241, -1000, -1000, 1798, - 17875, -1000, -1000, -1000, 1413, 1324, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1794, -1000, -1000, -1000, -1000, 412, - -428, 1937, 44486, 1007, -1000, 1469, 1677, 401, 157, 1217, - 795, 795, 795, 996, 980, 29559, 1442, -1000, 44486, 473, - -1000, 412, -1000, -117, -118, 1384, -1000, -1000, 2203, -1000, - -1000, 12015, -1000, -1000, 1793, 1911, -1000, -1000, -1000, -1000, - 1999, -76, -100, -1000, -1000, 1384, 1384, 1291, 1255, -1000, - 1384, 1384, 1302, 1292, -1000, 1384, 1301, 1858, -1000, 253, - 1255, 1942, -1000, -1000, 6759, -1000, -1000, 2294, 2278, 79, - -1000, -1000, 313, 79, 1164, 1771, 1384, 1724, 1701, 1384, - 1384, 25016, -1000, 2268, 2262, 30208, 30208, 816, 2322, -150, - 17875, 17875, 2031, 991, -1000, -1000, -1000, -1000, 1214, 1209, - -1000, 1201, -1000, 2385, -1000, 1164, -1000, 157, -1000, 634, - 1625, -1000, 2217, 1164, 44486, 1164, 102, 2294, -1000, 1384, - -1000, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, -1000, -1000, 44486, 1749, -1000, -1000, 2199, 1440, 74, - -1000, 1275, 1677, -1000, -1000, 154, -1000, 17875, -1000, 29559, - 1197, 1193, -1000, -1000, -1000, -1000, -439, -1000, -1000, -1000, - -1000, -1000, -1000, 416, 1651, -1000, 794, 44486, 45784, -1000, - 1997, -1000, -1000, -1000, 17875, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 17875, -1000, 1255, 1940, -1000, -250, -1000, - -408, 17875, -142, -1000, -1000, -142, -1000, 17875, -1000, -1000, - 17875, -1000, 17875, -1000, -1000, 1410, -1000, -1000, -1000, -1000, - -1000, 1410, 1410, -1000, -150, -1000, 1639, -1000, 44486, 1164, - 1604, -1000, 982, -1000, -1000, -1000, -1000, -1000, 45135, 1625, - 44486, -1000, 1379, 1255, 1601, 2217, -1000, 1366, -1000, 416, - -1000, 1792, 1878, -1000, -1000, -1000, 15928, -1000, -1000, -1000, - -1000, -1000, 321, -87, 12015, 8740, 1309, -1000, -79, 1384, - 1301, -1000, -367, -1000, -1000, -1000, -1000, 232, -1000, -1000, - 1604, -1000, -1000, 1561, 1459, 1412, 28910, -1000, -1000, -1000, - -1000, -150, -1000, -1000, 2196, -1000, -1000, 1527, -1000, -1000, - 24367, 43837, -1000, -69, 269, -87, 17875, 1789, 1255, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10, -1000, -1000, - -1000, -1000, -1000, 1909, -98, -1000, -1000, -1000, 166, -387, - -171, -175, -1000, -1000, 18524, -1000, 17875, -1000, 17875, -1000, - 17875, -1000, -1000, -1000, 44486, 1601, -1000, 1274, -1000, 4517, - -236, 1939, -1000, -57, -1000, -1000, -1000, 935, 1186, -1000, - -1000, -1000, -1000, -1000, -1000, 1706, 44486, -1000, 507, -1000, - -1000, -89, -101, 845, -1000, -1000, -1000, -1000, -1000, 1319, - 1191, 1384, -1000, 44486, -1000, 43837, -219, 752, 6759, -1000, - 1931, 1891, 2334, -1000, -1000, -1000, -1000, -1000, -1000, -441, - 1251, 339, -1000, -1000, 166, -1000, 17875, -1000, 17875, -1000, - 1255, -1000, -1000, 2182, 102, -1000, 2372, -1000, 2365, 770, - 770, -1000, 979, -441, -1000, -1000, 1384, 1384, -1000, -244, - -1000, -1000, -1000, -1000, -1000, 497, 1028, -1000, -1000, -1000, - -1000, -1000, 6759, -1000, -1000, -1000, 219, 219, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1049, 1529, + 1529, 1529, 1529, 1529, 17724, 1080, -1000, -1000, -1000, 1251, + 2734, 1206, 2725, 1529, 1529, -1000, 1529, 2719, 2695, 1254, + 1649, 1254, 1728, -1000, 2657, 1529, 2640, 2614, 2610, 1903, + 2574, 2555, 2366, 1529, 1529, 1529, 1860, 2335, 2326, 2306, + 2302, 2262, 2250, 2243, 2239, 2235, 1529, -193, 1529, 1254, + -1000, -1000, -1000, -1000, -1000, 2214, 1833, 1254, 1724, 1761, + 603, -1000, -1000, 1578, 1254, 1254, 1578, 1578, 2201, 2195, + 2179, 2143, 2139, 2110, 1529, 1529, -1000, 1529, 2096, 2067, + 1737, 1726, 1254, -1000, 1246, 45633, -1000, -325, -1000, 9, + 683, 1761, -1000, 29408, 1254, -1000, 5684, -1000, 931, -1000, + -1000, -1000, -1000, -1000, 26812, 1571, 2707, -1000, -1000, 1761, + 1546, -1000, -1000, 431, 124, 26163, 659, 659, 184, 1348, + 1348, 17724, -1000, -1000, -1000, -1000, -1000, -1000, 602, 2329, + 403, 1761, -1000, 1707, 2298, -1000, -1000, -1000, 2200, 20321, + -1000, 1761, 1761, 45633, 1640, 1486, -1000, 593, -1000, 1166, + 1715, 50, 24, -1000, -1000, -1000, -1000, 1348, -1000, 1155, + 405, 636, -1000, 456, -1000, -1000, -1000, -1000, 2107, 119, + -1000, -1000, -1000, 248, 431, -1000, -1000, -1000, -1000, -1000, + -1000, 1393, 1393, -1000, -1000, -1000, -1000, -1000, 1079, -1000, + -1000, -1000, 1077, -1000, -1000, 1974, 1959, 325, -1000, -1000, + 740, 1391, -1000, -1000, 2118, 740, 740, 44335, -1000, -1000, + 1617, 2182, 287, 45633, 793, 1981, -1000, 1922, 1922, 1922, + 45633, -1000, -1000, -1000, -1000, -1000, -1000, -416, 78, 379, + -1000, -1000, -1000, 4849, 44335, 1542, -1000, 272, -1000, 1610, + -1000, 44335, -1000, 1536, 1854, 1158, 1158, -1000, -1000, -1000, + 44335, 1761, -1000, -1000, -1000, -1000, 534, 2160, 263, -1000, + -1000, -214, -1000, -1000, 276, 272, 44984, 1158, 680, -1000, + -1000, -1000, -1000, -1000, -418, 1484, 522, 279, 331, 45633, + 45633, 45633, 45633, 45633, 589, -1000, -1000, 54, -1000, -1000, + 237, -1000, -1000, -1000, -1000, 237, -1000, -1000, -1000, -1000, + -1000, 327, 498, -1000, 45633, 45633, 624, -1000, -1000, -1000, + 867, -1000, -1000, 867, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2153, 45633, 19, -373, -1000, -368, + 17724, -1000, -1000, -1000, -1000, 1122, 533, 1690, 18373, 18373, + 18373, -1000, -1000, -1000, 738, 738, 25514, -1000, 17724, 17075, + -1000, -1000, 17724, 17724, 785, -1000, 17724, 988, -1000, 17724, + -1000, -1000, -1000, 1246, 1529, 1529, 1529, 1529, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1682, 17724, + 17724, 17724, 1254, 339, -1000, -1000, -1000, -1000, -1000, 2346, + -1000, 17724, -1000, 25514, 17724, 17724, 17724, -1000, -1000, -1000, + 17724, 17724, -1000, -1000, 17724, 17724, -1000, 17724, 17724, 17724, + -1000, 17724, 17724, 17724, 17724, -1000, -1000, -1000, -1000, 17724, + 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, -1000, + -1000, 30706, 83, -193, 1124, 83, 1124, -1000, 17075, 11864, + -1000, -1000, -1000, -1000, -1000, 17724, 17724, 17724, 17724, 17724, + 17724, -1000, -1000, -1000, 17724, 17724, -1000, 17724, -1000, 17724, + -1000, -1000, -1000, -1000, -1000, 683, -1000, 638, 638, 638, + 44335, -1000, -1000, -1000, -1000, 1714, -1000, 2230, -1000, 2044, + 2043, 2342, 2329, -1000, 22269, 2707, -1000, -1000, 44335, -315, + -1000, 2085, 2087, 659, 659, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 9899, 2247, 17724, 1976, 44984, 161, -1000, 21620, + 44335, 44984, 22269, 22269, 22269, 22269, 22269, -1000, 2006, 1988, + -1000, 1998, 1997, 2064, 45633, -1000, 1471, 1254, 2271, 20321, + 396, 17724, 24216, 1678, 22269, -1000, -1000, 22269, 45633, 9244, + -1000, -1000, 15, 34, -1000, -1000, -1000, -1000, 4794, -1000, + -1000, 1284, 2199, 2104, -1000, -1000, -1000, -1000, -1000, 1467, + -1000, 1460, 1697, 1437, 204, -1000, 1901, 2141, 740, 740, + -1000, 1075, -1000, 1158, 1385, 1375, -1000, -1000, -1000, 521, + -1000, 2185, 45633, 1975, 1973, 1972, -1000, -434, 1052, 1852, + 1838, 17724, 1851, 2304, 1675, 44335, -1000, -1000, 44984, -1000, + 173, -1000, 325, 44335, -1000, -1000, -1000, 366, 45633, -1000, + 46205, -1000, -1000, -1000, 272, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 45633, 291, -1000, 1850, 974, -1000, -1000, 1907, + -1000, -1000, -1000, -1000, 223, 333, 1372, 213, 1363, 213, + -1000, 45633, 615, 1959, 45633, -1000, -1000, -1000, 862, 862, + -1000, -1000, 2134, -1000, 1158, 1529, 18373, 18373, -1000, 681, + 305, -127, 1842, 1842, -1000, 1842, 1848, -1000, 1842, 188, + 1842, 174, 1842, -1000, -1000, 1254, 1254, 1246, -1000, 1708, + 1343, -1000, 1348, 17724, 2039, -1000, -1000, -1000, -1000, -1000, + -36, 2035, 2020, 1529, -1000, 1827, 1824, 17724, 1529, 1254, + 1700, 1529, 1529, 1529, 1529, -1000, 1348, 1246, 2015, 1246, + 1529, 1529, 2010, 323, 1529, 1415, 1415, 1415, 1415, 1415, + 1246, 1246, 1246, 1246, 44335, -1000, -193, -1000, -1000, -234, + -235, -1000, 1254, -193, 1696, 1254, -1000, 1694, 1637, 1999, + 1590, 1529, 1978, 1529, 1529, 1529, 1572, -1000, 2236, 2236, + 2236, 1403, 931, 45633, -1000, -1000, -1000, -1000, 2329, 2327, + 1693, -1000, -1000, 124, 458, -1000, 2070, 2087, -1000, 2295, + 2072, 2294, -1000, -1000, -1000, -1000, -1000, 1348, -1000, 2142, + 1608, -1000, 757, 1672, -1000, -1000, 16426, 1407, 2038, 587, + 1403, 1723, 2298, 1957, 1971, 2841, -1000, -1000, -1000, -1000, + 1984, -1000, 1969, -1000, -1000, 1800, -1000, -1000, 1294, 1254, + 1950, 400, 22269, 1711, 1711, -1000, 585, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 883, 7785, 2380, -1000, 1345, -1000, + 1151, 214, 1039, -1000, -1000, 740, 740, -1000, 822, 821, + -1000, 45633, 1821, -1000, 431, 1338, 431, 1035, -1000, 1003, + -1000, -1000, -1000, -1000, 1878, 1952, -1000, -1000, -1000, -1000, + 45633, -1000, -1000, 45633, 45633, 45633, 1817, 2292, -1000, 17724, + 1804, 745, 1920, 44335, 44335, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 448, 740, -396, 334, + 326, 740, 740, 740, -436, -1000, -1000, 1368, 1337, -1000, + -118, -1000, 17724, -1000, -1000, -1000, 1069, 1069, 1333, 1312, + 1309, -1000, 1800, -1000, -1000, -1000, 1543, -1000, -1000, -110, + 44335, 44335, 44335, 44335, -1000, -1000, 975, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 681, + 1254, 332, -112, 1254, -1000, -1000, 431, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 17724, -1000, 17724, + -1000, 1348, 17724, 2247, 1306, 17724, 17724, -1000, 964, 960, + 1529, -1000, -1000, -1000, 17724, -1000, -1000, -1000, -1000, -1000, + 17724, -1000, -1000, -1000, 17724, 289, 738, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1254, 367, -1000, + -1000, -1000, -1000, 2339, -1000, 1254, 17724, -1000, -1000, 17724, + -1000, 17724, 17724, -1000, 17724, -1000, 17724, -1000, -1000, -1000, + -1000, 17724, 1761, 2057, 1761, 1761, 24216, -1000, -1000, 2327, + 2317, 2289, 2052, 2059, 2059, 2070, -1000, 2288, 2281, -1000, + 1298, 2280, 1275, 819, -1000, 44984, 17724, 161, -1000, 395, + 44335, 161, 44335, -1000, 2307, -1000, -1000, 17724, 1802, -1000, + 17724, -1000, -1000, -1000, -1000, -1000, -1000, 7624, 2329, 1711, + -1000, -1000, 695, -1000, 17724, -1000, -1000, -1000, 3777, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1261, 1258, -1000, + -1000, 1801, 17724, -1000, -1000, -1000, 1530, 1468, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1800, -1000, -1000, -1000, + -1000, 366, -423, 1915, 44335, 949, -1000, 1328, 1675, 358, + 161, 1240, 740, 740, 740, 941, 940, 29408, 1324, -1000, + 44335, 425, -1000, 366, -1000, -123, -124, 1529, -1000, -1000, + 2196, -1000, -1000, 11864, -1000, -1000, 1796, 1912, -1000, -1000, + -1000, -1000, 2022, -104, -115, -1000, -1000, 1529, 1529, 1786, + 1254, -1000, 1529, 1529, 1329, 1325, -1000, 1529, 1246, 1550, + -1000, 289, 1254, 1963, -1000, -1000, 7624, -1000, -1000, 2307, + 2279, 83, -1000, -1000, 275, 83, 1348, 1534, 1529, 1454, + 1411, 1529, 1529, 24865, -1000, 2273, 2254, 30057, 30057, 683, + 2317, -203, 17724, 17724, 2050, 1012, -1000, -1000, -1000, -1000, + 1235, 1230, -1000, 1218, -1000, 2375, -1000, 1348, -1000, 161, + -1000, 569, 1672, -1000, 2247, 1348, 44335, 1348, 113, 2307, + -1000, 1529, -1000, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, -1000, -1000, 44335, 1751, -1000, -1000, 2194, + 1318, 77, -1000, 1303, 1675, -1000, -1000, 152, -1000, 17724, + -1000, 29408, 1188, 1173, -1000, -1000, -1000, -1000, -436, -1000, + -1000, -1000, -1000, -1000, -1000, 396, 1674, -1000, 733, 44335, + 45633, -1000, 2005, -1000, -1000, -1000, 17724, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 17724, -1000, 1254, 1960, -1000, + -250, -1000, -400, 17724, -193, -1000, -1000, -193, -1000, 17724, + -1000, -1000, 17724, -1000, 17724, -1000, -1000, 1302, -1000, -1000, + -1000, -1000, -1000, 1302, 1302, -1000, -203, -1000, 1673, -1000, + 44335, 1348, 1649, -1000, 1006, -1000, -1000, -1000, -1000, -1000, + 44984, 1672, 44335, -1000, 1270, 1254, 1761, 2247, -1000, 1268, + -1000, 396, -1000, 1794, 1838, -1000, -1000, -1000, 15777, -1000, + -1000, -1000, -1000, -1000, 190, -109, 11864, 8565, 1253, -1000, + -108, 1529, 1246, -1000, -361, -1000, -1000, -1000, -1000, 239, + -1000, -1000, 1649, -1000, -1000, 1405, 1292, 1256, 28759, -1000, + -1000, -1000, -1000, -203, -1000, -1000, 2189, -1000, -1000, 1636, + -1000, -1000, 24216, 43686, -1000, -90, 314, -109, 17724, 1782, + 1254, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -7, + -1000, -1000, -1000, -1000, -1000, 1907, -113, -1000, -1000, -1000, + 273, -384, -164, -167, -1000, -1000, 18373, -1000, 17724, -1000, + 17724, -1000, 17724, -1000, -1000, -1000, 44335, 1761, -1000, 1244, + -1000, 3663, -252, 1946, -1000, -76, -1000, -1000, -1000, 875, + 1171, -1000, -1000, -1000, -1000, -1000, -1000, 1561, 44335, -1000, + 473, -1000, -1000, -110, -116, 795, -1000, -1000, -1000, -1000, + -1000, 1170, 1138, 1529, -1000, 44335, -1000, 43686, -242, 680, + 7624, -1000, 1941, 1933, 2334, -1000, -1000, -1000, -1000, -1000, + -1000, -440, 1226, 299, -1000, -1000, 273, -1000, 17724, -1000, + 17724, -1000, 1254, -1000, -1000, 2177, 113, -1000, 2336, -1000, + 2369, 698, 698, -1000, 926, -440, -1000, -1000, 1529, 1529, + -1000, -253, -1000, -1000, -1000, -1000, -1000, 467, 967, -1000, + -1000, -1000, -1000, -1000, 7624, -1000, -1000, -1000, 260, 260, + -1000, -1000, } var yyPgo = [...]int{ - 0, 2967, 2965, 30, 1, 40, 38, 2959, 29, 102, - 207, 41, 221, 112, 2956, 2955, 2954, 2953, 2952, 2949, - 2947, 195, 192, 187, 2946, 2943, 2942, 2941, 2938, 2936, - 2935, 2933, 2931, 2930, 185, 178, 204, 2929, 2928, 2927, - 127, 201, 91, 95, 205, 2925, 2924, 82, 2921, 2912, - 2911, 200, 199, 198, 914, 2909, 197, 124, 58, 2908, - 2906, 2905, 2904, 2898, 2894, 2890, 2888, 2887, 2886, 2885, - 2882, 2878, 2876, 2875, 2868, 2867, 227, 2865, 2863, 23, - 2859, 85, 2857, 2855, 2850, 2841, 7, 2836, 2833, 15, - 44, 2832, 2831, 49, 2816, 2811, 2810, 2809, 2808, 20, - 2804, 27, 2802, 42, 2801, 2799, 137, 2795, 2793, 2791, - 45, 2790, 2789, 2788, 2787, 2785, 2784, 2781, 158, 2776, - 2775, 2770, 222, 209, 2767, 2757, 182, 132, 117, 2756, - 2755, 114, 203, 2753, 134, 2748, 2747, 2745, 162, 2744, - 2184, 2741, 2740, 74, 68, 2739, 190, 2735, 2734, 10, - 34, 71, 11, 19, 21, 2732, 2731, 70, 83, 2728, - 135, 2725, 2724, 113, 88, 2722, 105, 99, 2718, 2717, - 14, 4, 2713, 3, 8, 6, 76, 2710, 2708, 123, - 2707, 2705, 2703, 100, 2702, 2701, 2227, 2700, 97, 148, - 116, 81, 2697, 54, 63, 2696, 2693, 2690, 2688, 2686, - 56, 2685, 2683, 2671, 154, 72, 179, 2665, 47, 89, - 59, 150, 2663, 73, 92, 208, 181, 2662, 2660, 153, - 152, 2657, 2637, 62, 52, 50, 2634, 106, 147, 133, - 65, 98, 149, 2626, 2623, 66, 79, 2615, 2613, 2612, - 2611, 183, 2603, 2601, 78, 2597, 60, 2595, 215, 2594, - 16, 69, 2593, 48, 175, 2591, 80, 2589, 2585, 75, - 128, 77, 43, 2582, 172, 2581, 57, 177, 139, 173, - 2576, 2572, 2571, 2570, 214, 325, 2568, 2566, 143, 191, - 156, 164, 93, 2559, 315, 2558, 2556, 101, 51, 5128, - 2553, 39, 174, 2547, 2543, 5578, 155, 46, 24, 2539, - 119, 2536, 2529, 2524, 2522, 206, 186, 118, 176, 61, - 2521, 2520, 2516, 18, 2515, 2511, 2507, 2502, 2480, 2473, - 90, 37, 36, 35, 219, 64, 13, 108, 171, 84, - 2472, 2471, 2469, 122, 129, 2466, 170, 169, 144, 136, - 2465, 193, 157, 145, 2463, 180, 33, 2462, 2460, 2458, - 2457, 96, 2454, 2453, 2451, 2449, 168, 159, 121, 86, - 2446, 94, 131, 160, 163, 55, 2444, 53, 2443, 2441, - 31, 202, 28, 2439, 17, 103, 126, 2437, 4339, 196, - 2430, 22, 314, 161, 2425, 2424, 2, 5, 12, 2423, - 2422, 2421, 2420, 151, 2416, 2414, 2412, 2409, 26, 67, - 25, 9, 120, 87, 2405, 2404, 2403, 3129, 0, 141, - 2402, 210, + 0, 2894, 2893, 49, 5, 38, 37, 2890, 29, 102, + 204, 46, 210, 101, 2888, 2887, 2886, 2885, 2884, 2883, + 2878, 192, 189, 187, 2877, 2872, 2870, 2869, 2868, 2865, + 2863, 2862, 2859, 2854, 185, 177, 203, 2853, 2852, 2851, + 127, 200, 91, 95, 201, 2840, 2839, 85, 2835, 2833, + 2828, 197, 196, 195, 818, 2820, 194, 124, 58, 2819, + 2818, 2817, 2816, 2814, 2812, 2810, 2809, 2808, 2805, 2804, + 2803, 2802, 2801, 2800, 2797, 2793, 221, 2792, 2791, 23, + 2790, 87, 2789, 2787, 2786, 2785, 7, 2784, 2780, 16, + 47, 2778, 2777, 52, 2770, 2769, 2768, 2767, 2766, 18, + 2764, 27, 2763, 40, 2759, 2758, 133, 2757, 2750, 2748, + 42, 2747, 2744, 2743, 2742, 2741, 2737, 2736, 157, 2734, + 2733, 2730, 219, 207, 2725, 2724, 181, 132, 117, 2722, + 2720, 108, 202, 2719, 134, 2714, 2712, 2710, 162, 2709, + 2169, 2708, 2707, 76, 71, 2705, 190, 2703, 2701, 15, + 33, 74, 11, 19, 20, 2700, 2695, 75, 83, 2692, + 137, 2690, 2688, 113, 68, 2687, 103, 100, 2685, 2678, + 9, 4, 2673, 2, 1, 13, 69, 2667, 2665, 123, + 2664, 2658, 2657, 99, 2655, 2639, 5984, 2636, 97, 144, + 114, 81, 2628, 55, 135, 2625, 2620, 2617, 2616, 2613, + 56, 2609, 2605, 2603, 153, 72, 178, 2602, 54, 79, + 59, 145, 2601, 44, 92, 211, 179, 2600, 2599, 151, + 149, 2598, 2591, 61, 45, 50, 2588, 112, 141, 131, + 41, 98, 146, 2587, 2584, 60, 80, 2582, 2581, 2579, + 2574, 182, 2572, 2565, 78, 2561, 62, 2560, 208, 2558, + 21, 70, 2556, 53, 174, 2554, 82, 2552, 2551, 73, + 126, 77, 43, 2550, 171, 2543, 57, 176, 139, 172, + 2540, 2539, 2538, 2537, 205, 312, 2535, 2534, 147, 191, + 154, 160, 88, 2532, 307, 2531, 2528, 106, 51, 5094, + 2526, 39, 173, 2523, 2522, 5117, 150, 48, 24, 2518, + 119, 2515, 2513, 2512, 2509, 209, 206, 118, 175, 65, + 2503, 2500, 2499, 17, 2482, 2480, 2479, 2478, 2473, 2471, + 90, 36, 35, 34, 212, 66, 14, 105, 164, 84, + 2464, 2463, 2462, 129, 93, 2460, 169, 168, 136, 170, + 2459, 193, 155, 128, 2456, 180, 31, 2455, 2453, 2450, + 2449, 96, 2446, 2439, 2437, 2435, 163, 156, 122, 89, + 2434, 94, 121, 161, 159, 63, 2433, 64, 2432, 2427, + 28, 199, 30, 2426, 12, 116, 242, 2425, 4311, 198, + 2424, 22, 306, 158, 2422, 2420, 10, 6, 8, 2419, + 2417, 2416, 2415, 148, 2408, 2407, 2406, 2405, 26, 67, + 25, 3, 120, 86, 2402, 2400, 2399, 3083, 0, 143, + 2398, 213, } -//line sql.y:7921 +//line sql.y:7925 type yySymType struct { union any empty struct{} @@ -7328,43 +7339,43 @@ var yyR1 = [...]int{ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 276, 276, 285, 285, - 275, 275, 300, 300, 300, 278, 278, 278, 279, 279, - 395, 395, 395, 272, 272, 64, 64, 64, 301, 301, - 301, 301, 66, 66, 67, 68, 68, 303, 303, 304, - 304, 69, 70, 82, 82, 82, 82, 82, 82, 82, - 105, 105, 105, 15, 15, 15, 15, 78, 78, 78, - 14, 14, 65, 65, 72, 392, 392, 393, 394, 394, - 394, 394, 73, 75, 31, 31, 31, 31, 31, 31, - 130, 130, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 125, 125, 125, 119, 119, 410, - 76, 77, 77, 123, 123, 123, 116, 116, 116, 122, - 122, 122, 16, 16, 17, 258, 258, 18, 18, 127, - 127, 129, 129, 129, 129, 129, 131, 131, 131, 131, - 131, 131, 131, 126, 126, 128, 128, 128, 128, 293, - 293, 293, 292, 292, 163, 163, 165, 164, 164, 166, - 166, 167, 167, 167, 167, 212, 212, 189, 189, 251, - 251, 252, 252, 250, 250, 257, 257, 253, 253, 253, - 253, 260, 260, 168, 168, 168, 168, 176, 176, 177, - 177, 178, 178, 302, 302, 298, 298, 298, 297, 297, - 182, 182, 182, 184, 183, 183, 183, 183, 185, 185, - 187, 187, 186, 186, 188, 193, 193, 192, 192, 190, - 190, 190, 190, 191, 191, 191, 191, 194, 194, 140, - 140, 140, 140, 140, 140, 140, 155, 155, 155, 155, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 241, 241, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 150, 150, 150, 150, + 63, 63, 63, 63, 63, 63, 63, 276, 276, 285, + 285, 275, 275, 300, 300, 300, 278, 278, 278, 279, + 279, 395, 395, 395, 272, 272, 64, 64, 64, 301, + 301, 301, 301, 66, 66, 67, 68, 68, 303, 303, + 304, 304, 69, 70, 82, 82, 82, 82, 82, 82, + 82, 105, 105, 105, 15, 15, 15, 15, 78, 78, + 78, 14, 14, 65, 65, 72, 392, 392, 393, 394, + 394, 394, 394, 73, 75, 31, 31, 31, 31, 31, + 31, 130, 130, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 125, 125, 125, 119, 119, + 410, 76, 77, 77, 123, 123, 123, 116, 116, 116, + 122, 122, 122, 16, 16, 17, 258, 258, 18, 18, + 127, 127, 129, 129, 129, 129, 129, 131, 131, 131, + 131, 131, 131, 131, 126, 126, 128, 128, 128, 128, + 293, 293, 293, 292, 292, 163, 163, 165, 164, 164, + 166, 166, 167, 167, 167, 167, 212, 212, 189, 189, + 251, 251, 252, 252, 250, 250, 257, 257, 253, 253, + 253, 253, 260, 260, 168, 168, 168, 168, 176, 176, + 177, 177, 178, 178, 302, 302, 298, 298, 298, 297, + 297, 182, 182, 182, 184, 183, 183, 183, 183, 185, + 185, 187, 187, 186, 186, 188, 193, 193, 192, 192, + 190, 190, 190, 190, 191, 191, 191, 191, 194, 194, + 140, 140, 140, 140, 140, 140, 140, 155, 155, 155, + 155, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 241, 241, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 149, 217, 217, 216, 216, 83, 83, 83, 84, - 84, 85, 85, 85, 85, 85, 86, 86, 86, 86, - 86, 141, 141, 88, 88, 87, 87, 207, 207, 290, - 290, 89, 90, 90, 93, 93, 92, 91, 91, 97, - 97, 94, 94, 96, 96, 95, 98, 98, 99, 100, - 100, 273, 273, 195, 195, 203, 203, 203, 203, 196, - 196, 196, 196, 196, 196, 196, 204, 204, 204, 211, - 205, 205, 201, 201, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, + 150, 150, 149, 217, 217, 216, 216, 83, 83, 83, + 84, 84, 85, 85, 85, 85, 85, 86, 86, 86, + 86, 86, 141, 141, 88, 88, 87, 87, 207, 207, + 290, 290, 89, 90, 90, 93, 93, 92, 91, 91, + 97, 97, 94, 94, 96, 96, 95, 98, 98, 99, + 100, 100, 273, 273, 195, 195, 203, 203, 203, 203, + 196, 196, 196, 196, 196, 196, 196, 204, 204, 204, + 211, 205, 205, 201, 201, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, @@ -7373,33 +7384,34 @@ var yyR1 = [...]int{ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 160, 160, 160, 160, 222, 222, 147, 147, 147, 147, + 200, 160, 160, 160, 160, 222, 222, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 161, 161, 161, 161, 162, 162, 162, - 162, 162, 162, 162, 310, 310, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 411, 411, 324, - 324, 324, 324, 202, 202, 202, 202, 202, 121, 121, - 121, 121, 121, 307, 307, 307, 311, 311, 311, 309, + 147, 147, 148, 148, 161, 161, 161, 161, 162, 162, + 162, 162, 162, 162, 162, 310, 310, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 411, 411, + 324, 324, 324, 324, 202, 202, 202, 202, 202, 121, + 121, 121, 121, 121, 307, 307, 307, 311, 311, 311, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 312, 312, 220, 220, 117, 117, - 218, 218, 219, 221, 221, 213, 213, 213, 213, 215, - 215, 198, 198, 198, 223, 223, 224, 224, 101, 102, - 102, 103, 103, 225, 225, 227, 226, 226, 228, 229, - 229, 229, 230, 230, 231, 231, 231, 47, 47, 47, - 47, 47, 42, 42, 42, 42, 43, 43, 43, 43, - 132, 132, 132, 132, 134, 134, 133, 133, 79, 79, - 80, 80, 80, 138, 138, 139, 139, 139, 136, 136, - 137, 137, 248, 248, 232, 232, 232, 239, 239, 239, - 235, 235, 237, 237, 237, 238, 238, 238, 236, 245, - 245, 247, 247, 246, 246, 242, 242, 243, 243, 244, - 244, 244, 240, 240, 197, 197, 197, 197, 197, 249, - 249, 249, 249, 261, 261, 208, 208, 210, 210, 209, - 209, 159, 262, 262, 266, 263, 263, 267, 267, 267, - 267, 255, 255, 255, 264, 264, 265, 265, 294, 294, - 294, 271, 271, 284, 284, 280, 280, 281, 281, 274, - 274, 286, 286, 286, 74, 206, 206, 362, 362, 359, - 289, 289, 291, 291, 295, 295, 299, 299, 296, 296, + 309, 309, 309, 309, 309, 312, 312, 220, 220, 117, + 117, 218, 218, 219, 221, 221, 213, 213, 213, 213, + 215, 215, 198, 198, 198, 223, 223, 224, 224, 101, + 102, 102, 103, 103, 225, 225, 227, 226, 226, 228, + 229, 229, 229, 230, 230, 231, 231, 231, 47, 47, + 47, 47, 47, 42, 42, 42, 42, 43, 43, 43, + 43, 132, 132, 132, 132, 134, 134, 133, 133, 79, + 79, 80, 80, 80, 138, 138, 139, 139, 139, 136, + 136, 137, 137, 248, 248, 232, 232, 232, 239, 239, + 239, 235, 235, 237, 237, 237, 238, 238, 238, 236, + 245, 245, 247, 247, 246, 246, 242, 242, 243, 243, + 244, 244, 244, 240, 240, 197, 197, 197, 197, 197, + 249, 249, 249, 249, 261, 261, 208, 208, 210, 210, + 209, 209, 159, 262, 262, 266, 263, 263, 267, 267, + 267, 267, 255, 255, 255, 264, 264, 265, 265, 294, + 294, 294, 271, 271, 284, 284, 280, 280, 281, 281, + 274, 274, 286, 286, 286, 74, 206, 206, 362, 362, + 359, 289, 289, 291, 291, 295, 295, 299, 299, 296, + 296, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, @@ -7414,7 +7426,6 @@ var yyR1 = [...]int{ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, @@ -7454,7 +7465,7 @@ var yyR1 = [...]int{ 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 407, 408, 305, 306, 306, 306, + 288, 288, 288, 288, 407, 408, 305, 306, 306, 306, } var yyR2 = [...]int{ @@ -7532,79 +7543,79 @@ var yyR2 = [...]int{ 3, 3, 4, 7, 5, 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, 3, - 3, 3, 5, 2, 3, 3, 2, 3, 4, 4, - 4, 3, 4, 4, 5, 3, 0, 1, 0, 1, - 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, - 0, 1, 1, 1, 1, 2, 1, 3, 1, 1, - 1, 1, 1, 2, 1, 1, 5, 0, 1, 0, - 1, 2, 3, 0, 3, 3, 3, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 4, 4, 2, 2, 3, 1, 3, 2, 1, 2, - 1, 2, 2, 4, 3, 3, 6, 4, 7, 6, - 1, 3, 2, 2, 2, 2, 1, 1, 1, 3, - 2, 1, 1, 1, 0, 1, 1, 0, 3, 0, - 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, - 1, 1, 5, 5, 4, 0, 2, 4, 4, 0, - 1, 0, 1, 2, 3, 4, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 2, 3, 5, 0, - 1, 2, 1, 1, 0, 1, 2, 1, 3, 1, - 1, 1, 4, 3, 1, 3, 4, 3, 7, 0, - 3, 0, 1, 1, 3, 1, 3, 1, 1, 3, - 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, - 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, - 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, - 2, 1, 1, 3, 3, 0, 1, 1, 2, 6, - 5, 6, 6, 0, 2, 3, 3, 0, 2, 3, - 3, 3, 2, 3, 1, 6, 3, 4, 3, 1, - 3, 4, 5, 6, 3, 4, 5, 6, 3, 4, - 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 3, 1, 1, 1, 2, 2, 2, 2, 1, 1, - 2, 7, 7, 6, 6, 2, 2, 1, 6, 3, - 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 1, 0, 1, 2, 5, 0, 3, 0, - 1, 4, 4, 2, 0, 1, 1, 2, 2, 1, - 1, 2, 2, 0, 1, 1, 1, 1, 5, 1, - 3, 0, 3, 1, 1, 1, 2, 1, 2, 1, + 3, 3, 3, 5, 2, 3, 3, 2, 3, 4, + 4, 4, 3, 4, 4, 5, 3, 0, 1, 0, + 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, + 2, 0, 1, 1, 1, 1, 2, 1, 3, 1, + 1, 1, 1, 1, 2, 1, 1, 5, 0, 1, + 0, 1, 2, 3, 0, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 4, 4, 2, 2, 3, 1, 3, 2, 1, + 2, 1, 2, 2, 4, 3, 3, 6, 4, 7, + 6, 1, 3, 2, 2, 2, 2, 1, 1, 1, + 3, 2, 1, 1, 1, 0, 1, 1, 0, 3, + 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, + 0, 1, 1, 5, 5, 4, 0, 2, 4, 4, + 0, 1, 0, 1, 2, 3, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 1, 2, 3, 5, + 0, 1, 2, 1, 1, 0, 1, 2, 1, 3, + 1, 1, 1, 4, 3, 1, 3, 4, 3, 7, + 0, 3, 0, 1, 1, 3, 1, 3, 1, 1, + 3, 3, 1, 3, 4, 4, 4, 3, 2, 4, + 0, 1, 0, 2, 0, 1, 0, 1, 2, 1, + 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, + 2, 2, 1, 1, 3, 3, 0, 1, 1, 2, + 6, 5, 6, 6, 0, 2, 3, 3, 0, 2, + 3, 3, 3, 2, 3, 1, 6, 3, 4, 3, + 1, 3, 4, 5, 6, 3, 4, 5, 6, 3, + 4, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 2, 2, 2, 2, 1, + 1, 2, 7, 7, 6, 6, 2, 2, 1, 6, + 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 1, 0, 1, 2, 5, 0, 3, + 0, 1, 4, 4, 2, 0, 1, 1, 2, 2, + 1, 1, 2, 2, 0, 1, 1, 1, 1, 5, + 1, 3, 0, 3, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 4, 6, 4, 4, 8, 6, 8, 6, - 5, 4, 10, 2, 2, 1, 2, 2, 2, 4, - 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 8, 8, 8, 6, 5, - 4, 4, 4, 4, 4, 7, 4, 4, 6, 6, - 6, 8, 6, 6, 4, 4, 3, 4, 6, 6, - 4, 4, 4, 6, 8, 6, 4, 6, 6, 8, - 10, 7, 8, 8, 9, 4, 4, 4, 4, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, - 4, 6, 5, 9, 6, 9, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 2, 6, 8, 10, 12, - 14, 6, 8, 8, 10, 12, 14, 6, 8, 10, - 12, 6, 8, 4, 4, 3, 4, 6, 6, 4, - 6, 4, 6, 8, 0, 2, 1, 1, 1, 1, + 1, 1, 3, 4, 6, 4, 4, 8, 6, 8, + 6, 5, 4, 10, 2, 2, 1, 2, 2, 2, + 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 8, 8, 8, 6, + 5, 4, 4, 4, 4, 4, 7, 4, 4, 6, + 6, 6, 8, 6, 6, 4, 4, 3, 4, 6, + 6, 4, 4, 4, 6, 8, 6, 4, 6, 6, + 8, 10, 7, 8, 8, 9, 4, 4, 4, 4, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 4, 4, 6, 5, 9, 6, 9, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 6, 8, 10, + 12, 14, 6, 8, 8, 10, 12, 14, 6, 8, + 10, 12, 6, 8, 4, 4, 3, 4, 6, 6, + 4, 6, 4, 6, 8, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, - 2, 3, 3, 4, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 1, 0, 5, 5, 2, - 3, 1, 2, 2, 1, 2, 1, 2, 2, 1, - 2, 2, 1, 1, 0, 1, 0, 1, 0, 2, - 1, 2, 4, 0, 2, 1, 1, 3, 5, 1, - 1, 1, 2, 2, 0, 3, 0, 2, 2, 1, - 3, 0, 1, 0, 1, 3, 1, 3, 2, 0, - 1, 1, 0, 1, 2, 4, 4, 0, 2, 2, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 0, 3, 3, 3, 0, 3, 1, 1, 0, 4, - 0, 1, 1, 0, 3, 1, 3, 2, 1, 1, - 0, 1, 2, 4, 9, 3, 5, 0, 3, 3, - 0, 1, 0, 2, 2, 0, 2, 2, 2, 0, - 2, 1, 2, 3, 3, 0, 2, 1, 2, 3, - 4, 3, 0, 1, 2, 1, 5, 4, 4, 1, - 3, 3, 5, 0, 5, 1, 3, 1, 2, 3, - 4, 1, 1, 3, 3, 1, 3, 3, 3, 3, - 3, 1, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 0, 2, 0, 3, 0, - 1, 0, 1, 1, 5, 0, 1, 0, 1, 2, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, + 0, 2, 3, 3, 4, 4, 4, 4, 4, 0, + 3, 4, 7, 3, 1, 1, 1, 0, 5, 5, + 2, 3, 1, 2, 2, 1, 2, 1, 2, 2, + 1, 2, 2, 1, 1, 0, 1, 0, 1, 0, + 2, 1, 2, 4, 0, 2, 1, 1, 3, 5, + 1, 1, 1, 2, 2, 0, 3, 0, 2, 2, + 1, 3, 0, 1, 0, 1, 3, 1, 3, 2, + 0, 1, 1, 0, 1, 2, 4, 4, 0, 2, + 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 0, 3, 3, 3, 0, 3, 1, 1, 0, + 4, 0, 1, 1, 0, 3, 1, 3, 2, 1, + 1, 0, 1, 2, 4, 9, 3, 5, 0, 3, + 3, 0, 1, 0, 2, 2, 0, 2, 2, 2, + 0, 2, 1, 2, 3, 3, 0, 2, 1, 2, + 3, 4, 3, 0, 1, 2, 1, 5, 4, 4, + 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, + 3, 4, 1, 1, 3, 3, 1, 3, 3, 3, + 3, 3, 1, 1, 2, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 0, 2, 0, 3, + 0, 1, 0, 1, 1, 5, 0, 1, 0, 1, + 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -7659,7 +7670,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -7724,656 +7735,658 @@ var yyChk = [...]int{ 441, 442, 443, 453, 237, -76, 237, -186, -295, 237, -264, 374, -285, 376, 389, 384, 394, 382, -276, 385, 387, 277, -395, 404, 237, 391, 225, 377, 386, 395, - 396, 301, 402, 397, 401, 286, 398, 399, 400, -378, - 177, 634, 649, 135, 341, 381, 379, 405, 613, 91, - -301, 91, 92, 93, -288, 315, -303, 320, -289, -378, - -288, 318, -76, -305, -305, -125, 613, 615, -205, -140, - 143, -155, -158, -146, -150, -199, -200, -201, -202, -156, - -215, -254, 166, 167, 174, 144, -211, -159, 27, 503, - 447, 446, 177, 32, -149, 220, 69, 70, 449, 146, - 58, 12, 422, 423, -157, 417, 424, 419, 474, 476, - 477, 478, 475, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 479, 451, 452, 118, 453, 108, 110, - 109, 454, 455, 456, 338, 501, 502, 496, 499, 500, - 498, 497, 353, 354, 457, 458, 459, 111, 112, 113, - 114, 115, 116, 117, 460, 463, 461, 462, 464, 465, - 466, 471, 472, 467, 468, 469, 470, 473, -85, -97, - 529, 528, -98, -147, -148, -161, -162, -289, -295, 242, - 416, 236, 172, 445, -151, -144, -213, 107, 92, 93, - -8, -209, 415, 420, 421, 425, 418, 515, 517, 532, - 533, 535, 520, 525, 524, 527, 490, 491, 492, 493, - 494, 495, 600, 601, 602, 603, 604, 605, 606, 607, - -378, -288, 91, -153, -152, -195, 94, 99, 102, 103, - 105, -401, 260, 334, 335, 119, -407, 627, 90, 95, - 96, 97, 98, 120, 121, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 45, 390, 390, - -186, -76, -76, -76, -76, -225, -123, -227, -10, -8, - -407, 9, -76, -8, -9, -13, -34, -36, 534, -35, - -295, 100, -232, -248, 13, 162, 43, 51, -230, -231, - -12, -8, -140, 20, 24, 25, -128, 168, -140, -295, - -128, -274, 241, -76, -76, -263, -308, 315, -267, 405, - 613, 404, -255, -265, 91, -254, -264, 403, -348, 159, - -334, -338, -289, 252, -364, 248, -186, -357, -356, -289, - -407, -124, -284, 238, 246, 245, 136, -382, 139, 294, - 416, 236, -51, -52, -53, -264, 176, 633, -106, 269, - 273, 88, 88, -338, -337, -336, -383, 273, 252, -363, - -355, 244, 253, -344, 245, 246, -339, 238, 137, -383, - -339, 243, 253, 248, 252, 273, 273, 127, 273, 127, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 268, - -345, 151, -345, 511, 511, -351, -383, 248, 238, -383, - -383, 244, -286, -339, 240, 26, 240, 36, 36, -345, - -345, -345, -264, 176, -345, -345, -345, -345, 281, 281, - -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, - -345, -345, -345, -345, -345, -345, -345, 237, -382, -132, - 401, 301, 311, 82, -54, 283, -37, -186, -284, 238, - 239, -382, 270, -186, 221, -186, -278, 159, 16, -278, - -275, 390, 388, 375, 380, -278, -278, -278, -278, 284, - 373, -340, 238, 36, 249, 390, 284, 373, 284, 285, - 284, 285, 383, 393, 284, -300, 15, 162, 416, 378, - 382, 277, 237, 278, 239, 392, 285, -300, 90, -279, - 159, 390, 280, -278, -278, -306, -407, -291, -289, -287, - 230, 24, 142, 26, 28, 145, 177, 130, 20, 146, - 38, 232, 341, 248, 176, 244, 446, 225, 73, 515, - 417, 419, 415, 422, 448, 449, 416, 376, 32, 14, - 517, 29, 258, 25, 39, 170, 227, 149, 518, 261, - 27, 259, 118, 121, 520, 23, 76, 253, 15, 246, - 41, 17, 521, 522, 18, 242, 241, 162, 238, 71, - 12, 220, 30, 158, 67, 523, 137, 524, 525, 526, - 527, 131, 69, 159, 21, 653, 420, 421, 34, 614, - 503, 272, 172, 74, 60, 615, 143, 418, 528, 529, - 119, 530, 122, 77, 620, 139, 19, 72, 43, 531, - 273, 532, 243, 654, 533, 408, 534, 160, 228, 445, - 70, 161, 627, 535, 628, 236, 389, 9, 450, 33, - 257, 245, 129, 68, 536, 237, 148, 451, 452, 240, - 132, 120, 8, 136, 35, 13, 75, 78, 423, 424, - 425, 58, 128, 507, 147, 16, 537, 409, 141, -378, - 616, -306, -306, 33, 92, 240, -289, -186, -82, 608, - 229, -130, 390, -118, 177, 634, 617, 618, 619, 616, - 387, 624, 622, 620, 284, 621, 88, 139, 141, 142, - 4, -140, 158, -196, 151, 152, 153, 154, 155, 156, - 157, 162, 143, 145, 159, -241, 140, 163, 164, 165, - 166, 167, 168, 169, 171, 170, 172, 173, 160, 161, - 176, 223, 224, -150, -150, -150, -150, -211, -217, -216, - -407, -213, -378, -288, -295, -407, -407, -150, -273, -407, - -407, -150, -407, -407, -407, -220, -140, -407, -407, -411, - -407, -411, -411, -324, -407, -324, -407, -407, -407, -407, + 396, 301, 402, 397, 311, 401, 286, 398, 399, 400, + -378, 177, 634, 649, 135, 341, 381, 379, 405, 613, + 91, -301, 91, 92, 93, -288, 315, -303, 320, -289, + -378, -288, 318, -76, -305, -305, -125, 613, 615, -205, + -140, 143, -155, -158, -146, -150, -199, -200, -201, -202, + -156, -215, -254, 166, 167, 174, 144, -211, -159, 27, + 503, 447, 446, 177, 32, -149, 220, 69, 70, 449, + 146, 58, 12, 422, 423, -157, 417, 424, 419, 474, + 476, 477, 478, 475, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 479, 451, 452, 118, 453, 108, + 110, 109, 454, 455, 456, 338, 501, 502, 496, 499, + 500, 498, 497, 353, 354, 457, 458, 459, 111, 112, + 113, 114, 115, 116, 117, 460, 463, 461, 462, 464, + 465, 466, 471, 472, 467, 468, 469, 470, 473, -85, + -97, 529, 528, -98, -147, -148, -161, -162, -289, -295, + 242, 416, 236, 172, 445, -151, -144, -213, 107, 92, + 93, -8, -209, 415, 420, 421, 425, 418, 515, 517, + 532, 533, 535, 520, 525, 524, 527, 490, 491, 492, + 493, 494, 495, 600, 601, 602, 603, 604, 605, 606, + 607, -378, -288, 91, -153, -152, -195, 94, 99, 102, + 103, 105, -401, 260, 334, 335, 119, -407, 627, 90, + 95, 96, 97, 98, 120, 121, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 45, 390, + 390, -186, -76, -76, -76, -76, -225, -123, -227, -10, + -8, -407, 9, -76, -8, -9, -13, -34, -36, 534, + -35, -295, 100, -232, -248, 13, 162, 43, 51, -230, + -231, -12, -8, -140, 20, 24, 25, -128, 168, -140, + -295, -128, -274, 241, -76, -76, -263, -308, 315, -267, + 405, 613, 404, -255, -265, 91, -254, -264, 403, -348, + 159, -334, -338, -289, 252, -364, 248, -186, -357, -356, + -289, -407, -124, -284, 238, 246, 245, 136, -382, 139, + 294, 416, 236, -51, -52, -53, -264, 176, 633, -106, + 269, 273, 88, 88, -338, -337, -336, -383, 273, 252, + -363, -355, 244, 253, -344, 245, 246, -339, 238, 137, + -383, -339, 243, 253, 248, 252, 273, 273, 127, 273, + 127, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 268, -345, 151, -345, 511, 511, -351, -383, 248, 238, + -383, -383, 244, -286, -339, 240, 26, 240, 36, 36, + -345, -345, -345, -264, 176, -345, -345, -345, -345, 281, + 281, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, 237, -382, + -132, 401, 301, 311, 82, -54, 283, -37, -186, -284, + 238, 239, -382, 270, -186, 221, -186, -278, 159, 16, + -278, -275, 390, 388, 375, 380, -278, -278, -278, -278, + 284, 373, -340, 238, 36, 249, 390, 284, 373, 284, + 285, 284, 285, 383, 393, 284, -300, 15, 162, 416, + 378, 382, 277, 237, 278, 239, 392, 285, -300, 90, + -279, 159, 284, 390, 280, -278, -278, -306, -407, -291, + -289, -287, 230, 24, 142, 26, 28, 145, 177, 130, + 20, 146, 38, 232, 341, 248, 176, 244, 446, 225, + 73, 515, 417, 419, 415, 422, 448, 449, 416, 376, + 32, 14, 517, 29, 258, 25, 39, 170, 227, 149, + 518, 261, 27, 259, 118, 121, 520, 23, 76, 253, + 15, 246, 41, 17, 521, 522, 18, 242, 241, 162, + 238, 71, 12, 220, 30, 158, 67, 523, 137, 524, + 525, 526, 527, 131, 69, 159, 21, 653, 420, 421, + 34, 614, 503, 272, 172, 74, 60, 615, 143, 418, + 528, 529, 119, 530, 122, 77, 620, 139, 19, 72, + 43, 531, 273, 532, 243, 654, 533, 408, 534, 160, + 228, 445, 70, 161, 627, 535, 628, 236, 389, 9, + 450, 33, 257, 245, 129, 68, 536, 237, 148, 451, + 452, 240, 132, 120, 8, 136, 35, 13, 75, 78, + 423, 424, 425, 58, 128, 507, 147, 16, 537, 409, + 141, -378, 616, -306, -306, 33, 92, 240, -289, -186, + -82, 608, 229, -130, 390, -118, 177, 634, 617, 618, + 619, 616, 387, 624, 622, 620, 284, 621, 88, 139, + 141, 142, 4, -140, 158, -196, 151, 152, 153, 154, + 155, 156, 157, 162, 143, 145, 159, -241, 140, 163, + 164, 165, 166, 167, 168, 169, 171, 170, 172, 173, + 160, 161, 176, 223, 224, -150, -150, -150, -150, -211, + -217, -216, -407, -213, -378, -288, -295, -407, -407, -150, + -273, -407, -407, -150, -407, -407, -407, -220, -140, -407, + -407, -411, -407, -411, -411, -324, -407, -324, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, 221, -407, -407, -407, -407, -407, -324, -324, - -324, -324, -324, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, 103, 99, 102, - 94, -215, 105, 90, 90, 90, 90, -8, -9, -205, - -407, -305, -392, -393, -189, -186, -407, 301, -289, -289, - 270, -230, -12, -8, -225, -231, -227, -8, -76, -116, - -129, 64, 65, -131, 25, 39, 68, 66, 24, -408, - 89, -408, -248, -408, 88, -36, -251, 87, 62, 44, - 90, 90, 88, 22, -226, -228, -140, 15, -293, 4, - -292, 26, -289, 90, 221, 15, -187, 30, -186, -274, - -274, 88, 315, 91, -269, -268, 406, 408, 151, -294, - -289, 90, 32, 89, 88, -186, -313, -316, -318, -317, - -319, -314, -315, 338, 339, 177, 342, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 355, 33, 260, 334, - 335, 336, 337, 356, 357, 358, 359, 361, 362, 363, - 364, 321, 340, 505, 322, 323, 324, 325, 326, 327, - 329, 330, 331, 332, 333, -379, -378, 87, 89, 88, - -320, 87, -140, -132, 237, -378, 238, 238, 238, -76, - 445, -345, -345, -345, 268, 20, -44, -41, -371, 19, - -40, -41, 230, 123, 124, 227, 87, -334, 87, -343, - -379, -378, 87, 137, 243, 136, -342, -339, -342, -343, - -378, -213, -378, 137, 137, -378, -378, -260, -289, -260, - -260, 24, -260, 24, -260, 24, 96, -289, -260, 24, - -260, 24, -260, 24, -260, 24, -260, 24, 32, 79, - 80, 81, 32, 83, 84, 85, -213, -378, -378, -213, - -334, -213, -186, -378, -264, 96, 96, 96, -345, -345, - 96, 90, 90, 90, -345, -345, 96, 90, -297, -295, - 90, 90, -384, 254, 298, 300, 96, 96, 96, 96, - 32, 90, -385, 32, 641, 640, 642, 643, 644, 90, - 96, 32, 96, 32, 96, -289, 87, -186, -138, 288, - 225, 227, 230, 77, 90, 304, 305, 302, 307, 308, - 126, 125, -404, 312, 151, 45, 88, 240, 237, -378, - -280, 242, -280, -289, -296, -295, -287, 90, -140, -341, - 15, 162, -300, -300, -278, -186, -341, -300, -278, -186, - -278, -278, -278, -278, -300, -300, -300, -278, -295, -295, - -186, -186, -186, -186, -186, -186, -186, -306, -279, -278, - 616, 90, -272, 15, 77, -306, -306, -304, 318, -78, - -289, 90, -15, -11, -22, -21, -23, 151, 88, 507, - -179, -186, 616, 616, 616, 616, 616, 616, -140, -140, - -140, -140, 530, -203, 119, 143, 120, 121, -158, -204, - -209, -211, 106, 162, 145, 159, -241, -146, -150, -146, - -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -307, -289, 90, 177, -154, -153, 105, -401, - -154, 504, 88, -216, 221, -140, -140, -378, -140, -289, - -126, -128, -126, -140, -218, -219, 147, -213, -140, -408, - -408, 96, 105, 168, -122, 25, 39, -122, -122, -122, - -122, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -122, -289, -289, -115, -114, 427, 428, 429, 430, - 432, 433, 434, 437, 438, 442, 443, 426, 444, 431, - 436, 439, 440, 441, 435, 337, -140, -140, -140, -140, - -140, -140, -83, -140, 130, 131, 132, -205, -140, -146, - -140, -140, -140, -408, -140, -140, -140, -206, -205, -377, - -376, -375, -140, -140, -140, -140, -140, -140, -140, -140, + -407, -407, -407, -407, 221, -407, -407, -407, -407, -407, + -324, -324, -324, -324, -324, -407, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -407, -407, -407, 103, + 99, 102, 94, -215, 105, 90, 90, 90, 90, -8, + -9, -205, -407, -305, -392, -393, -189, -186, -407, 301, + -289, -289, 270, -230, -12, -8, -225, -231, -227, -8, + -76, -116, -129, 64, 65, -131, 25, 39, 68, 66, + 24, -408, 89, -408, -248, -408, 88, -36, -251, 87, + 62, 44, 90, 90, 88, 22, -226, -228, -140, 15, + -293, 4, -292, 26, -289, 90, 221, 15, -187, 30, + -186, -274, -274, 88, 315, 91, -269, -268, 406, 408, + 151, -294, -289, 90, 32, 89, 88, -186, -313, -316, + -318, -317, -319, -314, -315, 338, 339, 177, 342, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 355, 33, + 260, 334, 335, 336, 337, 356, 357, 358, 359, 361, + 362, 363, 364, 321, 340, 505, 322, 323, 324, 325, + 326, 327, 329, 330, 331, 332, 333, -379, -378, 87, + 89, 88, -320, 87, -140, -132, 237, -378, 238, 238, + 238, -76, 445, -345, -345, -345, 268, 20, -44, -41, + -371, 19, -40, -41, 230, 123, 124, 227, 87, -334, + 87, -343, -379, -378, 87, 137, 243, 136, -342, -339, + -342, -343, -378, -213, -378, 137, 137, -378, -378, -260, + -289, -260, -260, 24, -260, 24, -260, 24, 96, -289, + -260, 24, -260, 24, -260, 24, -260, 24, -260, 24, + 32, 79, 80, 81, 32, 83, 84, 85, -213, -378, + -378, -213, -334, -213, -186, -378, -264, 96, 96, 96, + -345, -345, 96, 90, 90, 90, -345, -345, 96, 90, + -297, -295, 90, 90, -384, 254, 298, 300, 96, 96, + 96, 96, 32, 90, -385, 32, 641, 640, 642, 643, + 644, 90, 96, 32, 96, 32, 96, -289, 87, -186, + -138, 288, 225, 227, 230, 77, 90, 304, 305, 302, + 307, 308, 126, 125, -404, 312, 151, 45, 88, 240, + 237, -378, -280, 242, -280, -289, -296, -295, -287, 90, + -140, -341, 15, 162, -300, -300, -278, -186, -341, -300, + -278, -186, -278, -278, -278, -278, -300, -300, -300, -278, + -295, -295, -186, -186, -186, -186, -186, -186, -186, -306, + -279, -278, 616, 90, -272, 15, 77, -306, -306, -304, + 318, -78, -289, 90, -15, -11, -22, -21, -23, 151, + 88, 507, -179, -186, 616, 616, 616, 616, 616, 616, + -140, -140, -140, -140, 530, -203, 119, 143, 120, 121, + -158, -204, -209, -211, 106, 162, 145, 159, -241, -146, + -150, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -307, -289, 90, 177, -154, -153, + 105, -401, -154, 504, 88, -216, 221, -140, -140, -378, + -140, -289, -126, -128, -126, -140, -218, -219, 147, -213, + -140, -408, -408, 96, 105, 168, -122, 25, 39, -122, + -122, -122, -122, -140, -140, -140, -140, -140, -140, -140, + -140, -140, -140, -122, -289, -289, -115, -114, 427, 428, + 429, 430, 432, 433, 434, 437, 438, 442, 443, 426, + 444, 431, 436, 439, 440, 441, 435, 337, -140, -140, + -140, -140, -140, -140, -83, -140, 130, 131, 132, -205, + -140, -146, -140, -140, -140, -408, -140, -140, -140, -206, + -205, -377, -376, -375, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -408, -140, -160, -144, 96, - -256, 105, 92, -140, -140, -127, -126, -291, -296, -287, - -288, -126, -127, -127, -126, -126, -140, -140, -140, -140, - -140, -140, -140, -140, -408, -140, -140, -140, -140, -140, - -248, -408, -205, 88, -394, 408, 409, 614, -298, 273, - -297, 26, -206, 90, 15, -258, 78, -289, -230, -230, - 64, 65, 60, -126, -131, -408, -35, 26, -250, -289, - 63, 90, -325, -264, 365, 366, 177, -140, -140, 88, - -229, 28, 29, -186, -292, 168, -296, -186, -259, 273, - -186, -164, -166, -167, -168, -189, -212, -407, -169, 526, - 523, 15, -179, -180, -188, -295, -267, -308, -269, 88, - 407, 409, 410, 77, 122, -140, -326, 176, -353, -352, - -351, -334, -336, -337, -338, 89, -326, -330, 371, 370, - -320, -320, -320, -320, -320, -325, -325, -325, -325, 87, - 87, -320, -320, -320, -320, -328, 87, -328, -328, -329, - 87, -329, -364, -140, -361, -360, -358, -359, 247, 101, - 598, 554, 507, 547, 588, 78, -356, -229, 96, -408, - -138, -281, 242, -362, -359, -378, -378, -378, -281, 91, - 90, 91, 90, 91, 90, -107, -58, -1, 653, 654, - 655, 88, 20, -335, -334, -57, 298, -367, -368, 273, - -363, -357, -343, 137, -342, -343, -343, -378, 88, 30, - 127, 127, 127, 127, 507, 227, 33, -282, 546, 143, - 598, 554, -334, -57, 240, 240, -307, -307, -307, 90, - 90, -277, 649, -179, -134, 290, 151, 279, 279, 237, - 237, 292, -186, 303, 306, 304, 305, 302, 307, 308, - 24, 24, 24, 24, 24, 90, 291, 293, 295, 281, - -186, -186, -280, 77, -181, -186, 27, -295, -186, -278, - -278, -186, -278, -278, -186, -289, 352, 609, 610, 612, - 611, -118, 408, 88, 507, 23, -119, 23, -407, 119, - 120, 121, -204, -146, -150, -146, 142, 261, -407, -213, - -408, -291, 26, 88, 78, -408, 88, 88, -408, -408, - 88, 15, -221, -219, 149, -140, -408, 88, -408, -408, - -408, -205, -140, -140, -140, -140, -408, -408, -408, -408, - -408, -408, -408, -408, -408, -408, -205, 88, 88, 15, - -311, 26, -408, -408, -408, -408, -408, -220, -408, 15, - -408, 78, 88, 162, 88, -408, -408, -408, 88, 88, - -408, -408, 88, 88, -408, 88, 88, 88, -408, 88, - 88, 88, 88, -408, -408, -408, -408, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, -408, -90, 531, - -408, -408, 88, -408, 88, -408, -407, 221, -408, -408, - -408, -408, -408, 88, 88, 88, 88, 88, 88, -408, - -408, -408, 88, 88, -408, 88, -408, 88, -408, -393, - 613, 409, -193, -192, -190, 75, 241, 76, -407, -297, - -408, -154, -256, -257, -256, -198, -289, 96, 105, -232, - -163, -165, 15, -131, -211, 89, 88, -325, -236, -242, - -275, -289, 90, 177, -327, 177, -327, 365, 366, -228, - 221, -194, 16, -197, 33, 58, -11, -407, -407, 33, - 88, -182, -184, -183, -185, 67, 71, 73, 68, 69, - 70, 74, -302, 26, -164, -9, -8, -407, -407, -407, - -186, -179, -409, 15, 78, -409, 88, 221, -268, -270, - 411, 408, 414, -378, 90, -106, 88, -351, -338, -233, - -135, 41, -331, 372, -325, 514, -325, -333, 90, -333, - 96, 96, 89, -47, -42, -43, 34, 82, -358, -345, - 90, 40, -345, -345, -289, 89, -229, -134, -186, 143, - 77, -362, -362, -362, -295, -2, 652, 658, 137, 87, - 375, 19, -250, 88, 89, -214, 299, 89, -108, -289, - 89, 87, -343, -343, -289, -407, 237, 32, 32, 598, - 554, 546, -57, -214, -213, -378, -326, 651, 650, 89, - 239, 297, -139, 422, -136, 90, 91, -186, -186, -186, - -186, -186, 230, 227, 398, -402, 309, -402, 282, 240, - -179, -186, 88, -81, 256, 251, -300, -300, 34, -186, - 408, 625, 623, -140, 142, 261, -158, -150, -146, -309, - 177, 338, 260, 336, 332, 352, 343, 370, 334, 371, - 331, 330, 329, -309, -307, -205, -128, -140, -140, 150, - -140, 148, -140, -408, -408, -408, -408, -408, -225, -140, - -140, -140, -408, 177, 338, 15, -140, -307, -140, -140, - -140, -140, -140, -375, -140, -205, -140, -205, -140, -140, - -140, -140, -140, -376, -376, -376, -376, -376, -205, -205, - -205, -205, -407, -289, -93, -92, -91, 581, 241, -90, - -160, -93, -160, -127, -291, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -190, -339, -339, -339, -260, - 88, -271, 23, 15, 58, 58, -163, -194, -164, -131, - -289, -239, 608, -245, 47, -243, -244, 48, -240, 49, - 57, -327, -327, 168, -230, -140, -261, 77, -262, -266, - -213, -208, -210, -209, -407, -249, -408, -289, -260, -262, - -166, -167, -167, -166, -167, 67, 67, 67, 72, 67, - 72, 67, -183, -295, -408, -408, -9, -9, -140, -298, - 78, -164, -164, -188, -295, 168, 408, 412, 413, -351, - -400, 119, 143, 32, 77, 368, 101, -398, 176, 543, - 593, 598, 554, 547, 588, -399, 243, 136, 137, 255, - 26, 42, 89, 88, 89, 88, 89, 88, -283, -282, - -43, -42, -345, -345, 96, -378, 90, 90, 239, 27, - -186, 77, 77, 77, -109, 656, 96, 87, -3, 82, - -140, 87, 20, -334, -213, -369, -321, -370, -322, -323, - -5, -6, -346, -112, 58, 101, -61, 45, 238, 636, - 637, 127, -407, 649, -361, -250, -365, -367, -186, -143, - -407, -142, -144, -151, 166, 167, 260, 334, 335, -214, - -186, -133, 288, 296, 87, -137, 92, -381, 78, 279, - 368, 279, 90, -403, 310, 90, -403, -186, -81, -47, - -186, -278, -278, 34, -378, -408, -158, -150, -121, 162, - 507, -312, 513, -320, -320, -320, -329, -320, 326, -320, - 326, -320, -408, -408, -408, 88, -408, 23, -408, -140, - 88, -117, 450, 88, 88, -408, 87, 87, -140, -408, - -408, -408, 88, -408, -408, -408, -408, -408, 88, -408, - -408, -408, 88, -310, 599, -408, -408, -408, -408, -408, - -408, -408, -408, -408, -408, -89, -290, -289, -90, 563, - 563, -408, -90, -222, 88, -408, -408, 88, -408, 88, - 88, -408, 88, -408, 88, -408, -408, -408, -408, 88, - -191, 23, -191, -191, -408, -256, -186, -194, -223, 17, - -236, 52, 344, -247, -246, 56, 48, -244, 20, 50, - 20, 31, -261, 88, 151, 88, -408, -408, 88, 58, - 221, -408, -194, -177, -176, 77, 78, -178, 77, -176, - 67, 67, -251, -408, -408, 88, -259, -164, -194, -194, - 221, 119, -407, -145, -157, -143, 13, 90, 90, -378, - -397, 640, 641, 32, 96, -345, -345, 137, 137, -186, - 87, -325, 90, -325, 96, 96, 32, 83, 84, 85, - 32, 79, 80, 81, -186, -186, -186, -186, -366, 87, - 20, -140, 87, 151, 89, -250, -250, 275, 162, -345, - 634, 281, 281, -345, -345, -345, -111, -110, 656, 89, - -408, 88, -332, 507, 510, -140, -152, -152, -251, 89, - -374, 507, -380, -289, -289, -289, -289, 96, 98, -408, - 505, 74, 508, -408, -325, -140, -140, -140, -230, 90, - -140, -140, 96, 96, -408, -140, -205, -140, -408, -174, - -173, -175, 617, 119, 32, -309, -408, -207, 273, -96, - -95, -94, 15, -408, -140, -140, -140, -140, -140, -140, - -140, -407, 67, 19, 17, -407, -407, -298, -223, -224, - 18, 20, -237, 54, -235, 53, -235, -246, 20, 20, - 90, 20, 90, 137, -266, -140, -210, 58, -11, -289, - -208, -289, -225, -140, 87, -140, -154, -194, -194, -140, - -200, 474, 476, 477, 478, 475, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 479, 453, 108, 110, - 109, 454, 455, 456, 338, 501, 502, 496, 499, 500, - 498, 497, 353, 354, 457, 458, 459, 111, 112, 113, - 114, 115, 116, 117, 460, 463, 461, 464, 465, 466, - 471, 472, 467, 468, 469, 470, 473, 490, 491, 492, - 493, 494, 495, 600, 601, 602, 603, 604, 605, 606, - 607, 90, 90, 87, -140, 89, 89, -251, -365, -58, - 89, -252, -250, 96, 89, 276, -209, -407, 90, -345, - -345, -345, 96, 96, -297, -408, 88, -289, -399, -367, - 511, 511, -408, 26, -373, -372, -291, 87, 78, 63, - 506, 509, -408, -408, 88, -408, -408, -408, 89, 89, - -408, -408, -408, 88, -408, -173, -175, -408, 77, -154, - -225, 20, -93, 298, 300, -93, -408, 88, -408, -408, - 88, -408, 88, -408, -408, -253, -408, -289, 243, 20, - 20, -253, -253, -193, -224, -103, -102, -101, 537, -140, - -205, -238, 55, 77, 122, 90, 90, 90, 13, -208, - 221, -230, -250, -171, 375, -225, -408, -250, 89, 26, - 89, 658, 137, 89, -209, -120, -407, 272, -297, 90, - 90, -110, -113, -11, 88, 151, -250, -186, 63, -140, - -205, -408, 77, 518, 617, -88, -87, -84, 628, 654, - -205, -90, -90, -140, -140, -140, 88, -408, -408, -408, - -103, 88, -100, -99, -289, 77, 122, -262, -289, 89, - -408, -407, -230, 89, -234, -11, 87, -3, 272, -321, - -370, -322, -323, -5, -6, -346, -79, 507, -372, -350, - -291, 90, 96, 89, 507, -408, -408, -86, 145, 626, - 596, -141, -152, -149, 220, -408, 88, -408, 88, -408, - 88, -289, 243, -101, 88, 26, -298, -172, -170, -289, - 560, -390, -389, 503, -400, -396, 119, 143, 101, -398, - 598, 554, 128, 129, -79, -140, 87, -408, -80, 287, - 613, -381, 508, -86, 627, 574, 549, 574, 549, -140, - -140, -140, -99, -407, -408, 88, 23, -313, -60, 571, - -387, -388, 77, -391, 381, 570, 591, 119, 90, 89, - -250, 248, -374, 509, 142, -408, 88, -408, 88, -408, - -89, -170, 567, -326, -154, -388, 77, -387, 77, 14, - 13, -4, 657, 89, 289, -86, -140, -140, -408, -59, - 27, -171, -386, 256, 251, 254, 33, -386, 96, -4, - -408, -408, 571, 250, 32, 119, -154, -174, -173, -173, + -140, -140, -140, -140, -140, -140, -140, -408, -140, -160, + -144, 96, -256, 105, 92, -140, -140, -127, -126, -291, + -296, -287, -288, -126, -127, -127, -126, -126, -140, -140, + -140, -140, -140, -140, -140, -140, -408, -140, -140, -140, + -140, -140, -248, -408, -205, 88, -394, 408, 409, 614, + -298, 273, -297, 26, -206, 90, 15, -258, 78, -289, + -230, -230, 64, 65, 60, -126, -131, -408, -35, 26, + -250, -289, 63, 90, -325, -264, 365, 366, 177, -140, + -140, 88, -229, 28, 29, -186, -292, 168, -296, -186, + -259, 273, -186, -164, -166, -167, -168, -189, -212, -407, + -169, 526, 523, 15, -179, -180, -188, -295, -267, -308, + -269, 88, 407, 409, 410, 77, 122, -140, -326, 176, + -353, -352, -351, -334, -336, -337, -338, 89, -326, -330, + 371, 370, -320, -320, -320, -320, -320, -325, -325, -325, + -325, 87, 87, -320, -320, -320, -320, -328, 87, -328, + -328, -329, 87, -329, -364, -140, -361, -360, -358, -359, + 247, 101, 598, 554, 507, 547, 588, 78, -356, -229, + 96, -408, -138, -281, 242, -362, -359, -378, -378, -378, + -281, 91, 90, 91, 90, 91, 90, -107, -58, -1, + 653, 654, 655, 88, 20, -335, -334, -57, 298, -367, + -368, 273, -363, -357, -343, 137, -342, -343, -343, -378, + 88, 30, 127, 127, 127, 127, 507, 227, 33, -282, + 546, 143, 598, 554, -334, -57, 240, 240, -307, -307, + -307, 90, 90, -277, 649, -179, -134, 290, 151, 279, + 279, 237, 237, 292, -186, 303, 306, 304, 305, 302, + 307, 308, 24, 24, 24, 24, 24, 90, 291, 293, + 295, 281, -186, -186, -280, 77, -181, -186, 27, -295, + -186, -278, -278, -186, -278, -278, -186, -289, 352, 609, + 610, 612, 611, -118, 408, 88, 507, 23, -119, 23, + -407, 119, 120, 121, -204, -146, -150, -146, 142, 261, + -407, -213, -408, -291, 26, 88, 78, -408, 88, 88, + -408, -408, 88, 15, -221, -219, 149, -140, -408, 88, + -408, -408, -408, -205, -140, -140, -140, -140, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -205, 88, + 88, 15, -311, 26, -408, -408, -408, -408, -408, -220, + -408, 15, -408, 78, 88, 162, 88, -408, -408, -408, + 88, 88, -408, -408, 88, 88, -408, 88, 88, 88, + -408, 88, 88, 88, 88, -408, -408, -408, -408, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, -408, + -90, 531, -408, -408, 88, -408, 88, -408, -407, 221, + -408, -408, -408, -408, -408, 88, 88, 88, 88, 88, + 88, -408, -408, -408, 88, 88, -408, 88, -408, 88, + -408, -393, 613, 409, -193, -192, -190, 75, 241, 76, + -407, -297, -408, -154, -256, -257, -256, -198, -289, 96, + 105, -232, -163, -165, 15, -131, -211, 89, 88, -325, + -236, -242, -275, -289, 90, 177, -327, 177, -327, 365, + 366, -228, 221, -194, 16, -197, 33, 58, -11, -407, + -407, 33, 88, -182, -184, -183, -185, 67, 71, 73, + 68, 69, 70, 74, -302, 26, -164, -9, -8, -407, + -407, -407, -186, -179, -409, 15, 78, -409, 88, 221, + -268, -270, 411, 408, 414, -378, 90, -106, 88, -351, + -338, -233, -135, 41, -331, 372, -325, 514, -325, -333, + 90, -333, 96, 96, 89, -47, -42, -43, 34, 82, + -358, -345, 90, 40, -345, -345, -289, 89, -229, -134, + -186, 143, 77, -362, -362, -362, -295, -2, 652, 658, + 137, 87, 375, 19, -250, 88, 89, -214, 299, 89, + -108, -289, 89, 87, -343, -343, -289, -407, 237, 32, + 32, 598, 554, 546, -57, -214, -213, -378, -326, 651, + 650, 89, 239, 297, -139, 422, -136, 90, 91, -186, + -186, -186, -186, -186, 230, 227, 398, -402, 309, -402, + 282, 240, -179, -186, 88, -81, 256, 251, -300, -300, + 34, -186, 408, 625, 623, -140, 142, 261, -158, -150, + -146, -309, 177, 338, 260, 336, 332, 352, 343, 370, + 334, 371, 331, 330, 329, -309, -307, -205, -128, -140, + -140, 150, -140, 148, -140, -408, -408, -408, -408, -408, + -225, -140, -140, -140, -408, 177, 338, 15, -140, -307, + -140, -140, -140, -140, -140, -375, -140, -205, -140, -205, + -140, -140, -140, -140, -140, -376, -376, -376, -376, -376, + -205, -205, -205, -205, -407, -289, -93, -92, -91, 581, + 241, -90, -160, -93, -160, -127, -291, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -190, -339, -339, + -339, -260, 88, -271, 23, 15, 58, 58, -163, -194, + -164, -131, -289, -239, 608, -245, 47, -243, -244, 48, + -240, 49, 57, -327, -327, 168, -230, -140, -261, 77, + -262, -266, -213, -208, -210, -209, -407, -249, -408, -289, + -260, -262, -166, -167, -167, -166, -167, 67, 67, 67, + 72, 67, 72, 67, -183, -295, -408, -408, -9, -9, + -140, -298, 78, -164, -164, -188, -295, 168, 408, 412, + 413, -351, -400, 119, 143, 32, 77, 368, 101, -398, + 176, 543, 593, 598, 554, 547, 588, -399, 243, 136, + 137, 255, 26, 42, 89, 88, 89, 88, 89, 88, + -283, -282, -43, -42, -345, -345, 96, -378, 90, 90, + 239, 27, -186, 77, 77, 77, -109, 656, 96, 87, + -3, 82, -140, 87, 20, -334, -213, -369, -321, -370, + -322, -323, -5, -6, -346, -112, 58, 101, -61, 45, + 238, 636, 637, 127, -407, 649, -361, -250, -365, -367, + -186, -143, -407, -142, -144, -151, 166, 167, 260, 334, + 335, -214, -186, -133, 288, 296, 87, -137, 92, -381, + 78, 279, 368, 279, 90, -403, 310, 90, -403, -186, + -81, -47, -186, -278, -278, 34, -378, -408, -158, -150, + -121, 162, 507, -312, 513, -320, -320, -320, -329, -320, + 326, -320, 326, -320, -408, -408, -408, 88, -408, 23, + -408, -140, 88, -117, 450, 88, 88, -408, 87, 87, + -140, -408, -408, -408, 88, -408, -408, -408, -408, -408, + 88, -408, -408, -408, 88, -310, 599, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -89, -290, -289, + -90, 563, 563, -408, -90, -222, 88, -408, -408, 88, + -408, 88, 88, -408, 88, -408, 88, -408, -408, -408, + -408, 88, -191, 23, -191, -191, -408, -256, -186, -194, + -223, 17, -236, 52, 344, -247, -246, 56, 48, -244, + 20, 50, 20, 31, -261, 88, 151, 88, -408, -408, + 88, 58, 221, -408, -194, -177, -176, 77, 78, -178, + 77, -176, 67, 67, -251, -408, -408, 88, -259, -164, + -194, -194, 221, 119, -407, -145, -157, -143, 13, 90, + 90, -378, -397, 640, 641, 32, 96, -345, -345, 137, + 137, -186, 87, -325, 90, -325, 96, 96, 32, 83, + 84, 85, 32, 79, 80, 81, -186, -186, -186, -186, + -366, 87, 20, -140, 87, 151, 89, -250, -250, 275, + 162, -345, 634, 281, 281, -345, -345, -345, -111, -110, + 656, 89, -408, 88, -332, 507, 510, -140, -152, -152, + -251, 89, -374, 507, -380, -289, -289, -289, -289, 96, + 98, -408, 505, 74, 508, -408, -325, -140, -140, -140, + -230, 90, -140, -140, 96, 96, -408, -140, -205, -140, + -408, -174, -173, -175, 617, 119, 32, -309, -408, -207, + 273, -96, -95, -94, 15, -408, -140, -140, -140, -140, + -140, -140, -140, -407, 67, 19, 17, -407, -407, -298, + -223, -224, 18, 20, -237, 54, -235, 53, -235, -246, + 20, 20, 90, 20, 90, 137, -266, -140, -210, 58, + -11, -289, -208, -289, -225, -140, 87, -140, -154, -194, + -194, -140, -200, 474, 476, 477, 478, 475, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 479, 453, + 108, 110, 109, 454, 455, 456, 338, 501, 502, 496, + 499, 500, 498, 497, 353, 354, 457, 458, 459, 111, + 112, 113, 114, 115, 116, 117, 460, 463, 461, 464, + 465, 466, 471, 472, 467, 468, 469, 470, 473, 490, + 491, 492, 493, 494, 495, 600, 601, 602, 603, 604, + 605, 606, 607, 90, 90, 87, -140, 89, 89, -251, + -365, -58, 89, -252, -250, 96, 89, 276, -209, -407, + 90, -345, -345, -345, 96, 96, -297, -408, 88, -289, + -399, -367, 511, 511, -408, 26, -373, -372, -291, 87, + 78, 63, 506, 509, -408, -408, 88, -408, -408, -408, + 89, 89, -408, -408, -408, 88, -408, -173, -175, -408, + 77, -154, -225, 20, -93, 298, 300, -93, -408, 88, + -408, -408, 88, -408, 88, -408, -408, -253, -408, -289, + 243, 20, 20, -253, -253, -193, -224, -103, -102, -101, + 537, -140, -205, -238, 55, 77, 122, 90, 90, 90, + 13, -208, 221, -230, -250, -171, 375, -225, -408, -250, + 89, 26, 89, 658, 137, 89, -209, -120, -407, 272, + -297, 90, 90, -110, -113, -11, 88, 151, -250, -186, + 63, -140, -205, -408, 77, 518, 617, -88, -87, -84, + 628, 654, -205, -90, -90, -140, -140, -140, 88, -408, + -408, -408, -103, 88, -100, -99, -289, 77, 122, -262, + -289, 89, -408, -407, -230, 89, -234, -11, 87, -3, + 272, -321, -370, -322, -323, -5, -6, -346, -79, 507, + -372, -350, -291, 90, 96, 89, 507, -408, -408, -86, + 145, 626, 596, -141, -152, -149, 220, -408, 88, -408, + 88, -408, 88, -289, 243, -101, 88, 26, -298, -172, + -170, -289, 560, -390, -389, 503, -400, -396, 119, 143, + 101, -398, 598, 554, 128, 129, -79, -140, 87, -408, + -80, 287, 613, -381, 508, -86, 627, 574, 549, 574, + 549, -140, -140, -140, -99, -407, -408, 88, 23, -313, + -60, 571, -387, -388, 77, -391, 381, 570, 591, 119, + 90, 89, -250, 248, -374, 509, 142, -408, 88, -408, + 88, -408, -89, -170, 567, -326, -154, -388, 77, -387, + 77, 14, 13, -4, 657, 89, 289, -86, -140, -140, + -408, -59, 27, -171, -386, 256, 251, 254, 33, -386, + 96, -4, -408, -408, 571, 250, 32, 119, -154, -174, + -173, -173, } var yyDef = [...]int{ - 849, -2, -2, 851, 2, 4, 5, 6, 7, 8, + 850, -2, -2, 852, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 69, 71, - 72, 849, 849, 849, 0, 849, 0, 0, 849, -2, - -2, 849, 1466, 0, 849, 0, 0, -2, 776, 782, - 0, 784, -2, 0, 0, 849, 2015, 2015, 844, 0, - 0, 0, 0, 0, 849, 849, 849, 849, 1323, 49, - 849, 0, 84, 85, 800, 801, 802, 64, 0, 2013, - 850, 1, 3, 70, 74, 0, 0, 0, 57, 1332, - 0, 77, 0, 0, 853, 0, 0, 1449, 849, 849, + 72, 850, 850, 850, 0, 850, 0, 0, 850, -2, + -2, 850, 1467, 0, 850, 0, 0, -2, 777, 783, + 0, 785, -2, 0, 0, 850, 2016, 2016, 845, 0, + 0, 0, 0, 0, 850, 850, 850, 850, 1324, 49, + 850, 0, 84, 85, 801, 802, 803, 64, 0, 2014, + 851, 1, 3, 70, 74, 0, 0, 0, 57, 1333, + 0, 77, 0, 0, 854, 0, 0, 1450, 850, 850, 0, 116, 117, 0, 0, 0, -2, 120, -2, 149, 150, 151, 0, 156, 590, 510, 562, 508, 547, -2, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 384, 384, 0, 0, -2, 494, - 494, 494, 1451, 0, 0, 0, 544, 446, 384, 384, + 494, 494, 1452, 0, 0, 0, 544, 446, 384, 384, 384, 0, 384, 384, 384, 384, 0, 0, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 1350, 155, 1467, 1464, 1465, - 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, - 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, - 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, - 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, - 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, - 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, - 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, - 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, - 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, - 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, - 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, - 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, - 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, - 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, - 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, - 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, - 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, - 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, - 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, - 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, - 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, - 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, - 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, - 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, - 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, - 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, - 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, - 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, - 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, - 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, - 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009, 2010, 2011, 2012, 0, 1443, 0, 703, 952, 0, - 765, 765, 0, 765, 765, 765, 765, 0, 0, 0, - 715, 0, 0, 0, 0, 762, 0, 731, 732, 0, - 762, 0, 738, 768, 0, 743, 765, 765, 746, 2016, - 0, 2016, 2016, 1434, 0, 759, 757, 771, 772, 39, - 775, 778, 779, 780, 781, 783, 0, 788, 791, 1460, - 1461, 0, 793, 812, 813, 0, 845, 846, 44, 1100, - 0, 974, 979, 990, 1005, 1006, 1007, 1008, 1009, 1011, - 1012, 1013, 0, 0, 0, 0, 1018, 1019, 0, 0, - 0, 0, 0, 1081, 1027, 0, 0, 0, 0, 1296, - 0, 0, 1257, 1257, 1115, 1257, 1259, 1259, 1667, 1803, - 1811, 1928, 1630, 1635, 1636, 1637, 1921, 1922, 1923, 1924, - 1963, 1964, 1968, 1727, 0, 0, 0, 2012, 1764, 1772, - 1773, 1797, 1894, 1949, 1647, 1792, 1860, 1724, 1746, 1747, - 1876, 1877, 1768, 1769, 1750, 1762, 1765, 1753, 1754, 1756, - 1758, 1763, 1770, 1776, 1755, 1775, 1774, 0, 1751, 1752, - 1757, 1767, 1771, 1759, 1760, 1761, 1766, 1777, 0, 0, - 0, 0, 0, 1196, 1197, 1198, 1199, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 1309, 1310, 42, 43, - 1099, 1421, 1259, 1259, 1259, 1259, 1259, 1041, 1042, 1043, - 1044, 1045, 1069, 1070, 1076, 1077, 1871, 1872, 1873, 1874, - 1708, 1958, 1716, 1717, 1855, 1856, 1729, 1730, 1987, 1988, - -2, -2, -2, 221, 222, 223, 224, 225, 226, 227, - 228, 0, 1671, 1940, 1941, 217, 0, 0, 285, 286, - 282, 283, 284, 1083, 1084, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 2015, 0, 822, - 0, 0, 0, 0, 0, 1332, 0, 1324, 1323, 62, - 0, 849, -2, 0, 0, 0, 0, 46, 0, 51, - 909, 852, 76, 75, 1372, 0, 0, 0, 58, 1333, - 66, 68, 1334, 0, 854, 855, 0, 885, 889, 0, - 0, 0, 1450, 1449, 1449, 101, 0, 0, 1425, 113, - 114, 115, 0, 0, 1431, 1432, 1436, 1437, 0, 0, - 167, 168, 0, 40, 411, 0, 163, 0, 404, 345, - 0, 1350, 0, 0, 0, 0, 0, 849, 0, 1444, - 144, 145, 152, 153, 154, 384, 384, 384, 559, 0, - 0, 155, 155, 517, 518, 519, 0, 0, -2, 409, - 0, 495, 0, 0, 398, 398, 402, 400, 401, 0, - 0, 0, 0, 0, 0, 0, 0, 536, 0, 537, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 651, - 0, 385, 0, 557, 558, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 1452, 1453, 0, 534, 535, 0, - 0, 0, 384, 384, 0, 0, 0, 0, 384, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 143, 1363, - 0, 0, 505, 0, -2, 0, 695, 0, 0, 0, - 1445, 1445, 0, 702, 0, 704, 705, 0, 0, 706, - 0, 762, 762, 760, 761, 708, 709, 710, 711, 765, - 0, 0, 393, 394, 395, 762, 765, 0, 765, 765, - 765, 765, 762, 762, 762, 765, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2016, 768, 765, 0, 739, - 0, 740, 741, 744, 745, 747, 2017, 2018, 1462, 1463, - 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, - 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, - 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, - 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, - 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, - 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, - 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, - 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, - 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, - 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 2016, - 2016, 751, 755, 1435, 777, 789, 792, 807, 48, 1715, - 799, 824, 825, 830, 0, 0, 0, 0, 836, 837, - 838, 0, 0, 841, 842, 843, 0, 0, 0, 0, - 0, 972, 0, 0, 1089, 1090, 1091, 1092, 1093, 1094, - 1095, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 991, 992, - 0, 0, 0, 1014, 1015, 1016, 1017, 1020, 0, 1032, - 0, 1034, 1305, -2, 0, 0, 0, 1025, 1026, 0, - 0, 0, 0, 0, 0, 0, 1297, 0, 0, 1113, - 0, 1114, 1116, 1117, 0, 1118, 859, 859, 859, 859, - 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1455, 131, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 869, 0, 0, 869, 869, 0, 0, 210, 211, - 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, - 232, 233, 234, 287, 235, 236, 237, 1099, 0, 0, - 0, 45, 814, 815, 0, 935, 1455, 0, 0, 865, - 0, 56, 65, 67, 1332, 60, 1332, 0, 871, 0, - 0, -2, -2, 872, 878, 879, 880, 881, 882, 53, - 2014, 54, 0, 73, 0, 47, 0, 0, 0, 0, - 357, 1375, 0, 0, 1325, 1326, 1329, 0, 886, 1809, - 890, 0, 892, 893, 0, 0, 99, 0, 951, 0, - 0, 0, 0, 1433, 103, 104, 0, 0, 0, 368, - 1438, 1439, 1440, -2, 391, 0, 368, 352, 295, 296, - 297, 345, 299, 345, 345, 345, 345, 357, 357, 357, - 357, 328, 329, 330, 331, 332, 0, 0, 314, 345, - 345, 345, 345, 335, 336, 337, 338, 339, 340, 341, - 342, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 347, 347, 347, 349, 349, 0, 41, 0, 372, 0, - 1329, 0, 0, 1363, 1447, 1457, 0, 0, 0, 1447, - 122, 0, 0, 0, 560, 601, 511, 548, 561, 0, - 514, 515, -2, 0, 0, 494, 0, 496, 0, 392, - 0, -2, 0, 402, 0, 398, 402, 399, 402, 390, - 403, 538, 539, 540, 0, 542, 543, 631, 921, 0, - 0, 0, 0, 0, 637, 638, 639, 0, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 549, 550, - 551, 552, 553, 554, 555, 556, 0, 0, 0, 0, - 496, 0, 545, 0, 0, 448, 449, 450, 0, 0, - 453, 454, 455, 456, 0, 0, 459, 460, 461, 938, - 939, 462, 463, 488, 489, 490, 464, 465, 466, 467, - 468, 469, 470, 482, 483, 484, 485, 486, 487, 471, - 472, 473, 474, 475, 476, 479, 0, 137, 1354, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 587, 588, 589, 0, 0, 0, 0, 0, 1445, 0, - 0, 0, 0, 868, 953, 1468, 1469, 766, 767, 0, - 396, 397, 765, 765, 712, 752, 0, 765, 716, 753, - 717, 719, 718, 720, 733, 734, 765, 723, 763, 764, - 724, 725, 726, 727, 728, 729, 730, 748, 735, 736, - 737, 769, 0, 773, 774, 749, 750, 0, 790, 810, - 808, 809, 811, 803, 804, 805, 806, 0, 0, 0, - 827, 95, 832, 833, 834, 835, 847, 840, 1101, 969, - 970, 971, 0, 973, 976, 0, 1085, 1087, 978, 980, - 1096, 1097, 1098, 0, 0, 0, 0, 0, 984, 988, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1010, 1273, 1274, 1275, 1029, 288, 289, 0, - 1030, 0, 0, 0, 0, 0, 0, 0, 1100, 1031, - 0, 883, 0, 0, 1303, 1300, 0, 0, 0, 1258, - 1260, 0, 0, 0, 0, 860, 861, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1236, 1237, 1238, 1239, 1240, - 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, - 1251, 1252, 1253, 1254, 1255, 1256, 1276, 0, 0, 0, - 0, 0, 1296, 0, 1036, 1037, 1038, 0, 0, 0, - 0, 0, 0, 1156, 0, 0, 0, 0, 1456, 0, - 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1200, 1201, - 1202, 1203, 38, 0, 0, 0, 870, 1307, 0, -2, - -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0, - 0, 1419, 0, 0, 817, 818, 820, 0, 955, 0, - 936, 0, 0, 823, 0, 864, 0, 867, 59, 61, - 876, 877, 0, 894, 873, 55, 50, 0, 0, 913, - 1373, 357, 1395, 0, 366, 366, 363, 1335, 1336, 0, - 1328, 1330, 1331, 78, 891, 887, 0, 967, 0, 0, - 950, 0, 897, 899, 900, 901, 933, 0, 904, 0, - 0, 0, 0, 0, 97, 952, 1426, 0, 102, 0, - 0, 107, 108, 1427, 1428, 1429, 1430, 0, 590, -2, - 443, 169, 171, 172, 173, 164, -2, 355, 353, 354, - 298, 357, 357, 322, 323, 324, 325, 326, 327, 0, - 0, 315, 316, 317, 318, 309, 0, 310, 311, 312, - 0, 313, 410, 0, 1337, 373, 374, 376, 384, 0, - 379, 380, 0, 384, 384, 0, 405, 406, 0, 1329, - 1354, 0, 0, 0, 1458, 1457, 1457, 1457, 0, 157, - 158, 159, 160, 161, 162, 626, 0, 0, 602, 624, - 625, 155, 0, 0, 165, 498, 497, 0, 658, 0, - 408, 0, 0, 402, 402, 387, 388, 541, 0, 0, - 633, 634, 635, 636, 0, 0, 0, 527, 437, 0, - 528, 529, 496, 498, 0, 0, 368, 451, 452, 457, - 458, 477, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 576, 579, 581, 500, 585, - 578, 580, 582, 500, 586, 506, 1351, 1352, 1353, 0, - 0, 696, 0, 0, 434, 93, 1446, 701, 762, 722, - 754, 762, 714, 721, 742, 786, 794, 795, 796, 797, - 798, 831, 0, 0, 0, 0, 839, 0, 0, 977, - 1086, 1088, 981, 0, 985, 989, 0, 0, 0, 1035, - 1033, 1307, 0, 0, 0, 1082, 0, 0, 1104, 1105, - 0, 0, 0, 1301, 0, 0, 1111, 0, 1261, 1262, - 1119, 0, 0, 0, 0, 0, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1323, 0, 0, 0, - 0, 0, 1140, 1141, 1142, 1143, 1144, 0, 1146, 0, - 1147, 0, 0, 0, 0, 1154, 1155, 1157, 0, 0, - 1160, 1161, 0, 0, 1162, 0, 0, 0, 1166, 0, - 0, 0, 0, 1175, 1176, 1177, 1178, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1189, 1190, 0, - 1064, 0, 0, 1064, 0, 1102, 869, 0, 1263, 1264, - 1265, 1266, 1267, 0, 0, 0, 0, 0, 0, 1223, - 1224, 1226, 0, 0, 1229, 0, 1231, 0, 1420, 816, - 819, 821, 907, 956, 957, 0, 0, 0, 0, 937, - 1454, 862, 863, 866, 915, 0, 1311, 0, 0, 894, - 967, 895, 0, 874, 52, 910, 0, 1377, 1376, 1389, - 1402, 366, 366, 360, 361, 367, 362, 364, 365, 1327, - 0, 1332, 0, 1413, 0, 0, 1405, 0, 0, 0, - 0, 0, 0, 0, 0, 940, 0, 0, 943, 0, - 0, 0, 0, 934, 0, 0, 0, 0, 0, 0, - -2, 0, 0, 91, 92, 0, 0, 0, 105, 106, - 0, 0, 112, 369, 370, 146, 155, 445, 170, 418, - 0, 0, 294, 356, 319, 320, 321, 0, 343, 0, - 0, 0, 439, 118, 1341, 1340, 384, 384, 375, 0, - 378, 0, 0, 0, 1459, 346, 407, 0, 136, 0, - 0, 0, 0, 0, 142, 596, 0, 0, 603, 0, - 0, 0, 509, 0, 520, 521, 0, 630, -2, 692, - 372, 0, 386, 389, 922, 0, 0, 522, 0, 525, - 526, 438, 498, 531, 532, 546, 533, 480, 481, 478, - 0, 0, 1364, 1365, 1370, 1368, 1369, 123, 567, 569, - 568, 572, 0, 0, 0, 502, 0, 502, 565, 0, - 434, 1337, 0, 700, 435, 436, 765, 765, 826, 96, - 0, 829, 0, 0, 0, 0, 982, 986, 1268, 1294, - 345, 345, 1281, 345, 349, 1284, 345, 1286, 345, 1289, - 345, 1292, 1293, 0, 0, 0, 884, 0, 0, 1110, - 1304, 0, 0, 1120, 1121, 1122, 1123, 1124, 1298, 0, - 0, 0, 1139, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, - 0, 1234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1059, 1063, 0, 1065, 1066, 0, 0, 1192, - 0, 0, 1204, 0, 1308, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 958, 963, 963, 963, 0, - 0, 0, 1441, 1442, 1312, 1313, 967, 1314, 896, 875, - 914, 1395, 0, 1388, 0, -2, 1397, 0, 0, 0, - 1403, 358, 359, 888, 79, 968, 82, 0, 1413, 1422, - 0, 1404, 1415, 1417, 0, 0, 0, 1409, 0, 967, - 898, 929, 931, 0, 926, 941, 942, 944, 0, 946, - 0, 948, 949, 909, 903, 905, 0, 0, 0, 99, - 0, 967, 967, 98, 0, 954, 109, 110, 111, 444, - 174, 179, 0, 0, 0, 184, 0, 186, 0, 0, - 0, 191, 192, 384, 384, 419, 0, 291, 293, 0, - 0, 177, 357, 0, 357, 0, 350, 0, 420, 440, - 1338, 1339, 0, 0, 377, 381, 382, 383, 0, 1448, - 138, 0, 0, 0, 599, 0, 627, 0, 0, 0, - 0, 0, 0, 166, 499, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 0, 384, 0, 0, 0, 384, - 384, 384, 0, 684, 371, 0, 0, 655, 652, 523, - 0, 215, 216, 218, 0, 0, 0, 0, 0, 530, - 909, 1355, 1356, 1357, 0, 1367, 1371, 126, 0, 0, - 0, 0, 577, 583, 0, 501, 584, 697, 698, 699, - 94, 707, 713, 828, 848, 975, 983, 987, 0, 0, - 0, 0, 1295, 1279, 357, 1282, 1283, 1285, 1287, 1288, - 1290, 1291, 1023, 1024, 1028, 0, 1107, 0, 1109, 1302, - 0, 1332, 0, 0, 0, 1138, 0, 0, 0, 1149, - 1148, 1150, 0, 1152, 1153, 1158, 1159, 1163, 0, 1165, - 1167, 1168, 0, 0, 0, 1179, 1180, 1181, 1182, 1183, - 1184, 1185, 1186, 1187, 1188, 0, 1057, 1060, 1191, 1067, - 1068, 1073, 1194, 0, 0, 1103, 1206, 0, 1211, 0, - 0, 1217, 0, 1221, 0, 1227, 1228, 1230, 1232, 0, - 0, 0, 0, 0, 935, 916, 63, 1314, 1316, 0, - 1382, 1380, 1380, 1390, 1391, 0, 0, 1398, 0, 0, - 0, 0, 83, 0, 0, 0, 1418, 0, 0, 0, - 0, 100, 1323, 923, 930, 0, 0, 924, 0, 925, - 945, 947, 902, -2, 906, 0, 967, 967, 89, 90, - 0, 180, 0, 182, 208, 209, 0, 185, 187, 188, - 189, 195, 196, 197, 190, 0, 0, 290, 292, 0, - 0, 333, 344, 334, 0, 0, 1342, 1343, 1344, 1345, - 1346, 1347, 1348, 1349, 909, 139, 140, 141, 591, 0, - 601, 0, 911, 0, 594, 0, 512, 0, 0, 0, - 384, 384, 384, 0, 0, 0, 0, 669, 0, 0, - 632, 0, 640, 0, 0, 0, 219, 220, 0, 1366, - 566, 0, 124, 125, 0, 0, 571, 503, 504, 1021, - 0, 0, 0, 1022, 1280, 0, 0, 0, 0, 1299, - 0, 0, 0, 0, 1145, 0, 0, 0, 1171, 0, - 0, 0, 621, 622, 0, 1235, 1062, 1323, 0, 1064, - 1074, 1075, 0, 1064, 1205, 0, 0, 0, 0, 0, - 0, 0, 964, 0, 0, 0, 0, 955, 1316, 1321, - 0, 0, 1385, 0, 1378, 1381, 1379, 1392, 0, 0, - 1399, 0, 1401, 0, 1423, 1424, 1416, 0, 1408, 1411, - 1407, 1410, 1332, 927, 0, 932, 0, 1323, 88, 0, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 194, 0, 0, 348, 351, 0, 0, 0, - 592, 0, 912, 604, 595, 0, 682, 0, 686, 0, - 0, 0, 689, 690, 691, 668, 0, 672, 412, 656, - 653, 654, 524, 0, 127, 128, 0, 0, 0, 1269, - 0, 1272, 1106, 1108, 0, 1135, 1136, 1137, 1277, 1278, - 1151, 1164, 1169, 0, 1172, 0, 0, 1173, 0, 623, - 1053, 0, 0, 1071, 1072, 0, 1207, 0, 1212, 1213, - 0, 1218, 0, 1222, 1233, 0, 960, 917, 918, 965, - 966, 0, 0, 908, 1321, 81, 1322, 1319, 0, 1317, - 1315, 1374, 0, 1383, 1384, 1393, 1394, 1400, 0, 1406, - 0, 86, 0, 0, 0, 1332, 181, 0, 200, 0, - 600, 0, 603, 593, 680, 681, 0, 693, 685, 687, - 688, 670, -2, 1358, 0, 0, 0, 573, 1270, 0, - 0, 1174, 0, 619, 620, 1061, 1054, 0, 1039, 1040, - 1058, 1193, 1195, 0, 0, 0, 0, 959, 961, 962, - 80, 0, 1318, 1079, 0, 1386, 1387, 1414, 1412, 928, - 935, 0, 87, 425, 418, 1358, 0, 0, 0, 673, - 674, 675, 676, 677, 678, 679, 563, 1360, 129, 130, - 491, 492, 493, 123, 0, 1112, 1170, 1055, 0, 0, - 0, 0, 1051, 1052, 0, 1208, 0, 1214, 0, 1219, - 0, 919, 920, 1320, 0, 0, 605, 0, 607, 0, - -2, 413, 426, 0, 175, 201, 202, 0, 0, 205, - 206, 207, 198, 199, 119, 0, 0, 694, 0, 1361, - 1362, 126, 0, 0, 1046, 1047, 1048, 1049, 1050, 0, - 0, 0, 1080, 1059, 606, 0, 0, 368, 0, 616, - 414, 415, 0, 421, 422, 423, 424, 203, 204, 628, - 0, 0, 570, 1271, 0, 1209, 0, 1215, 0, 1220, - 0, 608, 609, 617, 0, 416, 0, 417, 0, 0, - 0, 597, 0, 628, 1359, 1056, 0, 0, 1078, 0, - 618, 614, 427, 429, 430, 0, 0, 428, 629, 598, - 1210, 1216, 0, 431, 432, 433, 610, 611, 612, 613, + 384, 384, 384, 384, 384, 1351, 155, 1468, 1465, 1466, + 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, + 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, + 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, + 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, + 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, + 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, + 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, + 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, + 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, + 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, + 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, + 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, + 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, + 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, + 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, + 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, + 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, + 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, + 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, + 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, + 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, + 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, + 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, + 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, + 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, + 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, + 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, + 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, + 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011, 2012, 2013, 0, 1444, 0, 703, 953, 0, + 766, 766, 0, 766, 766, 766, 766, 0, 0, 0, + 715, 0, 0, 0, 0, 763, 0, 731, 732, 0, + 763, 0, 738, 769, 0, 0, 744, 766, 766, 747, + 2017, 0, 2017, 2017, 1435, 0, 760, 758, 772, 773, + 39, 776, 779, 780, 781, 782, 784, 0, 789, 792, + 1461, 1462, 0, 794, 813, 814, 0, 846, 847, 44, + 1101, 0, 975, 980, 991, 1006, 1007, 1008, 1009, 1010, + 1012, 1013, 1014, 0, 0, 0, 0, 1019, 1020, 0, + 0, 0, 0, 0, 1082, 1028, 0, 0, 0, 0, + 1297, 0, 0, 1258, 1258, 1116, 1258, 1260, 1260, 1668, + 1804, 1812, 1929, 1631, 1636, 1637, 1638, 1922, 1923, 1924, + 1925, 1964, 1965, 1969, 1728, 0, 0, 0, 2013, 1765, + 1773, 1774, 1798, 1895, 1950, 1648, 1793, 1861, 1725, 1747, + 1748, 1877, 1878, 1769, 1770, 1751, 1763, 1766, 1754, 1755, + 1757, 1759, 1764, 1771, 1777, 1756, 1776, 1775, 0, 1752, + 1753, 1758, 1768, 1772, 1760, 1761, 1762, 1767, 1778, 0, + 0, 0, 0, 0, 1197, 1198, 1199, 1200, 0, 0, + 0, 0, 0, 0, 0, 280, 281, 1310, 1311, 42, + 43, 1100, 1422, 1260, 1260, 1260, 1260, 1260, 1042, 1043, + 1044, 1045, 1046, 1070, 1071, 1077, 1078, 1872, 1873, 1874, + 1875, 1709, 1959, 1717, 1718, 1856, 1857, 1730, 1731, 1988, + 1989, -2, -2, -2, 221, 222, 223, 224, 225, 226, + 227, 228, 0, 1672, 1941, 1942, 217, 0, 0, 285, + 286, 282, 283, 284, 1084, 1085, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 2016, 0, + 823, 0, 0, 0, 0, 0, 1333, 0, 1325, 1324, + 62, 0, 850, -2, 0, 0, 0, 0, 46, 0, + 51, 910, 853, 76, 75, 1373, 0, 0, 0, 58, + 1334, 66, 68, 1335, 0, 855, 856, 0, 886, 890, + 0, 0, 0, 1451, 1450, 1450, 101, 0, 0, 1426, + 113, 114, 115, 0, 0, 1432, 1433, 1437, 1438, 0, + 0, 167, 168, 0, 40, 411, 0, 163, 0, 404, + 345, 0, 1351, 0, 0, 0, 0, 0, 850, 0, + 1445, 144, 145, 152, 153, 154, 384, 384, 384, 559, + 0, 0, 155, 155, 517, 518, 519, 0, 0, -2, + 409, 0, 495, 0, 0, 398, 398, 402, 400, 401, + 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, + 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 651, 0, 385, 0, 557, 558, 447, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 1454, 0, 534, 535, + 0, 0, 0, 384, 384, 0, 0, 0, 0, 384, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, + 1364, 0, 0, 505, 0, -2, 0, 695, 0, 0, + 0, 1446, 1446, 0, 702, 0, 704, 705, 0, 0, + 706, 0, 763, 763, 761, 762, 708, 709, 710, 711, + 766, 0, 0, 393, 394, 395, 763, 766, 0, 766, + 766, 766, 766, 763, 763, 763, 766, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2017, 769, 766, 0, + 739, 0, 740, 741, 742, 745, 746, 748, 2018, 2019, + 1463, 1464, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, + 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, + 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, + 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, + 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, + 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, + 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, + 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, + 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, + 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, + 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, + 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, + 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, + 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, + 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, + 1619, 2017, 2017, 752, 756, 1436, 778, 790, 793, 808, + 48, 1716, 800, 825, 826, 831, 0, 0, 0, 0, + 837, 838, 839, 0, 0, 842, 843, 844, 0, 0, + 0, 0, 0, 973, 0, 0, 1090, 1091, 1092, 1093, + 1094, 1095, 1096, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 992, 993, 0, 0, 0, 1015, 1016, 1017, 1018, 1021, + 0, 1033, 0, 1035, 1306, -2, 0, 0, 0, 1026, + 1027, 0, 0, 0, 0, 0, 0, 0, 1298, 0, + 0, 1114, 0, 1115, 1117, 1118, 0, 1119, 860, 860, + 860, 860, 860, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 860, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1456, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 870, 0, 0, 870, 870, 0, 0, + 210, 211, 212, 213, 214, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 287, 235, 236, 237, 1100, + 0, 0, 0, 45, 815, 816, 0, 936, 1456, 0, + 0, 866, 0, 56, 65, 67, 1333, 60, 1333, 0, + 872, 0, 0, -2, -2, 873, 879, 880, 881, 882, + 883, 53, 2015, 54, 0, 73, 0, 47, 0, 0, + 0, 0, 357, 1376, 0, 0, 1326, 1327, 1330, 0, + 887, 1810, 891, 0, 893, 894, 0, 0, 99, 0, + 952, 0, 0, 0, 0, 1434, 103, 104, 0, 0, + 0, 368, 1439, 1440, 1441, -2, 391, 0, 368, 352, + 295, 296, 297, 345, 299, 345, 345, 345, 345, 357, + 357, 357, 357, 328, 329, 330, 331, 332, 0, 0, + 314, 345, 345, 345, 345, 335, 336, 337, 338, 339, + 340, 341, 342, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 347, 347, 347, 349, 349, 0, 41, 0, + 372, 0, 1330, 0, 0, 1364, 1448, 1458, 0, 0, + 0, 1448, 122, 0, 0, 0, 560, 601, 511, 548, + 561, 0, 514, 515, -2, 0, 0, 494, 0, 496, + 0, 392, 0, -2, 0, 402, 0, 398, 402, 399, + 402, 390, 403, 538, 539, 540, 0, 542, 543, 631, + 922, 0, 0, 0, 0, 0, 637, 638, 639, 0, + 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, + 549, 550, 551, 552, 553, 554, 555, 556, 0, 0, + 0, 0, 496, 0, 545, 0, 0, 448, 449, 450, + 0, 0, 453, 454, 455, 456, 0, 0, 459, 460, + 461, 939, 940, 462, 463, 488, 489, 490, 464, 465, + 466, 467, 468, 469, 470, 482, 483, 484, 485, 486, + 487, 471, 472, 473, 474, 475, 476, 479, 0, 137, + 1355, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 587, 588, 589, 0, 0, 0, 0, 0, + 1446, 0, 0, 0, 0, 869, 954, 1469, 1470, 767, + 768, 0, 396, 397, 766, 766, 712, 753, 0, 766, + 716, 754, 717, 719, 718, 720, 733, 734, 766, 723, + 764, 765, 724, 725, 726, 727, 728, 729, 730, 749, + 735, 736, 737, 770, 0, 774, 775, 750, 751, 0, + 791, 811, 809, 810, 812, 804, 805, 806, 807, 0, + 0, 0, 828, 95, 833, 834, 835, 836, 848, 841, + 1102, 970, 971, 972, 0, 974, 977, 0, 1086, 1088, + 979, 981, 1097, 1098, 1099, 0, 0, 0, 0, 0, + 985, 989, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1011, 1274, 1275, 1276, 1030, 288, + 289, 0, 1031, 0, 0, 0, 0, 0, 0, 0, + 1101, 1032, 0, 884, 0, 0, 1304, 1301, 0, 0, + 0, 1259, 1261, 0, 0, 0, 0, 861, 862, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1237, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, + 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1277, 0, + 0, 0, 0, 0, 1297, 0, 1037, 1038, 1039, 0, + 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0, + 1457, 0, 132, 133, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1201, 1202, 1203, 1204, 38, 0, 0, 0, 871, 1308, + 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, + 0, 0, 0, 1420, 0, 0, 818, 819, 821, 0, + 956, 0, 937, 0, 0, 824, 0, 865, 0, 868, + 59, 61, 877, 878, 0, 895, 874, 55, 50, 0, + 0, 914, 1374, 357, 1396, 0, 366, 366, 363, 1336, + 1337, 0, 1329, 1331, 1332, 78, 892, 888, 0, 968, + 0, 0, 951, 0, 898, 900, 901, 902, 934, 0, + 905, 0, 0, 0, 0, 0, 97, 953, 1427, 0, + 102, 0, 0, 107, 108, 1428, 1429, 1430, 1431, 0, + 590, -2, 443, 169, 171, 172, 173, 164, -2, 355, + 353, 354, 298, 357, 357, 322, 323, 324, 325, 326, + 327, 0, 0, 315, 316, 317, 318, 309, 0, 310, + 311, 312, 0, 313, 410, 0, 1338, 373, 374, 376, + 384, 0, 379, 380, 0, 384, 384, 0, 405, 406, + 0, 1330, 1355, 0, 0, 0, 1459, 1458, 1458, 1458, + 0, 157, 158, 159, 160, 161, 162, 626, 0, 0, + 602, 624, 625, 155, 0, 0, 165, 498, 497, 0, + 658, 0, 408, 0, 0, 402, 402, 387, 388, 541, + 0, 0, 633, 634, 635, 636, 0, 0, 0, 527, + 437, 0, 528, 529, 496, 498, 0, 0, 368, 451, + 452, 457, 458, 477, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 576, 579, 581, + 500, 585, 578, 580, 582, 500, 586, 506, 1352, 1353, + 1354, 0, 0, 696, 0, 0, 434, 93, 1447, 701, + 763, 722, 755, 763, 714, 721, 743, 787, 795, 796, + 797, 798, 799, 832, 0, 0, 0, 0, 840, 0, + 0, 978, 1087, 1089, 982, 0, 986, 990, 0, 0, + 0, 1036, 1034, 1308, 0, 0, 0, 1083, 0, 0, + 1105, 1106, 0, 0, 0, 1302, 0, 0, 1112, 0, + 1262, 1263, 1120, 0, 0, 0, 0, 0, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1324, 0, + 0, 0, 0, 0, 1141, 1142, 1143, 1144, 1145, 0, + 1147, 0, 1148, 0, 0, 0, 0, 1155, 1156, 1158, + 0, 0, 1161, 1162, 0, 0, 1163, 0, 0, 0, + 1167, 0, 0, 0, 0, 1176, 1177, 1178, 1179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1190, + 1191, 0, 1065, 0, 0, 1065, 0, 1103, 870, 0, + 1264, 1265, 1266, 1267, 1268, 0, 0, 0, 0, 0, + 0, 1224, 1225, 1227, 0, 0, 1230, 0, 1232, 0, + 1421, 817, 820, 822, 908, 957, 958, 0, 0, 0, + 0, 938, 1455, 863, 864, 867, 916, 0, 1312, 0, + 0, 895, 968, 896, 0, 875, 52, 911, 0, 1378, + 1377, 1390, 1403, 366, 366, 360, 361, 367, 362, 364, + 365, 1328, 0, 1333, 0, 1414, 0, 0, 1406, 0, + 0, 0, 0, 0, 0, 0, 0, 941, 0, 0, + 944, 0, 0, 0, 0, 935, 0, 0, 0, 0, + 0, 0, -2, 0, 0, 91, 92, 0, 0, 0, + 105, 106, 0, 0, 112, 369, 370, 146, 155, 445, + 170, 418, 0, 0, 294, 356, 319, 320, 321, 0, + 343, 0, 0, 0, 439, 118, 1342, 1341, 384, 384, + 375, 0, 378, 0, 0, 0, 1460, 346, 407, 0, + 136, 0, 0, 0, 0, 0, 142, 596, 0, 0, + 603, 0, 0, 0, 509, 0, 520, 521, 0, 630, + -2, 692, 372, 0, 386, 389, 923, 0, 0, 522, + 0, 525, 526, 438, 498, 531, 532, 546, 533, 480, + 481, 478, 0, 0, 1365, 1366, 1371, 1369, 1370, 123, + 567, 569, 568, 572, 0, 0, 0, 502, 0, 502, + 565, 0, 434, 1338, 0, 700, 435, 436, 766, 766, + 827, 96, 0, 830, 0, 0, 0, 0, 983, 987, + 1269, 1295, 345, 345, 1282, 345, 349, 1285, 345, 1287, + 345, 1290, 345, 1293, 1294, 0, 0, 0, 885, 0, + 0, 1111, 1305, 0, 0, 1121, 1122, 1123, 1124, 1125, + 1299, 0, 0, 0, 1140, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, + 0, 0, 0, 1235, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1060, 1064, 0, 1066, 1067, 0, + 0, 1193, 0, 0, 1205, 0, 1309, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 959, 964, 964, + 964, 0, 0, 0, 1442, 1443, 1313, 1314, 968, 1315, + 897, 876, 915, 1396, 0, 1389, 0, -2, 1398, 0, + 0, 0, 1404, 358, 359, 889, 79, 969, 82, 0, + 1414, 1423, 0, 1405, 1416, 1418, 0, 0, 0, 1410, + 0, 968, 899, 930, 932, 0, 927, 942, 943, 945, + 0, 947, 0, 949, 950, 910, 904, 906, 0, 0, + 0, 99, 0, 968, 968, 98, 0, 955, 109, 110, + 111, 444, 174, 179, 0, 0, 0, 184, 0, 186, + 0, 0, 0, 191, 192, 384, 384, 419, 0, 291, + 293, 0, 0, 177, 357, 0, 357, 0, 350, 0, + 420, 440, 1339, 1340, 0, 0, 377, 381, 382, 383, + 0, 1449, 138, 0, 0, 0, 599, 0, 627, 0, + 0, 0, 0, 0, 0, 166, 499, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 0, 384, 0, 0, + 0, 384, 384, 384, 0, 684, 371, 0, 0, 655, + 652, 523, 0, 215, 216, 218, 0, 0, 0, 0, + 0, 530, 910, 1356, 1357, 1358, 0, 1368, 1372, 126, + 0, 0, 0, 0, 577, 583, 0, 501, 584, 697, + 698, 699, 94, 707, 713, 829, 849, 976, 984, 988, + 0, 0, 0, 0, 1296, 1280, 357, 1283, 1284, 1286, + 1288, 1289, 1291, 1292, 1024, 1025, 1029, 0, 1108, 0, + 1110, 1303, 0, 1333, 0, 0, 0, 1139, 0, 0, + 0, 1150, 1149, 1151, 0, 1153, 1154, 1159, 1160, 1164, + 0, 1166, 1168, 1169, 0, 0, 0, 1180, 1181, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 0, 1058, 1061, + 1192, 1068, 1069, 1074, 1195, 0, 0, 1104, 1207, 0, + 1212, 0, 0, 1218, 0, 1222, 0, 1228, 1229, 1231, + 1233, 0, 0, 0, 0, 0, 936, 917, 63, 1315, + 1317, 0, 1383, 1381, 1381, 1391, 1392, 0, 0, 1399, + 0, 0, 0, 0, 83, 0, 0, 0, 1419, 0, + 0, 0, 0, 100, 1324, 924, 931, 0, 0, 925, + 0, 926, 946, 948, 903, -2, 907, 0, 968, 968, + 89, 90, 0, 180, 0, 182, 208, 209, 0, 185, + 187, 188, 189, 195, 196, 197, 190, 0, 0, 290, + 292, 0, 0, 333, 344, 334, 0, 0, 1343, 1344, + 1345, 1346, 1347, 1348, 1349, 1350, 910, 139, 140, 141, + 591, 0, 601, 0, 912, 0, 594, 0, 512, 0, + 0, 0, 384, 384, 384, 0, 0, 0, 0, 669, + 0, 0, 632, 0, 640, 0, 0, 0, 219, 220, + 0, 1367, 566, 0, 124, 125, 0, 0, 571, 503, + 504, 1022, 0, 0, 0, 1023, 1281, 0, 0, 0, + 0, 1300, 0, 0, 0, 0, 1146, 0, 0, 0, + 1172, 0, 0, 0, 621, 622, 0, 1236, 1063, 1324, + 0, 1065, 1075, 1076, 0, 1065, 1206, 0, 0, 0, + 0, 0, 0, 0, 965, 0, 0, 0, 0, 956, + 1317, 1322, 0, 0, 1386, 0, 1379, 1382, 1380, 1393, + 0, 0, 1400, 0, 1402, 0, 1424, 1425, 1417, 0, + 1409, 1412, 1408, 1411, 1333, 928, 0, 933, 0, 1324, + 88, 0, 183, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 194, 0, 0, 348, 351, 0, + 0, 0, 592, 0, 913, 604, 595, 0, 682, 0, + 686, 0, 0, 0, 689, 690, 691, 668, 0, 672, + 412, 656, 653, 654, 524, 0, 127, 128, 0, 0, + 0, 1270, 0, 1273, 1107, 1109, 0, 1136, 1137, 1138, + 1278, 1279, 1152, 1165, 1170, 0, 1173, 0, 0, 1174, + 0, 623, 1054, 0, 0, 1072, 1073, 0, 1208, 0, + 1213, 1214, 0, 1219, 0, 1223, 1234, 0, 961, 918, + 919, 966, 967, 0, 0, 909, 1322, 81, 1323, 1320, + 0, 1318, 1316, 1375, 0, 1384, 1385, 1394, 1395, 1401, + 0, 1407, 0, 86, 0, 0, 0, 1333, 181, 0, + 200, 0, 600, 0, 603, 593, 680, 681, 0, 693, + 685, 687, 688, 670, -2, 1359, 0, 0, 0, 573, + 1271, 0, 0, 1175, 0, 619, 620, 1062, 1055, 0, + 1040, 1041, 1059, 1194, 1196, 0, 0, 0, 0, 960, + 962, 963, 80, 0, 1319, 1080, 0, 1387, 1388, 1415, + 1413, 929, 936, 0, 87, 425, 418, 1359, 0, 0, + 0, 673, 674, 675, 676, 677, 678, 679, 563, 1361, + 129, 130, 491, 492, 493, 123, 0, 1113, 1171, 1056, + 0, 0, 0, 0, 1052, 1053, 0, 1209, 0, 1215, + 0, 1220, 0, 920, 921, 1321, 0, 0, 605, 0, + 607, 0, -2, 413, 426, 0, 175, 201, 202, 0, + 0, 205, 206, 207, 198, 199, 119, 0, 0, 694, + 0, 1362, 1363, 126, 0, 0, 1047, 1048, 1049, 1050, + 1051, 0, 0, 0, 1081, 1060, 606, 0, 0, 368, + 0, 616, 414, 415, 0, 421, 422, 423, 424, 203, + 204, 628, 0, 0, 570, 1272, 0, 1210, 0, 1216, + 0, 1221, 0, 608, 609, 617, 0, 416, 0, 417, + 0, 0, 0, 597, 0, 628, 1360, 1057, 0, 0, + 1079, 0, 618, 614, 427, 429, 430, 0, 0, 428, + 629, 598, 1211, 1217, 0, 431, 432, 433, 610, 611, + 612, 613, } var yyTok1 = [...]int{ @@ -14281,7 +14294,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4061 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} + yyLOCAL = &ShowThrottlerStatus{} } yyVAL.union = yyLOCAL case 741: @@ -14289,31 +14302,31 @@ yydefault: var yyLOCAL Statement //line sql.y:4065 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} } yyVAL.union = yyLOCAL case 742: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4069 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} } yyVAL.union = yyLOCAL case 743: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:4073 { - yyLOCAL = &Show{&ShowBasic{Command: Warnings}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} } yyVAL.union = yyLOCAL case 744: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:4077 { - yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Warnings}} } yyVAL.union = yyLOCAL case 745: @@ -14321,31 +14334,31 @@ yydefault: var yyLOCAL Statement //line sql.y:4081 { - yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 746: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4085 { - yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} + yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 747: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4092 +//line sql.y:4089 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} + yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} } yyVAL.union = yyLOCAL case 748: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4096 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} } yyVAL.union = yyLOCAL case 749: @@ -14353,7 +14366,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4100 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 750: @@ -14361,23 +14374,23 @@ yydefault: var yyLOCAL Statement //line sql.y:4104 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} } yyVAL.union = yyLOCAL case 751: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4108 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 752: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4112 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL case 753: @@ -14389,127 +14402,129 @@ yydefault: } yyVAL.union = yyLOCAL case 754: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4120 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL case 755: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:4124 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 756: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL Statement +//line sql.y:4128 + { + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + } + yyVAL.union = yyLOCAL + case 757: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4130 +//line sql.y:4134 { yyVAL.str = "" } - case 757: + case 758: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4134 +//line sql.y:4138 { yyVAL.str = "extended " } - case 758: + case 759: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4140 +//line sql.y:4144 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 759: + case 760: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4144 +//line sql.y:4148 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 760: + case 761: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4150 +//line sql.y:4154 { yyVAL.str = string(yyDollar[1].str) } - case 761: + case 762: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4154 +//line sql.y:4158 { yyVAL.str = string(yyDollar[1].str) } - case 762: + case 763: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4160 +//line sql.y:4164 { yyVAL.identifierCS = NewIdentifierCS("") } - case 763: + case 764: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4164 +//line sql.y:4168 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 764: + case 765: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4168 +//line sql.y:4172 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 765: + case 766: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4174 +//line sql.y:4178 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 766: + case 767: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4178 +//line sql.y:4182 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 767: + case 768: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4182 +//line sql.y:4186 { yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 768: + case 769: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4188 +//line sql.y:4192 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 769: + case 770: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4192 +//line sql.y:4196 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 770: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4198 - { - yyVAL.empty = struct{}{} - } case 771: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4202 { yyVAL.empty = struct{}{} @@ -14522,9 +14537,9 @@ yydefault: } case 773: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4212 +//line sql.y:4210 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.empty = struct{}{} } case 774: yyDollar = yyS[yypt-1 : yypt+1] @@ -14533,147 +14548,145 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 775: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4220 + { + yyVAL.str = string(yyDollar[1].str) + } + case 776: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4222 +//line sql.y:4226 { yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL - case 776: + case 777: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4226 +//line sql.y:4230 { yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} } yyVAL.union = yyLOCAL - case 777: + case 778: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4230 +//line sql.y:4234 { yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} } yyVAL.union = yyLOCAL - case 778: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4237 - { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) - } case 779: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4241 { - yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } case 780: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4245 { - yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) } case 781: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4249 { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) } case 782: yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4253 + { + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + } + case 783: + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4256 +//line sql.y:4260 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 783: + case 784: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4260 +//line sql.y:4264 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 784: + case 785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4266 +//line sql.y:4270 { yyLOCAL = &Commit{} } yyVAL.union = yyLOCAL - case 785: + case 786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4272 +//line sql.y:4276 { yyLOCAL = &Rollback{} } yyVAL.union = yyLOCAL - case 786: + case 787: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4276 +//line sql.y:4280 { yyLOCAL = &SRollback{Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 787: + case 788: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4281 +//line sql.y:4285 { yyVAL.empty = struct{}{} } - case 788: + case 789: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4283 +//line sql.y:4287 { yyVAL.empty = struct{}{} } - case 789: + case 790: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4286 +//line sql.y:4290 { yyVAL.empty = struct{}{} } - case 790: + case 791: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4288 +//line sql.y:4292 { yyVAL.empty = struct{}{} } - case 791: + case 792: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4292 +//line sql.y:4296 { yyLOCAL = &Savepoint{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 792: + case 793: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4298 +//line sql.y:4302 { yyLOCAL = &Release{Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 793: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL ExplainType -//line sql.y:4303 - { - yyLOCAL = EmptyType - } - yyVAL.union = yyLOCAL case 794: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL ExplainType //line sql.y:4307 { - yyLOCAL = JSONType + yyLOCAL = EmptyType } yyVAL.union = yyLOCAL case 795: @@ -14681,7 +14694,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4311 { - yyLOCAL = TreeType + yyLOCAL = JSONType } yyVAL.union = yyLOCAL case 796: @@ -14689,7 +14702,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4315 { - yyLOCAL = VitessType + yyLOCAL = TreeType } yyVAL.union = yyLOCAL case 797: @@ -14697,7 +14710,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4319 { - yyLOCAL = VTExplainType + yyLOCAL = VitessType } yyVAL.union = yyLOCAL case 798: @@ -14705,23 +14718,25 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4323 { - yyLOCAL = TraditionalType + yyLOCAL = VTExplainType } yyVAL.union = yyLOCAL case 799: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType //line sql.y:4327 { - yyLOCAL = AnalyzeType + yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4333 + var yyLOCAL ExplainType +//line sql.y:4331 { - yyVAL.str = yyDollar[1].str + yyLOCAL = AnalyzeType } + yyVAL.union = yyLOCAL case 801: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4337 @@ -14736,18 +14751,16 @@ yydefault: } case 803: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Statement -//line sql.y:4347 +//line sql.y:4345 { - yyLOCAL = yyDollar[1].selStmtUnion() + yyVAL.str = yyDollar[1].str } - yyVAL.union = yyLOCAL case 804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement //line sql.y:4351 { - yyLOCAL = yyDollar[1].statementUnion() + yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL case 805: @@ -14767,200 +14780,202 @@ yydefault: } yyVAL.union = yyLOCAL case 807: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4364 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Statement +//line sql.y:4363 { - yyVAL.str = "" + yyLOCAL = yyDollar[1].statementUnion() } + yyVAL.union = yyLOCAL case 808: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4368 { - yyVAL.str = yyDollar[1].identifierCI.val + yyVAL.str = "" } case 809: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4372 { - yyVAL.str = encodeSQLString(yyDollar[1].str) + yyVAL.str = yyDollar[1].identifierCI.val } case 810: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4376 + { + yyVAL.str = encodeSQLString(yyDollar[1].str) + } + case 811: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4378 +//line sql.y:4382 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 811: + case 812: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4382 +//line sql.y:4386 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 812: + case 813: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4388 +//line sql.y:4392 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 813: + case 814: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4392 +//line sql.y:4396 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 814: + case 815: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4398 +//line sql.y:4402 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 815: + case 816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4404 +//line sql.y:4408 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 816: + case 817: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4408 +//line sql.y:4412 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 817: + case 818: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4414 +//line sql.y:4418 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 818: + case 819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4420 +//line sql.y:4424 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 819: + case 820: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4424 +//line sql.y:4428 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 820: + case 821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4428 +//line sql.y:4432 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 821: + case 822: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4432 +//line sql.y:4436 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 822: + case 823: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4438 +//line sql.y:4442 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 823: + case 824: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4444 +//line sql.y:4448 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 824: + case 825: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4450 +//line sql.y:4454 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 825: + case 826: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4454 +//line sql.y:4458 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 826: + case 827: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4458 +//line sql.y:4462 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 827: + case 828: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4462 +//line sql.y:4466 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 828: + case 829: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4466 +//line sql.y:4470 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 829: + case 830: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4470 +//line sql.y:4474 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 830: + case 831: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4476 +//line sql.y:4480 { yyVAL.strs = []string{yyDollar[1].str} } - case 831: + case 832: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4480 +//line sql.y:4484 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 832: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4486 - { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) - } case 833: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4490 @@ -14980,10 +14995,10 @@ yydefault: yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 836: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4502 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 837: yyDollar = yyS[yypt-1 : yypt+1] @@ -14998,22 +15013,22 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 839: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4514 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str + yyVAL.str = string(yyDollar[1].str) } case 840: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4518 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } case 841: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4522 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 842: yyDollar = yyS[yypt-1 : yypt+1] @@ -15028,144 +15043,150 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 844: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4534 + { + yyVAL.str = string(yyDollar[1].str) + } + case 845: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4535 +//line sql.y:4539 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 845: + case 846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4539 +//line sql.y:4543 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 846: + case 847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4543 +//line sql.y:4547 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 847: + case 848: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4548 +//line sql.y:4552 { yyVAL.str = "" } - case 848: + case 849: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4552 +//line sql.y:4556 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 849: + case 850: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4557 +//line sql.y:4561 { setAllowComments(yylex, true) } - case 850: + case 851: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4561 +//line sql.y:4565 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 851: + case 852: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4567 +//line sql.y:4571 { yyVAL.strs = nil } - case 852: + case 853: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4571 +//line sql.y:4575 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 853: + case 854: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4577 +//line sql.y:4581 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 854: + case 855: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4581 +//line sql.y:4585 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 855: + case 856: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4585 +//line sql.y:4589 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 856: + case 857: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4590 +//line sql.y:4594 { yyVAL.str = "" } - case 857: + case 858: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4594 +//line sql.y:4598 { yyVAL.str = SQLNoCacheStr } - case 858: + case 859: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4598 +//line sql.y:4602 { yyVAL.str = SQLCacheStr } - case 859: + case 860: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4603 +//line sql.y:4607 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 860: + case 861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4607 +//line sql.y:4611 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 861: + case 862: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4611 +//line sql.y:4615 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 862: + case 863: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4617 +//line sql.y:4621 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 863: + case 864: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4621 +//line sql.y:4625 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -15174,109 +15195,103 @@ yydefault: } } yyVAL.union = yyLOCAL - case 864: + case 865: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4631 +//line sql.y:4635 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 865: + case 866: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4636 +//line sql.y:4640 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 866: + case 867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4640 +//line sql.y:4644 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 867: + case 868: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4646 +//line sql.y:4650 { yyLOCAL = &DeallocateStmt{Type: DeallocateType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 868: + case 869: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4650 +//line sql.y:4654 { yyLOCAL = &DeallocateStmt{Type: DropType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 869: + case 870: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4655 +//line sql.y:4659 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 870: + case 871: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4659 +//line sql.y:4663 { yyLOCAL = yyDollar[1].selectExprsUnion() } yyVAL.union = yyLOCAL - case 871: + case 872: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4664 +//line sql.y:4668 { yyVAL.strs = nil } - case 872: + case 873: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4668 +//line sql.y:4672 { yyVAL.strs = []string{yyDollar[1].str} } - case 873: + case 874: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4672 +//line sql.y:4676 { // 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 874: + case 875: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4676 +//line sql.y:4680 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 875: + case 876: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4680 +//line sql.y:4684 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 876: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4686 - { - yyVAL.str = SQLNoCacheStr - } case 877: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4690 { - yyVAL.str = SQLCacheStr + yyVAL.str = SQLNoCacheStr } case 878: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4694 { - yyVAL.str = DistinctStr + yyVAL.str = SQLCacheStr } case 879: yyDollar = yyS[yypt-1 : yypt+1] @@ -15288,481 +15303,487 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4702 { - yyVAL.str = StraightJoinHint + yyVAL.str = DistinctStr } case 881: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4706 { - yyVAL.str = SQLCalcFoundRowsStr + yyVAL.str = StraightJoinHint } case 882: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4710 { - yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway + yyVAL.str = SQLCalcFoundRowsStr } case 883: yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4714 + { + yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway + } + case 884: + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4716 +//line sql.y:4720 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 884: + case 885: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4720 +//line sql.y:4724 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 885: + case 886: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4726 +//line sql.y:4730 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 886: + case 887: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4730 +//line sql.y:4734 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 887: + case 888: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4734 +//line sql.y:4738 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 888: + case 889: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4738 +//line sql.y:4742 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 889: + case 890: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4743 +//line sql.y:4747 { yyVAL.identifierCI = IdentifierCI{} } - case 890: + case 891: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4747 +//line sql.y:4751 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 891: + case 892: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4751 +//line sql.y:4755 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 893: + case 894: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4758 +//line sql.y:4762 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 894: + case 895: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4763 +//line sql.y:4767 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 895: + case 896: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4767 +//line sql.y:4771 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 896: + case 897: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4773 +//line sql.y:4777 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 897: + case 898: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4779 +//line sql.y:4783 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 898: + case 899: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4783 +//line sql.y:4787 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 901: + case 902: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4793 +//line sql.y:4797 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 902: + case 903: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4797 +//line sql.y:4801 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 903: + case 904: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4801 +//line sql.y:4805 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 904: + case 905: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4805 +//line sql.y:4809 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 905: + case 906: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4811 +//line sql.y:4815 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 906: + case 907: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4815 +//line sql.y:4819 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[3].selStmtUnion()} } yyVAL.union = yyLOCAL - case 907: + case 908: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4821 +//line sql.y:4825 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 908: + case 909: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4825 +//line sql.y:4829 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 909: + case 910: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4830 +//line sql.y:4834 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 910: + case 911: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4834 +//line sql.y:4838 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 911: + case 912: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4839 +//line sql.y:4843 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 912: + case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4843 +//line sql.y:4847 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 913: + case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4849 +//line sql.y:4853 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 914: + case 915: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4853 +//line sql.y:4857 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 915: + case 916: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4859 +//line sql.y:4863 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 916: + case 917: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4863 +//line sql.y:4867 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 917: + case 918: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4869 +//line sql.y:4873 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 918: + case 919: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4873 +//line sql.y:4877 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 919: + case 920: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4877 +//line sql.y:4881 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 920: + case 921: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4881 +//line sql.y:4885 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 921: + case 922: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:4887 +//line sql.y:4891 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 922: + case 923: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4891 +//line sql.y:4895 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 923: + case 924: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4904 +//line sql.y:4908 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 924: + case 925: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4908 +//line sql.y:4912 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 925: + case 926: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4912 +//line sql.y:4916 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 926: + case 927: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4916 +//line sql.y:4920 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 927: + case 928: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4922 +//line sql.y:4926 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 928: + case 929: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4924 +//line sql.y:4928 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 929: + case 930: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4928 +//line sql.y:4932 { yyVAL.joinCondition = &JoinCondition{} } - case 930: + case 931: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4930 +//line sql.y:4934 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 931: + case 932: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4934 +//line sql.y:4938 { yyVAL.joinCondition = &JoinCondition{} } - case 932: + case 933: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4936 +//line sql.y:4940 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 933: + case 934: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4939 +//line sql.y:4943 { yyVAL.empty = struct{}{} } - case 934: + case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4941 +//line sql.y:4945 { yyVAL.empty = struct{}{} } - case 935: + case 936: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4944 +//line sql.y:4948 { yyVAL.identifierCS = NewIdentifierCS("") } - case 936: + case 937: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4948 +//line sql.y:4952 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 937: + case 938: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4952 +//line sql.y:4956 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 939: + case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4959 +//line sql.y:4963 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 940: + case 941: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4965 +//line sql.y:4969 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 941: + case 942: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4969 +//line sql.y:4973 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 942: + case 943: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4973 +//line sql.y:4977 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 943: + case 944: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4979 +//line sql.y:4983 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 944: + case 945: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4985 +//line sql.y:4989 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 945: + case 946: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4989 +//line sql.y:4993 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 946: + case 947: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4993 +//line sql.y:4997 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 947: + case 948: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4997 +//line sql.y:5001 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 948: + case 949: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5003 +//line sql.y:5007 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 949: + case 950: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5007 +//line sql.y:5011 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -15771,347 +15792,339 @@ yydefault: } } yyVAL.union = yyLOCAL - case 950: + case 951: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5017 +//line sql.y:5021 { yyVAL.tableName = yyDollar[2].tableName } - case 951: + case 952: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5021 +//line sql.y:5025 { yyVAL.tableName = yyDollar[1].tableName } - case 952: + case 953: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5027 +//line sql.y:5031 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 953: + case 954: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5031 +//line sql.y:5035 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 954: + case 955: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5037 +//line sql.y:5041 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 955: + case 956: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5042 +//line sql.y:5046 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 956: + case 957: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5046 +//line sql.y:5050 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 957: + case 958: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5052 +//line sql.y:5056 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 958: + case 959: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5056 +//line sql.y:5060 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 959: + case 960: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5062 +//line sql.y:5066 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 960: + case 961: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5066 +//line sql.y:5070 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 961: + case 962: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5070 +//line sql.y:5074 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 962: + case 963: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5074 +//line sql.y:5078 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 963: + case 964: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5079 +//line sql.y:5083 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 964: + case 965: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5083 +//line sql.y:5087 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 965: + case 966: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5087 +//line sql.y:5091 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 966: + case 967: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5091 +//line sql.y:5095 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 967: + case 968: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5097 +//line sql.y:5101 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 968: + case 969: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5101 +//line sql.y:5105 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 969: + case 970: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5108 +//line sql.y:5112 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 970: + case 971: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5112 +//line sql.y:5116 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 971: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5116 +//line sql.y:5120 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 972: + case 973: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5120 +//line sql.y:5124 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 973: + case 974: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5124 +//line sql.y:5128 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 974: + case 975: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5128 +//line sql.y:5132 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 975: + case 976: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5132 +//line sql.y:5136 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 976: + case 977: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5138 +//line sql.y:5142 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 977: + case 978: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5142 +//line sql.y:5146 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 978: + case 979: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5146 +//line sql.y:5150 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 979: + case 980: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5150 +//line sql.y:5154 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 980: + case 981: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5156 +//line sql.y:5160 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 981: + case 982: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5160 +//line sql.y:5164 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 982: + case 983: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5164 +//line sql.y:5168 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 983: + case 984: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5168 +//line sql.y:5172 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 984: + case 985: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5172 +//line sql.y:5176 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 985: + case 986: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5176 +//line sql.y:5180 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 986: + case 987: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5180 +//line sql.y:5184 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 987: + case 988: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5184 +//line sql.y:5188 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 988: + case 989: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5188 +//line sql.y:5192 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 989: + case 990: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5192 +//line sql.y:5196 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 990: + case 991: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5196 +//line sql.y:5200 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 991: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5202 - { - } case 992: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5205 +//line sql.y:5206 { } case 993: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL Expr -//line sql.y:5211 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:5209 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } - yyVAL.union = yyLOCAL case 994: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5215 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 995: @@ -16119,7 +16132,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5219 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 996: @@ -16127,7 +16140,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5223 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 997: @@ -16135,7 +16148,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5227 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 998: @@ -16143,7 +16156,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5231 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 999: @@ -16151,7 +16164,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5235 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1000: @@ -16159,7 +16172,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5239 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1001: @@ -16167,7 +16180,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5243 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1002: @@ -16175,7 +16188,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5247 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1003: @@ -16183,7 +16196,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5251 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1004: @@ -16191,21 +16204,21 @@ yydefault: var yyLOCAL Expr //line sql.y:5255 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1005: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5259 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1006: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5265 +//line sql.y:5263 { yyLOCAL = yyDollar[1].exprUnion() } @@ -16235,19 +16248,19 @@ yydefault: } yyVAL.union = yyLOCAL case 1010: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5281 { - yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1011: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5285 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL case 1012: @@ -16263,15 +16276,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5293 { - yyLOCAL = yyDollar[1].variableUnion() + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1014: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5297 { - yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? + yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL case 1015: @@ -16279,7 +16292,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5301 { - yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL case 1016: @@ -16287,7 +16300,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5305 { - yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1017: @@ -16295,15 +16308,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5309 { - yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1018: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5313 { - yyLOCAL = yyDollar[1].subqueryUnion() + yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1019: @@ -16311,23 +16324,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5317 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL case 1020: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5321 { - yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1021: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5325 { - yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} + yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL case 1022: @@ -16335,15 +16348,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5329 { - yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} + yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL case 1023: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:5333 { - yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} + yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL case 1024: @@ -16351,13 +16364,21 @@ yydefault: var yyLOCAL Expr //line sql.y:5337 { - yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} + yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1025: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5341 + { + yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} + } + yyVAL.union = yyLOCAL + case 1026: + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL Expr +//line sql.y:5345 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -16366,18 +16387,18 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1026: + case 1027: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5349 +//line sql.y:5353 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1027: + case 1028: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5353 +//line sql.y:5357 { // INTERVAL can trigger a shift / reduce conflict. We want // to shift here for the interval rule. In case we do have @@ -16386,83 +16407,75 @@ yydefault: yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1028: + case 1029: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5361 +//line sql.y:5365 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1029: + case 1030: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5365 +//line sql.y:5369 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1031: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5369 +//line sql.y:5373 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1032: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5375 +//line sql.y:5379 { yyLOCAL = &IntervalExpr{Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].identifierCI.String()} } yyVAL.union = yyLOCAL - case 1032: + case 1033: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5381 +//line sql.y:5385 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1033: + case 1034: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5385 +//line sql.y:5389 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1034: + case 1035: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5391 +//line sql.y:5395 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1035: + case 1036: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5395 +//line sql.y:5399 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1036: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL TrimType -//line sql.y:5401 - { - yyLOCAL = BothTrimType - } - yyVAL.union = yyLOCAL case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType //line sql.y:5405 { - yyLOCAL = LeadingTrimType + yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL case 1038: @@ -16470,15 +16483,15 @@ yydefault: var yyLOCAL TrimType //line sql.y:5409 { - yyLOCAL = TrailingTrimType + yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL case 1039: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL FrameUnitType -//line sql.y:5415 + var yyLOCAL TrimType +//line sql.y:5413 { - yyLOCAL = FrameRowsType + yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL case 1040: @@ -16486,15 +16499,15 @@ yydefault: var yyLOCAL FrameUnitType //line sql.y:5419 { - yyLOCAL = FrameRangeType + yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL case 1041: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5426 + var yyLOCAL FrameUnitType +//line sql.y:5423 { - yyLOCAL = CumeDistExprType + yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL case 1042: @@ -16502,7 +16515,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5430 { - yyLOCAL = DenseRankExprType + yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL case 1043: @@ -16510,7 +16523,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5434 { - yyLOCAL = PercentRankExprType + yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL case 1044: @@ -16518,7 +16531,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5438 { - yyLOCAL = RankExprType + yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL case 1045: @@ -16526,15 +16539,15 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5442 { - yyLOCAL = RowNumberExprType + yyLOCAL = RankExprType } yyVAL.union = yyLOCAL case 1046: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL *FramePoint -//line sql.y:5448 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL ArgumentLessWindowExprType +//line sql.y:5446 { - yyLOCAL = &FramePoint{Type: CurrentRowType} + yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL case 1047: @@ -16542,7 +16555,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5452 { - yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} + yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL case 1048: @@ -16550,7 +16563,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5456 { - yyLOCAL = &FramePoint{Type: UnboundedFollowingType} + yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL case 1049: @@ -16558,7 +16571,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5460 { - yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} + yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL case 1050: @@ -16566,15 +16579,15 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5464 { - yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} + yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL case 1051: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Expr -//line sql.y:5470 + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL *FramePoint +//line sql.y:5468 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL case 1052: @@ -16586,281 +16599,281 @@ yydefault: } yyVAL.union = yyLOCAL case 1053: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Expr +//line sql.y:5478 + { + yyLOCAL = yyDollar[1].exprUnion() + } + yyVAL.union = yyLOCAL + case 1054: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5479 +//line sql.y:5483 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1054: + case 1055: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5483 +//line sql.y:5487 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1055: + case 1056: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5489 +//line sql.y:5493 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1056: + case 1057: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5493 +//line sql.y:5497 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1058: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5498 +//line sql.y:5502 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1058: + case 1059: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5502 +//line sql.y:5506 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1059: + case 1060: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5507 +//line sql.y:5511 { } - case 1060: + case 1061: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5510 +//line sql.y:5514 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1061: + case 1062: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5516 +//line sql.y:5520 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1062: + case 1063: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5522 +//line sql.y:5526 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1063: + case 1064: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5526 +//line sql.y:5530 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1064: + case 1065: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5531 +//line sql.y:5535 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1066: + case 1067: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5538 +//line sql.y:5542 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1067: + case 1068: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5544 +//line sql.y:5548 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1068: + case 1069: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5548 +//line sql.y:5552 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1069: + case 1070: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5554 +//line sql.y:5558 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1070: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5558 +//line sql.y:5562 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1071: + case 1072: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5564 +//line sql.y:5568 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1072: + case 1073: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5568 +//line sql.y:5572 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1073: + case 1074: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5573 +//line sql.y:5577 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1075: + case 1076: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5580 +//line sql.y:5584 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1076: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5586 +//line sql.y:5590 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1077: + case 1078: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5590 +//line sql.y:5594 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1078: + case 1079: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5596 +//line sql.y:5600 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1079: + case 1080: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5602 +//line sql.y:5606 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1080: + case 1081: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5606 +//line sql.y:5610 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1081: + case 1082: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5612 +//line sql.y:5616 { yyVAL.str = "" } - case 1082: + case 1083: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5616 +//line sql.y:5620 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1083: + case 1084: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5622 +//line sql.y:5626 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1084: + case 1085: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5626 +//line sql.y:5630 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1085: + case 1086: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5633 +//line sql.y:5637 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1086: + case 1087: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5637 +//line sql.y:5641 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1087: + case 1088: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5641 +//line sql.y:5645 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1088: + case 1089: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5645 +//line sql.y:5649 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1089: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ComparisonExprOperator -//line sql.y:5651 - { - yyLOCAL = EqualOp - } - yyVAL.union = yyLOCAL case 1090: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator //line sql.y:5655 { - yyLOCAL = LessThanOp + yyLOCAL = EqualOp } yyVAL.union = yyLOCAL case 1091: @@ -16868,7 +16881,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5659 { - yyLOCAL = GreaterThanOp + yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL case 1092: @@ -16876,7 +16889,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5663 { - yyLOCAL = LessEqualOp + yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL case 1093: @@ -16884,7 +16897,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5667 { - yyLOCAL = GreaterEqualOp + yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL case 1094: @@ -16892,7 +16905,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5671 { - yyLOCAL = NotEqualOp + yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL case 1095: @@ -16900,15 +16913,15 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5675 { - yyLOCAL = NullSafeEqualOp + yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL case 1096: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ColTuple -//line sql.y:5681 + var yyLOCAL ComparisonExprOperator +//line sql.y:5679 { - yyLOCAL = yyDollar[1].valTupleUnion() + yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL case 1097: @@ -16916,159 +16929,159 @@ yydefault: var yyLOCAL ColTuple //line sql.y:5685 { - yyLOCAL = yyDollar[1].subqueryUnion() + yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL case 1098: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple //line sql.y:5689 + { + yyLOCAL = yyDollar[1].subqueryUnion() + } + yyVAL.union = yyLOCAL + case 1099: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL ColTuple +//line sql.y:5693 { yyLOCAL = ListArg(yyDollar[1].str[2:]) bindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1099: + case 1100: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5696 +//line sql.y:5700 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1100: + case 1101: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5702 +//line sql.y:5706 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1101: + case 1102: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5706 +//line sql.y:5710 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1102: + case 1103: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5716 +//line sql.y:5720 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1103: + case 1104: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5720 +//line sql.y:5724 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1104: - yyDollar = yyS[yypt-4 : yypt+1] - var yyLOCAL Expr -//line sql.y:5730 - { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} - } - yyVAL.union = yyLOCAL case 1105: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5734 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1106: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5738 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1107: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5742 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1108: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5746 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1109: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5750 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1110: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5754 { - yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1111: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5758 { - yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} + yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1112: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5762 { - yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} + yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL case 1113: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:5766 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} + yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL case 1114: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5777 +//line sql.y:5770 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1115: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5781 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL case 1116: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5787 +//line sql.y:5785 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1117: @@ -17076,31 +17089,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5791 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL case 1118: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5796 +//line sql.y:5795 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1119: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5800 { - yyLOCAL = &CountStar{} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1120: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5804 { - yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} + yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL case 1121: @@ -17108,7 +17121,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5808 { - yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL case 1122: @@ -17116,7 +17129,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5812 { - yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1123: @@ -17124,7 +17137,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5816 { - yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1124: @@ -17132,15 +17145,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5820 { - yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1125: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5824 { - yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1126: @@ -17148,7 +17161,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5828 { - yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1127: @@ -17156,7 +17169,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5832 { - yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1128: @@ -17164,7 +17177,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5836 { - yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1129: @@ -17172,7 +17185,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5840 { - yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1130: @@ -17180,7 +17193,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5844 { - yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1131: @@ -17188,7 +17201,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5848 { - yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1132: @@ -17196,7 +17209,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5852 { - yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1133: @@ -17204,7 +17217,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5856 { - yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1134: @@ -17212,15 +17225,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5860 { - yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1135: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5864 { - yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} + yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1136: @@ -17228,7 +17241,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5868 { - yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} + yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL case 1137: @@ -17236,31 +17249,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5872 { - yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} + yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1138: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5876 { - yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} + yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1139: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5880 { - yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} + yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1140: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5884 { - yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1141: @@ -17268,7 +17281,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5888 { - yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1142: @@ -17276,7 +17289,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5892 { - yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1143: @@ -17284,7 +17297,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5896 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1144: @@ -17292,23 +17305,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5900 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1145: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5904 { - yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1146: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:5908 { - yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL case 1147: @@ -17316,15 +17329,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5912 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} + yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1148: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5916 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1149: @@ -17332,7 +17345,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5920 { - yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL case 1150: @@ -17340,23 +17353,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5924 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1151: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5928 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1152: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5932 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1153: @@ -17364,15 +17377,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5936 { - yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1154: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5940 { - yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1155: @@ -17380,31 +17393,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5944 { - yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1156: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5948 { - yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} + yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1157: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5952 { - yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL case 1158: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5956 { - yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1159: @@ -17412,15 +17425,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5960 { - yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1160: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5964 { - yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} + yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1161: @@ -17428,7 +17441,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5968 { - yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} + yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1162: @@ -17436,47 +17449,47 @@ yydefault: var yyLOCAL Expr //line sql.y:5972 { - yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1163: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5976 { - yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} + yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1164: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5980 { - yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} + yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL case 1165: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5984 { - yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL case 1166: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5988 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1167: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5992 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1168: @@ -17484,39 +17497,39 @@ yydefault: var yyLOCAL Expr //line sql.y:5996 { - yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1169: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6000 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} + yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1170: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6004 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} + yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1171: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:6008 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} + yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL case 1172: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:6012 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1173: @@ -17524,23 +17537,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6016 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1174: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6020 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1175: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6024 { - yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1176: @@ -17548,7 +17561,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6028 { - yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1177: @@ -17556,7 +17569,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6032 { - yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1178: @@ -17564,15 +17577,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6036 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1179: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6040 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1180: @@ -17580,7 +17593,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6044 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1181: @@ -17588,7 +17601,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6048 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1182: @@ -17596,7 +17609,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6052 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1183: @@ -17604,7 +17617,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6056 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1184: @@ -17612,7 +17625,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6060 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1185: @@ -17620,7 +17633,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6064 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1186: @@ -17628,7 +17641,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6068 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1187: @@ -17636,7 +17649,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6072 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1188: @@ -17644,15 +17657,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6076 { - yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1189: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6080 { - yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} + yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1190: @@ -17660,55 +17673,55 @@ yydefault: var yyLOCAL Expr //line sql.y:6084 { - yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} + yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1191: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6088 { - yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL case 1192: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6092 { - yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} + yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL case 1193: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:6096 { - yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} + yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL case 1194: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6100 { - yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL case 1195: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6104 { - yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} + yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1200: - yyDollar = yyS[yypt-1 : yypt+1] + case 1196: + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6114 +//line sql.y:6108 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL case 1201: @@ -17716,7 +17729,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6118 { - yyLOCAL = NewIntLiteral(yyDollar[1].str) + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1202: @@ -17724,296 +17737,296 @@ yydefault: var yyLOCAL Expr //line sql.y:6122 { - yyLOCAL = yyDollar[1].variableUnion() + yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL case 1203: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:6126 + { + yyLOCAL = yyDollar[1].variableUnion() + } + yyVAL.union = yyLOCAL + case 1204: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Expr +//line sql.y:6130 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1204: + case 1205: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6132 +//line sql.y:6136 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1205: + case 1206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6136 +//line sql.y:6140 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1206: + case 1207: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6142 +//line sql.y:6146 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1207: + case 1208: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6146 +//line sql.y:6150 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1208: + case 1209: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6150 +//line sql.y:6154 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1210: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6154 +//line sql.y:6158 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1211: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6158 +//line sql.y:6162 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1211: + case 1212: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6163 +//line sql.y:6167 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1213: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6167 +//line sql.y:6171 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1214: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6171 +//line sql.y:6175 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1215: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6175 +//line sql.y:6179 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1216: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6179 +//line sql.y:6183 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1217: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6183 +//line sql.y:6187 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1218: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6188 +//line sql.y:6192 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1219: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6192 +//line sql.y:6196 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1219: + case 1220: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6196 +//line sql.y:6200 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1221: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6200 +//line sql.y:6204 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1221: + case 1222: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6207 +//line sql.y:6211 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1223: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6211 +//line sql.y:6215 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1224: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6217 +//line sql.y:6221 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1225: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6221 +//line sql.y:6225 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1226: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6225 +//line sql.y:6229 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1226: + case 1227: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6229 +//line sql.y:6233 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1227: + case 1228: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6235 +//line sql.y:6239 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1228: + case 1229: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6239 +//line sql.y:6243 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1230: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6243 +//line sql.y:6247 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1230: + case 1231: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6247 +//line sql.y:6251 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1231: + case 1232: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6251 +//line sql.y:6255 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1232: + case 1233: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6255 +//line sql.y:6259 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1234: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6259 +//line sql.y:6263 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1234: + case 1235: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6264 +//line sql.y:6268 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1235: + case 1236: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6268 +//line sql.y:6272 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1236: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6274 - { - } case 1237: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL IntervalTypes -//line sql.y:6276 +//line sql.y:6278 { - yyLOCAL = IntervalDayHour } - yyVAL.union = yyLOCAL case 1238: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes //line sql.y:6280 { - yyLOCAL = IntervalDayMicrosecond + yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL case 1239: @@ -18021,7 +18034,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6284 { - yyLOCAL = IntervalDayMinute + yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL case 1240: @@ -18029,7 +18042,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6288 { - yyLOCAL = IntervalDaySecond + yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL case 1241: @@ -18037,7 +18050,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6292 { - yyLOCAL = IntervalHourMicrosecond + yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL case 1242: @@ -18045,7 +18058,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6296 { - yyLOCAL = IntervalHourMinute + yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL case 1243: @@ -18053,7 +18066,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6300 { - yyLOCAL = IntervalHourSecond + yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL case 1244: @@ -18061,7 +18074,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6304 { - yyLOCAL = IntervalMinuteMicrosecond + yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL case 1245: @@ -18069,7 +18082,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6308 { - yyLOCAL = IntervalMinuteSecond + yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL case 1246: @@ -18077,7 +18090,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6312 { - yyLOCAL = IntervalSecondMicrosecond + yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL case 1247: @@ -18085,15 +18098,15 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6316 { - yyLOCAL = IntervalYearMonth + yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL case 1248: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6322 +//line sql.y:6320 { - yyLOCAL = IntervalDay + yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL case 1249: @@ -18101,7 +18114,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6326 { - yyLOCAL = IntervalWeek + yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL case 1250: @@ -18109,7 +18122,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6330 { - yyLOCAL = IntervalHour + yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL case 1251: @@ -18117,7 +18130,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6334 { - yyLOCAL = IntervalMinute + yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL case 1252: @@ -18125,7 +18138,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6338 { - yyLOCAL = IntervalMonth + yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL case 1253: @@ -18133,7 +18146,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6342 { - yyLOCAL = IntervalQuarter + yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL case 1254: @@ -18141,7 +18154,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6346 { - yyLOCAL = IntervalSecond + yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL case 1255: @@ -18149,7 +18162,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6350 { - yyLOCAL = IntervalMicrosecond + yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL case 1256: @@ -18157,19 +18170,19 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6354 { - yyLOCAL = IntervalYear + yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1259: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL Expr -//line sql.y:6364 + case 1257: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL IntervalTypes +//line sql.y:6358 { - yyLOCAL = nil + yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL case 1260: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr //line sql.y:6368 { @@ -18177,11 +18190,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1261: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:6372 { - yyLOCAL = NewIntLiteral(yyDollar[2].str) + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1262: @@ -18189,16 +18202,16 @@ yydefault: var yyLOCAL Expr //line sql.y:6376 { - yyLOCAL = NewArgument(yyDollar[2].str[1:]) - bindVariable(yylex, yyDollar[2].str[1:]) + yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 1263: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6387 +//line sql.y:6380 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = NewArgument(yyDollar[2].str[1:]) + bindVariable(yylex, yyDollar[2].str[1:]) } yyVAL.union = yyLOCAL case 1264: @@ -18206,7 +18219,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6391 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1265: @@ -18214,7 +18227,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6395 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1266: @@ -18222,7 +18235,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6399 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1267: @@ -18230,60 +18243,62 @@ yydefault: var yyLOCAL Expr //line sql.y:6403 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1268: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL MatchExprOption -//line sql.y:6409 + yyDollar = yyS[yypt-4 : yypt+1] + var yyLOCAL Expr +//line sql.y:6407 { - yyLOCAL = NoOption + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1269: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6413 { - yyLOCAL = BooleanModeOpt + yyLOCAL = NoOption } yyVAL.union = yyLOCAL case 1270: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6417 { - yyLOCAL = NaturalLanguageModeOpt + yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL case 1271: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6421 { - yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt + yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL case 1272: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6425 { - yyLOCAL = QueryExpansionOpt + yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL case 1273: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6431 + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL MatchExprOption +//line sql.y:6429 { - yyVAL.str = string(yyDollar[1].identifierCI.String()) + yyLOCAL = QueryExpansionOpt } + yyVAL.union = yyLOCAL case 1274: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:6435 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].identifierCI.String()) } case 1275: yyDollar = yyS[yypt-1 : yypt+1] @@ -18292,19 +18307,17 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1276: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL *ConvertType -//line sql.y:6445 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6443 { - yyLOCAL = nil + yyVAL.str = string(yyDollar[1].str) } - yyVAL.union = yyLOCAL case 1277: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6449 { - yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1278: @@ -18316,35 +18329,35 @@ yydefault: } yyVAL.union = yyLOCAL case 1279: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6459 +//line sql.y:6457 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL case 1280: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6463 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1281: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6467 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL case 1282: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6471 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1283: @@ -18352,37 +18365,37 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6475 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} - yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length - yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1284: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6481 +//line sql.y:6479 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length + yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL case 1285: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6485 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1286: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6489 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1287: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6493 { @@ -18394,19 +18407,19 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6497 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1289: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6501 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1290: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6505 { @@ -18418,15 +18431,15 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6509 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1292: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6513 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1293: @@ -18438,140 +18451,148 @@ yydefault: } yyVAL.union = yyLOCAL case 1294: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL *ConvertType +//line sql.y:6521 + { + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + } + yyVAL.union = yyLOCAL + case 1295: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:6523 +//line sql.y:6527 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1295: + case 1296: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:6527 +//line sql.y:6531 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1296: + case 1297: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6532 +//line sql.y:6536 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1297: + case 1298: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6536 +//line sql.y:6540 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1298: + case 1299: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6541 +//line sql.y:6545 { yyVAL.str = string("") } - case 1299: + case 1300: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6545 +//line sql.y:6549 { yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str) } - case 1300: + case 1301: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:6551 +//line sql.y:6555 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1301: + case 1302: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6555 +//line sql.y:6559 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1302: + case 1303: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:6561 +//line sql.y:6565 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1303: + case 1304: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6566 +//line sql.y:6570 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1304: + case 1305: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6570 +//line sql.y:6574 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1305: + case 1306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6576 +//line sql.y:6580 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1306: + case 1307: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6580 +//line sql.y:6584 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1307: + case 1308: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:6584 +//line sql.y:6588 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1308: + case 1309: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:6588 +//line sql.y:6592 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1309: + case 1310: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6594 +//line sql.y:6598 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1310: + case 1311: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6598 +//line sql.y:6602 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1311: + case 1312: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6604 +//line sql.y:6608 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -18581,219 +18602,211 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1312: + case 1313: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6613 +//line sql.y:6617 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1313: + case 1314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6617 +//line sql.y:6621 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1314: + case 1315: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:6623 +//line sql.y:6627 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1315: + case 1316: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:6627 +//line sql.y:6631 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1316: + case 1317: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6632 +//line sql.y:6636 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1317: + case 1318: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6636 +//line sql.y:6640 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1318: + case 1319: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:6642 +//line sql.y:6646 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1319: + case 1320: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6648 +//line sql.y:6652 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1320: + case 1321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6652 +//line sql.y:6656 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1321: + case 1322: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6657 +//line sql.y:6661 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1322: + case 1323: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6661 +//line sql.y:6665 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1323: + case 1324: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6666 +//line sql.y:6670 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1324: + case 1325: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6670 +//line sql.y:6674 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1325: + case 1326: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6676 +//line sql.y:6680 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1326: + case 1327: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6682 +//line sql.y:6686 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1327: + case 1328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6686 +//line sql.y:6690 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1328: + case 1329: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:6692 +//line sql.y:6696 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1329: + case 1330: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6697 +//line sql.y:6701 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1330: + case 1331: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6701 +//line sql.y:6705 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1331: + case 1332: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6705 +//line sql.y:6709 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1332: + case 1333: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:6710 +//line sql.y:6714 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1333: + case 1334: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:6714 +//line sql.y:6718 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1334: + case 1335: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:6720 +//line sql.y:6724 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1336: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6724 +//line sql.y:6728 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1336: + case 1337: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6728 +//line sql.y:6732 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1337: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL []AlterOption -//line sql.y:6733 - { - yyLOCAL = nil - } - yyVAL.union = yyLOCAL case 1338: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption //line sql.y:6737 { - yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1339: @@ -18805,11 +18818,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1340: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption //line sql.y:6745 { - yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} + yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL case 1341: @@ -18821,11 +18834,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1342: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL AlterOption -//line sql.y:6756 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL []AlterOption +//line sql.y:6753 { - yyLOCAL = &LockOption{Type: DefaultType} + yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL case 1343: @@ -18833,7 +18846,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6760 { - yyLOCAL = &LockOption{Type: NoneType} + yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL case 1344: @@ -18841,7 +18854,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6764 { - yyLOCAL = &LockOption{Type: SharedType} + yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL case 1345: @@ -18849,15 +18862,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6768 { - yyLOCAL = &LockOption{Type: ExclusiveType} + yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6774 +//line sql.y:6772 { - yyLOCAL = AlgorithmValue(yyDollar[3].str) + yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL case 1347: @@ -18885,16 +18898,18 @@ yydefault: } yyVAL.union = yyLOCAL case 1350: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6791 + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL AlterOption +//line sql.y:6790 { - yyVAL.str = "" + yyLOCAL = AlgorithmValue(yyDollar[3].str) } + yyVAL.union = yyLOCAL case 1351: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6795 { - yyVAL.str = string(yyDollar[3].str) + yyVAL.str = "" } case 1352: yyDollar = yyS[yypt-3 : yypt+1] @@ -18909,22 +18924,22 @@ yydefault: yyVAL.str = string(yyDollar[3].str) } case 1354: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6808 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:6807 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[3].str) } case 1355: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6812 { - yyVAL.str = yyDollar[3].str + yyVAL.str = "" } case 1356: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6818 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:6816 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = yyDollar[3].str } case 1357: yyDollar = yyS[yypt-1 : yypt+1] @@ -18933,28 +18948,28 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1358: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6827 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6826 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].str) } case 1359: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6831 { - yyVAL.str = yyDollar[2].str + yyVAL.str = "" } case 1360: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6836 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:6835 { - yyVAL.str = "cascaded" + yyVAL.str = yyDollar[2].str } case 1361: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6840 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = "cascaded" } case 1362: yyDollar = yyS[yypt-1 : yypt+1] @@ -18963,45 +18978,51 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1363: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6848 + { + yyVAL.str = string(yyDollar[1].str) + } + case 1364: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:6849 +//line sql.y:6853 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1364: + case 1365: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6853 +//line sql.y:6857 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1365: + case 1366: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:6859 +//line sql.y:6863 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1366: + case 1367: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6865 +//line sql.y:6869 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1367: + case 1368: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:6871 +//line sql.y:6875 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -19009,369 +19030,369 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1368: + case 1369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6880 +//line sql.y:6884 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1369: + case 1370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6884 +//line sql.y:6888 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1370: + case 1371: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6889 +//line sql.y:6893 { yyVAL.str = "" } - case 1371: + case 1372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6893 +//line sql.y:6897 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1372: + case 1373: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:6899 +//line sql.y:6903 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1373: + case 1374: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:6903 +//line sql.y:6907 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1374: + case 1375: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6909 +//line sql.y:6913 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1375: + case 1376: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6913 +//line sql.y:6917 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1376: + case 1377: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6917 +//line sql.y:6921 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1377: + case 1378: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6922 +//line sql.y:6926 { yyVAL.str = "" } - case 1378: + case 1379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6926 +//line sql.y:6930 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1379: + case 1380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6930 +//line sql.y:6934 { yyVAL.str = " format text" + yyDollar[3].str } - case 1380: + case 1381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6935 +//line sql.y:6939 { yyVAL.str = "" } - case 1381: + case 1382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6939 +//line sql.y:6943 { yyVAL.str = " header" } - case 1382: + case 1383: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6944 +//line sql.y:6948 { yyVAL.str = "" } - case 1383: + case 1384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6948 +//line sql.y:6952 { yyVAL.str = " manifest on" } - case 1384: + case 1385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6952 +//line sql.y:6956 { yyVAL.str = " manifest off" } - case 1385: + case 1386: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6957 +//line sql.y:6961 { yyVAL.str = "" } - case 1386: + case 1387: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6961 +//line sql.y:6965 { yyVAL.str = " overwrite on" } - case 1387: + case 1388: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6965 +//line sql.y:6969 { yyVAL.str = " overwrite off" } - case 1388: + case 1389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6971 +//line sql.y:6975 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1389: + case 1390: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6976 +//line sql.y:6980 { yyVAL.str = "" } - case 1390: + case 1391: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6980 +//line sql.y:6984 { yyVAL.str = " lines" + yyDollar[2].str } - case 1391: + case 1392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6986 +//line sql.y:6990 { yyVAL.str = yyDollar[1].str } - case 1392: + case 1393: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6990 +//line sql.y:6994 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1393: + case 1394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6996 +//line sql.y:7000 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1394: + case 1395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7000 +//line sql.y:7004 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1395: + case 1396: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7005 +//line sql.y:7009 { yyVAL.str = "" } - case 1396: + case 1397: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7009 +//line sql.y:7013 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1397: + case 1398: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7015 +//line sql.y:7019 { yyVAL.str = yyDollar[1].str } - case 1398: + case 1399: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7019 +//line sql.y:7023 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1399: + case 1400: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7025 +//line sql.y:7029 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1400: + case 1401: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7029 +//line sql.y:7033 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1401: + case 1402: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7033 +//line sql.y:7037 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1402: + case 1403: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7038 +//line sql.y:7042 { yyVAL.str = "" } - case 1403: + case 1404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7042 +//line sql.y:7046 { yyVAL.str = " optionally" } - case 1404: + case 1405: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7055 +//line sql.y:7059 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1405: + case 1406: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7059 +//line sql.y:7063 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1406: + case 1407: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7063 +//line sql.y:7067 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1407: + case 1408: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7067 +//line sql.y:7071 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1408: + case 1409: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7071 +//line sql.y:7075 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1409: + case 1410: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7077 +//line sql.y:7081 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1410: + case 1411: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7081 +//line sql.y:7085 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1411: + case 1412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7085 +//line sql.y:7089 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1412: + case 1413: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7089 +//line sql.y:7093 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1413: + case 1414: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7094 +//line sql.y:7098 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1414: + case 1415: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7098 +//line sql.y:7102 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1415: + case 1416: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7104 +//line sql.y:7108 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1416: + case 1417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7108 +//line sql.y:7112 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1417: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7114 +//line sql.y:7118 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1418: + case 1419: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7118 +//line sql.y:7122 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1419: + case 1420: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7124 +//line sql.y:7128 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1420: + case 1421: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7128 +//line sql.y:7132 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1421: + case 1422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7133 +//line sql.y:7137 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -19380,283 +19401,277 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1422: + case 1423: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7143 +//line sql.y:7147 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1423: + case 1424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7147 +//line sql.y:7151 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1424: + case 1425: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7153 +//line sql.y:7157 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1425: + case 1426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SetExprs -//line sql.y:7159 +//line sql.y:7163 { yyLOCAL = SetExprs{yyDollar[1].setExprUnion()} } yyVAL.union = yyLOCAL - case 1426: + case 1427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7163 +//line sql.y:7167 { yySLICE := (*SetExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].setExprUnion()) } - case 1427: + case 1428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7169 +//line sql.y:7173 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("on")} } yyVAL.union = yyLOCAL - case 1428: + case 1429: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7173 +//line sql.y:7177 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("off")} } yyVAL.union = yyLOCAL - case 1429: + case 1430: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7177 +//line sql.y:7181 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1430: + case 1431: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7181 +//line sql.y:7185 { yyLOCAL = &SetExpr{Var: NewSetVariable(string(yyDollar[1].str), SessionScope), Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1431: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7187 +//line sql.y:7191 { yyLOCAL = NewSetVariable(string(yyDollar[1].str), SessionScope) } yyVAL.union = yyLOCAL - case 1432: + case 1433: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7191 +//line sql.y:7195 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1433: + case 1434: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Variable -//line sql.y:7195 +//line sql.y:7199 { yyLOCAL = NewSetVariable(string(yyDollar[2].str), yyDollar[1].scopeUnion()) } yyVAL.union = yyLOCAL - case 1435: + case 1436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7202 +//line sql.y:7206 { yyVAL.str = "charset" } - case 1438: + case 1439: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7212 +//line sql.y:7216 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1439: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7216 +//line sql.y:7220 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1440: + case 1441: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7220 +//line sql.y:7224 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1443: + case 1444: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7229 +//line sql.y:7233 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1444: + case 1445: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7231 +//line sql.y:7235 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1445: + case 1446: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7234 +//line sql.y:7238 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1446: + case 1447: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7236 +//line sql.y:7240 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1447: + case 1448: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7239 +//line sql.y:7243 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1448: + case 1449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7241 +//line sql.y:7245 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1449: + case 1450: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7244 +//line sql.y:7248 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1450: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7246 +//line sql.y:7250 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1451: + case 1452: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7249 +//line sql.y:7253 { yyVAL.empty = struct{}{} } - case 1452: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7251 +//line sql.y:7255 { yyVAL.empty = struct{}{} } - case 1453: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7253 +//line sql.y:7257 { yyVAL.empty = struct{}{} } - case 1454: + case 1455: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7257 +//line sql.y:7261 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1455: + case 1456: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7262 +//line sql.y:7266 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1456: + case 1457: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7266 +//line sql.y:7270 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1457: + case 1458: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7271 +//line sql.y:7275 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1458: + case 1459: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7273 +//line sql.y:7277 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1459: + case 1460: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7277 +//line sql.y:7281 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1460: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7283 - { - yyVAL.identifierCI = yyDollar[1].identifierCI - } case 1461: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:7287 { - yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) + yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1463: + case 1462: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7294 +//line sql.y:7291 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 1464: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7300 +//line sql.y:7298 { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 1465: yyDollar = yyS[yypt-1 : yypt+1] @@ -19665,52 +19680,52 @@ yydefault: yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } case 1466: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:7308 + { + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + } + case 1467: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7310 +//line sql.y:7314 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1467: + case 1468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7314 +//line sql.y:7318 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1469: + case 1470: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7321 +//line sql.y:7325 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 2013: + case 2014: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7891 +//line sql.y:7895 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 2014: + case 2015: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7900 +//line sql.y:7904 { decNesting(yylex) } - case 2015: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7905 - { - skipToEnd(yylex) - } case 2016: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7910 +//line sql.y:7909 { skipToEnd(yylex) } case 2017: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:7914 { skipToEnd(yylex) @@ -19721,6 +19736,12 @@ yydefault: { skipToEnd(yylex) } + case 2019: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:7922 + { + skipToEnd(yylex) + } } goto yystack /* stack new state and value */ } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 7e9ba058593..b1600544b13 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -4057,6 +4057,10 @@ show_statement: { $$ = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: $3}} } +| SHOW VITESS_THROTTLER STATUS + { + $$ = &ShowThrottlerStatus{} + } | SHOW VSCHEMA TABLES { $$ = &Show{&ShowBasic{Command: VschemaTables}} From 02fc81842cfb016cdebc1af95d18eced170fdbd4 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 13:09:15 +0300 Subject: [PATCH 09/78] vtgate: support 'show vitess_throttler status' command Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/builder.go | 2 ++ go/vt/vtgate/planbuilder/throttler.go | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index beda4309da8..ae0ab777a46 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -244,6 +244,8 @@ func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars * return buildShowThrottledAppsPlan(query, vschema) case *sqlparser.AlterThrottler: return buildAlterThrottlerPlan(query, vschema) + case *sqlparser.ShowThrottlerStatus: + return buildShowThrottlerStatusPlan(query, vschema) case *sqlparser.AlterVschema: return buildVSchemaDDLPlan(stmt, vschema) case *sqlparser.Use: diff --git a/go/vt/vtgate/planbuilder/throttler.go b/go/vt/vtgate/planbuilder/throttler.go index 724955fc928..d4f02c39996 100644 --- a/go/vt/vtgate/planbuilder/throttler.go +++ b/go/vt/vtgate/planbuilder/throttler.go @@ -49,6 +49,30 @@ func buildShowThrottledAppsPlan(query string, vschema plancontext.VSchema) (*pla }), nil } +func buildShowThrottlerStatusPlan(query string, vschema plancontext.VSchema) (*planResult, error) { + dest, ks, tabletType, err := vschema.TargetDestination("") + if err != nil { + return nil, err + } + if ks == nil { + return nil, vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.NoDB, "No database selected: use keyspace<:shard><@type> or keyspace<[range]><@type> (<> are optional)") + } + + if tabletType != topodatapb.TabletType_PRIMARY { + return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "SHOW VITESS_THROTTLER STATUS works only on primary tablet") + } + + if dest == nil { + dest = key.DestinationAllShards{} + } + + return newPlanResult(&engine.Send{ + Keyspace: ks, + TargetDestination: dest, + Query: query, + }), nil +} + func buildAlterThrottlerPlan(query string, vschema plancontext.VSchema) (*planResult, error) { dest, ks, tabletType, err := vschema.TargetDestination("") if err != nil { From 5030be68be14f855297d02de558fce4b63fca5f8 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 13:25:16 +0300 Subject: [PATCH 10/78] implement SHOW VITESS_THROTTLER STATUS Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/planbuilder/permission.go | 3 +- .../vttablet/tabletserver/planbuilder/plan.go | 4 +++ go/vt/vttablet/tabletserver/query_executor.go | 36 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission.go b/go/vt/vttablet/tabletserver/planbuilder/permission.go index 6d6a6fccd9c..fc348e0b8c4 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission.go @@ -56,7 +56,8 @@ func BuildPermissions(stmt sqlparser.Statement) []Permission { *sqlparser.RevertMigration, *sqlparser.ShowMigrationLogs, *sqlparser.ShowThrottledApps, - *sqlparser.AlterThrottler: + *sqlparser.AlterThrottler, + *sqlparser.ShowThrottlerStatus: permissions = []Permission{} // TODO(shlomi) what are the correct permissions here? Table is unknown case *sqlparser.Flush: for _, t := range node.TableNames { diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 190bf22813d..a2035074c6e 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -79,6 +79,7 @@ const ( PlanShowMigrationLogs PlanShowThrottledApps PlanAlterThrottler + PlanShowThrottlerStatus NumPlans ) @@ -114,6 +115,7 @@ var planName = []string{ "ShowMigrationLogs", "ShowThrottledApps", "AlterThrottler", + "ShowThrottlerStatus", } func (pt PlanType) String() string { @@ -229,6 +231,8 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, dbNam plan, err = &Plan{PlanID: PlanShowThrottledApps, FullStmt: stmt}, nil case *sqlparser.AlterThrottler: plan, err = &Plan{PlanID: PlanAlterThrottler, FullStmt: stmt}, nil + case *sqlparser.ShowThrottlerStatus: + plan, err = &Plan{PlanID: PlanShowThrottlerStatus, FullStmt: stmt}, nil case *sqlparser.Show: plan, err = analyzeShow(stmt, dbName) case *sqlparser.OtherRead, sqlparser.Explain: diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index a7ba819c3d6..812695ec3ca 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -184,6 +184,8 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { return qre.execShowThrottledApps() case p.PlanAlterThrottler: return qre.execAlterThrottler() + case p.PlanShowThrottlerStatus: + return qre.execShowThrottlerStatus() case p.PlanSet: if qre.setting == nil { return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "[BUG] %s not allowed without setting connection", qre.query) @@ -970,6 +972,40 @@ func (qre *QueryExecutor) execAlterThrottler() (*sqltypes.Result, error) { return result, nil } +func (qre *QueryExecutor) execShowThrottlerStatus() (*sqltypes.Result, error) { + if _, ok := qre.plan.FullStmt.(*sqlparser.ShowThrottlerStatus); !ok { + return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "Expecting SHOW VITESS_THROTTLER STATUS plan") + } + var enabled int32 + if err := qre.tsv.lagThrottler.CheckIsReady(); err == nil { + enabled = 1 + } + result := &sqltypes.Result{ + Fields: []*querypb.Field{ + { + Name: "shard", + Type: sqltypes.VarChar, + }, + { + Name: "enabled", + Type: sqltypes.Int32, + }, + { + Name: "threshold", + Type: sqltypes.Float64, + }, + }, + Rows: [][]sqltypes.Value{ + { + sqltypes.NewVarChar(qre.tsv.sm.target.Shard), + sqltypes.NewInt32(enabled), + sqltypes.NewFloat64(qre.tsv.lagThrottler.MetricsThreshold.Get()), + }, + }, + } + return result, nil +} + func (qre *QueryExecutor) drainResultSetOnConn(conn *connpool.DBConn) error { more := true for more { From 9e9f2273563690bbe32cceab95af13ede1137ab0 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:10:42 +0300 Subject: [PATCH 11/78] ugly quick hack for reducing flakiness Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go index 2d7cd937cd5..606756caf9a 100644 --- a/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go +++ b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go @@ -546,7 +546,8 @@ func TestSchemaChange(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("PlannedReparentShard", "--", "--keyspace_shard", keyspaceName+"/-80", "--new_primary", shards[0].Vttablets[reparentTabletIndex].Alias) require.NoError(t, err, "failed PRS: %v", err) }) - + // TOOD(Shlomi): create a better fix below. + time.Sleep(time.Second) // quick hack to make sure the PRS has time to be identified and that the tablet changes state. t.Run("unthrottle and expect completion", func(t *testing.T) { for i := range shards { var body string From 2cbc682915c8822fe27f2f7c945656dcf282cf0c Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:24:35 +0300 Subject: [PATCH 12/78] undo hack Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go index 606756caf9a..28af1d9d7f6 100644 --- a/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go +++ b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go @@ -546,8 +546,6 @@ func TestSchemaChange(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("PlannedReparentShard", "--", "--keyspace_shard", keyspaceName+"/-80", "--new_primary", shards[0].Vttablets[reparentTabletIndex].Alias) require.NoError(t, err, "failed PRS: %v", err) }) - // TOOD(Shlomi): create a better fix below. - time.Sleep(time.Second) // quick hack to make sure the PRS has time to be identified and that the tablet changes state. t.Run("unthrottle and expect completion", func(t *testing.T) { for i := range shards { var body string From 2a8a6f9d433e5a5fc9a981e82ebd420c632e9ed9 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:24:56 +0300 Subject: [PATCH 13/78] IsEnabled() now implies IsOpen Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/throttler.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 409f27db3f5..80547dda5de 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -205,7 +205,7 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat. // CheckIsReady checks if this throttler is ready to serve. If not, it returns an error func (throttler *Throttler) CheckIsReady() error { - if throttler.isEnabled && throttler.IsOpen() { + if throttler.IsEnabled() { // all good return nil } @@ -319,12 +319,6 @@ func (throttler *Throttler) disable() { throttler.cancelEnableContext() } -func (throttler *Throttler) IsOpen() bool { - throttler.initMutex.Lock() - defer throttler.initMutex.Unlock() - return atomic.LoadInt64(&throttler.isOpen) > 0 -} - // Open opens database pool and initializes the schema func (throttler *Throttler) Open() error { throttler.initMutex.Lock() From c8480b02449d5f790b3ef2de2fb58efc15792759 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 28 Sep 2022 07:46:56 +0300 Subject: [PATCH 14/78] THRESHOLD is decimal/integer Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/ast.go | 2 +- go/vt/sqlparser/ast_clone.go | 1 + go/vt/sqlparser/ast_equals.go | 4 +- go/vt/sqlparser/ast_format.go | 4 +- go/vt/sqlparser/ast_format_fast.go | 9 +- go/vt/sqlparser/ast_rewrite.go | 5 + go/vt/sqlparser/ast_visit.go | 3 + go/vt/sqlparser/cached_size.go | 6 +- go/vt/sqlparser/parse_test.go | 6 +- go/vt/sqlparser/sql.go | 7371 ++++++++++++++-------------- go/vt/sqlparser/sql.y | 12 +- 11 files changed, 3720 insertions(+), 3703 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 52893f1c3c3..968ddf98fce 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -485,7 +485,7 @@ type ( // AlterThrottler represents a ALTER VITESS_THROTTLER statement AlterThrottler struct { Type AlterThrottlerType - Threshold string + Threshold *Literal Comments *ParsedComments } diff --git a/go/vt/sqlparser/ast_clone.go b/go/vt/sqlparser/ast_clone.go index e4758c03533..3904b2dbf36 100644 --- a/go/vt/sqlparser/ast_clone.go +++ b/go/vt/sqlparser/ast_clone.go @@ -661,6 +661,7 @@ func CloneRefOfAlterThrottler(n *AlterThrottler) *AlterThrottler { return nil } out := *n + out.Threshold = CloneRefOfLiteral(n.Threshold) out.Comments = CloneRefOfParsedComments(n.Comments) return &out } diff --git a/go/vt/sqlparser/ast_equals.go b/go/vt/sqlparser/ast_equals.go index 192ffc33279..0bceeaf79e2 100644 --- a/go/vt/sqlparser/ast_equals.go +++ b/go/vt/sqlparser/ast_equals.go @@ -1679,8 +1679,8 @@ func EqualsRefOfAlterThrottler(a, b *AlterThrottler) bool { if a == nil || b == nil { return false } - return a.Threshold == b.Threshold && - a.Type == b.Type && + return a.Type == b.Type && + EqualsRefOfLiteral(a.Threshold, b.Threshold) && EqualsRefOfParsedComments(a.Comments, b.Comments) } diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go index 069c7dc4c04..33ea044c114 100644 --- a/go/vt/sqlparser/ast_format.go +++ b/go/vt/sqlparser/ast_format.go @@ -328,14 +328,14 @@ func (node *ShowThrottledApps) Format(buf *TrackedBuffer) { // Format formats the node. func (node *AlterThrottler) Format(buf *TrackedBuffer) { - buf.astPrintf(node, "alter vitess_throttler") + buf.astPrintf(node, "alter %vvitess_throttler", node.Comments) switch node.Type { case AlterThrottlerDisableType: buf.astPrintf(node, " disable") case AlterThrottlerEnableType: buf.astPrintf(node, " enable") case AlterThrottlerParamsType: - buf.astPrintf(node, " threshold '%s'", node.Threshold) + buf.astPrintf(node, " threshold %v", node.Threshold) } } diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index 3a3d2f9b123..4790413a2d4 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -468,16 +468,17 @@ func (node *ShowThrottledApps) formatFast(buf *TrackedBuffer) { // formatFast formats the node. func (node *AlterThrottler) formatFast(buf *TrackedBuffer) { - buf.WriteString("alter vitess_throttler") + buf.WriteString("alter ") + node.Comments.formatFast(buf) + buf.WriteString("vitess_throttler") switch node.Type { case AlterThrottlerDisableType: buf.WriteString(" disable") case AlterThrottlerEnableType: buf.WriteString(" enable") case AlterThrottlerParamsType: - buf.WriteString(" threshold '") - buf.WriteString(node.Threshold) - buf.WriteByte('\'') + buf.WriteString(" threshold ") + node.Threshold.formatFast(buf) } } diff --git a/go/vt/sqlparser/ast_rewrite.go b/go/vt/sqlparser/ast_rewrite.go index 8a8d38926e7..84487cce0c3 100644 --- a/go/vt/sqlparser/ast_rewrite.go +++ b/go/vt/sqlparser/ast_rewrite.go @@ -917,6 +917,11 @@ func (a *application) rewriteRefOfAlterThrottler(parent SQLNode, node *AlterThro return true } } + if !a.rewriteRefOfLiteral(node, node.Threshold, func(newNode, parent SQLNode) { + parent.(*AlterThrottler).Threshold = newNode.(*Literal) + }) { + return false + } if !a.rewriteRefOfParsedComments(node, node.Comments, func(newNode, parent SQLNode) { parent.(*AlterThrottler).Comments = newNode.(*ParsedComments) }) { diff --git a/go/vt/sqlparser/ast_visit.go b/go/vt/sqlparser/ast_visit.go index 3aae44fda40..ffc1ecf4ce2 100644 --- a/go/vt/sqlparser/ast_visit.go +++ b/go/vt/sqlparser/ast_visit.go @@ -706,6 +706,9 @@ func VisitRefOfAlterThrottler(in *AlterThrottler, f Visit) error { if cont, err := f(in); err != nil || !cont { return err } + if err := VisitRefOfLiteral(in.Threshold, f); err != nil { + return err + } if err := VisitRefOfParsedComments(in.Comments, f); err != nil { return err } diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go index 3258e3d7837..47f66e97131 100644 --- a/go/vt/sqlparser/cached_size.go +++ b/go/vt/sqlparser/cached_size.go @@ -251,10 +251,10 @@ func (cached *AlterThrottler) CachedSize(alloc bool) int64 { } size := int64(0) if alloc { - size += int64(32) + size += int64(24) } - // field Threshold string - size += hack.RuntimeAllocSize(int64(len(cached.Threshold))) + // field Threshold *vitess.io/vitess/go/vt/sqlparser.Literal + size += cached.Threshold.CachedSize(true) // field Comments *vitess.io/vitess/go/vt/sqlparser.ParsedComments size += cached.Comments.CachedSize(true) return size diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 8a9b22ce838..f659c1a55db 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2059,7 +2059,11 @@ var ( }, { input: "alter vitess_throttler enable", }, { - input: "alter vitess_throttler threshold '2s'", + input: "alter vitess_throttler threshold 2", + }, { + input: "alter vitess_throttler threshold 2.0", + }, { + input: "alter /*vt+ any=comment */ vitess_throttler threshold 2.1", }, { input: "show vitess_throttler status", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 445a63b4214..559c0710ec6 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1369,19 +1369,19 @@ var yyExca = [...]int{ 135, 155, 176, 155, 341, 155, - -2, 507, + -2, 508, -1, 57, - 36, 757, - 238, 757, - 249, 757, - 284, 771, - 285, 771, - -2, 759, + 36, 758, + 238, 758, + 249, 758, + 284, 772, + 285, 772, + -2, 760, -1, 62, - 240, 788, - -2, 786, + 240, 789, + -2, 787, -1, 116, - 237, 1444, + 237, 1445, -2, 121, -1, 118, 1, 148, @@ -1395,37 +1395,37 @@ var yyExca = [...]int{ 135, 155, 176, 155, 341, 155, - -2, 516, + -2, 517, -1, 801, - 87, 1461, - -2, 1306, - -1, 802, 87, 1462, - 221, 1466, -2, 1307, + -1, 802, + 87, 1463, + 221, 1467, + -2, 1308, -1, 803, - 221, 1465, + 221, 1466, -2, 39, -1, 883, - 60, 857, - -2, 872, + 60, 858, + -2, 873, -1, 969, 248, 40, 253, 40, -2, 402, -1, 1055, - 1, 564, - 659, 564, + 1, 565, + 659, 565, -2, 155, -1, 1345, - 221, 1466, - -2, 1307, + 221, 1467, + -2, 1308, -1, 1493, - 60, 858, - -2, 877, - -1, 1494, 60, 859, -2, 878, + -1, 1494, + 60, 860, + -2, 879, -1, 1545, 135, 155, 176, 155, @@ -1440,11 +1440,11 @@ var yyExca = [...]int{ 253, 41, -2, 403, -1, 1991, - 221, 1470, - -2, 1464, + 221, 1471, + -2, 1465, -1, 1992, - 221, 1466, - -2, 1462, + 221, 1467, + -2, 1463, -1, 2091, 135, 155, 176, 155, @@ -1453,1003 +1453,1013 @@ var yyExca = [...]int{ -1, 2098, 26, 176, -2, 178, - -1, 2462, + -1, 2463, 78, 95, 88, 95, - -2, 936, - -1, 2530, - 634, 683, - -2, 657, - -1, 2697, - 50, 1403, - -2, 1397, - -1, 2995, + -2, 937, + -1, 2531, + 634, 684, + -2, 658, + -1, 2698, + 50, 1404, + -2, 1398, + -1, 2996, 8, 54, 19, 54, 21, 54, 89, 54, - -2, 906, - -1, 3354, - 634, 683, - -2, 671, - -1, 3442, - 23, 1822, - 33, 1822, - 177, 1822, - 260, 1822, - 321, 1822, - 322, 1822, - 323, 1822, - 324, 1822, - 325, 1822, - 326, 1822, - 327, 1822, - 329, 1822, - 330, 1822, - 331, 1822, - 332, 1822, - 333, 1822, - 334, 1822, - 335, 1822, - 336, 1822, - 337, 1822, - 338, 1822, - 339, 1822, - 340, 1822, - 342, 1822, - 344, 1822, - 345, 1822, - 346, 1822, - 347, 1822, - 348, 1822, - 349, 1822, - 350, 1822, - 351, 1822, - 352, 1822, - 355, 1822, - 356, 1822, - 357, 1822, - 358, 1822, - 359, 1822, - 361, 1822, - 362, 1822, - 363, 1822, - 364, 1822, - 505, 1822, - -2, 615, + -2, 907, + -1, 3355, + 634, 684, + -2, 672, + -1, 3443, + 23, 1823, + 33, 1823, + 177, 1823, + 260, 1823, + 321, 1823, + 322, 1823, + 323, 1823, + 324, 1823, + 325, 1823, + 326, 1823, + 327, 1823, + 329, 1823, + 330, 1823, + 331, 1823, + 332, 1823, + 333, 1823, + 334, 1823, + 335, 1823, + 336, 1823, + 337, 1823, + 338, 1823, + 339, 1823, + 340, 1823, + 342, 1823, + 344, 1823, + 345, 1823, + 346, 1823, + 347, 1823, + 348, 1823, + 349, 1823, + 350, 1823, + 351, 1823, + 352, 1823, + 355, 1823, + 356, 1823, + 357, 1823, + 358, 1823, + 359, 1823, + 361, 1823, + 362, 1823, + 363, 1823, + 364, 1823, + 505, 1823, + -2, 616, } const yyPrivate = 57344 -const yyLast = 46541 +const yyLast = 46392 var yyAct = [...]int{ - 1501, 3101, 3102, 812, 3335, 3513, 3482, 3419, 3483, 3440, - 3524, 805, 3072, 3103, 2088, 675, 2927, 1548, 3385, 804, - 1858, 2040, 2849, 3408, 2020, 2752, 2759, 3319, 2809, 771, - 3267, 2814, 39, 655, 2811, 2810, 2808, 2813, 2812, 1119, - 3317, 899, 3059, 2710, 767, 3131, 5, 2360, 2022, 2800, - 876, 802, 2656, 3307, 2713, 2394, 657, 2711, 2158, 2714, - 3136, 2960, 2966, 2828, 2829, 2591, 2044, 2767, 2456, 2986, - 1508, 766, 1471, 2060, 765, 685, 2831, 2708, 2698, 772, - 2420, 2952, 1982, 653, 2121, 2495, 2855, 2575, 2189, 2146, - 1602, 2496, 2527, 931, 2126, 2497, 157, 2076, 900, 2445, - 2065, 40, 38, 2064, 189, 2426, 1121, 189, 1495, 880, - 635, 884, 878, 2412, 2396, 641, 1953, 1873, 1854, 1096, - 2567, 2145, 2128, 1812, 2167, 189, 1649, 143, 1631, 2489, - 902, 2052, 1987, 959, 2206, 2433, 964, 1979, 98, 1537, - 189, 1517, 649, 2464, 2067, 667, 94, 1067, 1475, 1357, - 1756, 1877, 99, 1831, 1752, 1638, 938, 1285, 967, 935, - 2143, 970, 1730, 939, 2117, 641, 189, 641, 965, 966, + 1501, 3102, 3103, 812, 3336, 3514, 3483, 3420, 3484, 3441, + 3525, 805, 3073, 3104, 2088, 675, 2928, 1548, 3386, 804, + 1858, 2040, 2850, 3409, 2020, 2753, 2760, 3320, 2810, 771, + 3268, 2815, 39, 655, 2812, 2811, 2809, 2814, 2813, 1119, + 3318, 899, 3060, 2711, 767, 3132, 5, 2361, 2022, 2801, + 876, 802, 2657, 3308, 2714, 2395, 657, 2712, 2158, 2715, + 3137, 2961, 2967, 2829, 2830, 2592, 685, 2768, 2457, 2987, + 1508, 766, 1471, 2060, 765, 2832, 2044, 2709, 2699, 772, + 2421, 1982, 2953, 653, 2121, 2496, 2856, 2576, 2189, 2146, + 1602, 2497, 2126, 931, 2528, 2498, 157, 2076, 900, 2446, + 2065, 1121, 38, 2064, 189, 2427, 878, 189, 1495, 880, + 635, 884, 40, 2413, 2397, 641, 1953, 1873, 1854, 1096, + 2568, 2145, 143, 1812, 2167, 189, 1649, 2128, 964, 1631, + 902, 2206, 1987, 2052, 2490, 2434, 959, 1979, 98, 1537, + 189, 1517, 649, 2465, 2067, 667, 99, 1067, 1475, 1357, + 1756, 1877, 1285, 1831, 1752, 94, 938, 1638, 967, 935, + 970, 2143, 939, 1730, 2117, 641, 189, 641, 965, 966, 977, 2045, 1536, 1522, 662, 917, 919, 890, 1949, 1341, - 1001, 1988, 1317, 886, 885, 887, 101, 10, 79, 9, - 654, 1110, 8, 1761, 161, 121, 119, 120, 1597, 126, - 1623, 127, 1050, 888, 78, 912, 1117, 100, 2012, 644, - 87, 661, 1365, 1361, 3344, 2520, 92, 3514, 2819, 1886, - 3060, 2, 2797, 907, 911, 2160, 2161, 2162, 3370, 590, - 2160, 2816, 2550, 2549, 630, 2819, 2518, 2204, 3052, 89, - 893, 1715, 1952, 3466, 122, 1006, 3015, 93, 89, 624, - 932, 128, 2583, 89, 3371, 2584, 3366, 2017, 2018, 1819, - 89, 1818, 1817, 105, 106, 107, 630, 110, 3365, 1816, - 116, 1815, 1834, 185, 2817, 1814, 585, 645, 624, 1792, - 3461, 647, 927, 648, 879, 926, 877, 643, 2392, 980, - 957, 2817, 3106, 2694, 956, 2540, 872, 873, 874, 875, - 2823, 981, 883, 894, 2248, 3486, 948, 943, 1007, 1010, - 1011, 901, 2422, 122, 955, 954, 953, 2823, 3534, 3481, - 621, 3106, 2193, 1014, 2660, 3504, 1003, 1302, 2932, 2931, - 914, 915, 2543, 1023, 3320, 821, 822, 823, 2361, 1020, - 1021, 1022, 1286, 1025, 1026, 1027, 1028, 2191, 1824, 1031, + 1001, 1317, 887, 1988, 885, 79, 1952, 10, 9, 8, + 654, 1110, 1761, 1117, 886, 101, 161, 121, 119, 120, + 1597, 1623, 126, 127, 888, 1050, 87, 78, 644, 100, + 661, 2012, 912, 1361, 92, 3345, 2521, 3515, 2820, 1886, + 1365, 3061, 2798, 907, 911, 2160, 2161, 2162, 3371, 590, + 2160, 2817, 2551, 2550, 2204, 630, 2519, 3016, 3053, 89, + 624, 3467, 932, 2584, 1715, 1006, 122, 2820, 89, 893, + 93, 89, 128, 2585, 3372, 3367, 2249, 2017, 2018, 1819, + 89, 1818, 821, 822, 823, 630, 1817, 821, 822, 823, + 1834, 1816, 3366, 1815, 2818, 1814, 645, 1792, 647, 624, + 648, 957, 927, 3462, 2393, 926, 2695, 879, 877, 980, + 3107, 3107, 3487, 2661, 956, 2423, 2541, 3471, 948, 943, + 2824, 981, 3469, 2818, 1302, 3535, 894, 901, 1007, 1010, + 1011, 3421, 3482, 3505, 2933, 122, 955, 954, 953, 2932, + 2191, 621, 3470, 1014, 2, 2544, 1003, 3468, 2193, 2824, + 3321, 2362, 1824, 1023, 2875, 3264, 925, 769, 770, 1020, + 1021, 1022, 1286, 1025, 1026, 1027, 1028, 1502, 3263, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 2192, 3366, 606, 821, - 822, 823, 925, 769, 770, 925, 769, 770, 1502, 3105, - 604, 122, 3470, 624, 3420, 3468, 2874, 3263, 3262, 3065, - 1005, 1004, 3066, 3495, 3273, 3464, 3084, 3073, 3409, 3416, - 2186, 1286, 3272, 2137, 80, 80, 3083, 3469, 3105, 1863, - 3467, 2820, 80, 3445, 2894, 3450, 624, 1612, 2393, 624, - 601, 2557, 2558, 2748, 3349, 2048, 2131, 2582, 2820, 616, - 2257, 80, 2473, 3448, 82, 2472, 2436, 2254, 2474, 1103, - 2082, 1105, 3454, 3455, 611, 1318, 2749, 2750, 1114, 1296, - 2769, 2770, 2566, 3149, 614, 625, 1538, 3449, 1539, 3426, - 1086, 2437, 1299, 2019, 1300, 1301, 2521, 2871, 1319, 1320, - 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 1102, - 1104, 870, 89, 89, 625, 2083, 2084, 869, 3336, 1087, - 89, 2485, 1049, 3426, 3487, 2255, 1091, 1092, 1074, 1074, - 2882, 1080, 2851, 1075, 1075, 2101, 2100, 624, 1296, 89, - 2963, 1073, 624, 1072, 2880, 3488, 2625, 591, 638, 593, - 607, 1800, 627, 2856, 626, 597, 642, 595, 599, 608, - 600, 1535, 594, 947, 605, 636, 949, 596, 609, 610, - 613, 617, 618, 619, 615, 612, 2568, 603, 628, 2429, - 2430, 1054, 1292, 1024, 1705, 1284, 1927, 2768, 1113, 1743, - 1742, 2249, 2250, 2252, 2251, 952, 624, 1060, 1061, 2771, - 1479, 2528, 2130, 3295, 2168, 3296, 2553, 2207, 1088, 2844, - 1100, 2228, 2212, 2229, 1101, 2230, 1736, 2845, 3516, 625, - 1081, 2852, 1731, 1107, 1106, 1093, 918, 1112, 1706, 1063, - 1707, 1089, 1090, 1095, 1056, 1094, 3462, 3054, 2048, 2570, - 3050, 1292, 2853, 2046, 2047, 3053, 2231, 1030, 1099, 1029, - 2209, 990, 625, 950, 2211, 625, 2219, 2215, 2217, 2218, - 2216, 2220, 2221, 952, 3247, 944, 189, 2213, 189, 2171, - 3110, 189, 946, 945, 184, 1919, 1908, 1909, 1910, 1911, - 1921, 1912, 1913, 1914, 1926, 1922, 1915, 1916, 1923, 1924, - 1925, 1917, 1918, 1920, 2659, 988, 2210, 960, 123, 1482, - 1616, 961, 641, 2061, 641, 641, 1000, 2626, 961, 999, - 2771, 166, 998, 997, 928, 922, 920, 928, 922, 920, - 996, 950, 995, 994, 641, 189, 993, 1335, 1336, 1337, - 1338, 992, 987, 2255, 936, 952, 1048, 1349, 934, 1332, - 1353, 936, 2574, 625, 1084, 1343, 973, 3535, 625, 1009, - 1332, 3493, 1345, 3049, 2478, 972, 936, 1637, 972, 1008, - 1108, 3528, 1753, 2144, 913, 3343, 2519, 163, 2571, 1070, - 164, 1076, 1077, 1078, 1079, 951, 1745, 958, 2197, 2196, - 2190, 1749, 1277, 2555, 2522, 1534, 629, 1017, 2397, 2399, - 2790, 2552, 2487, 183, 1610, 1115, 1116, 991, 1609, 1608, - 1052, 2538, 625, 1750, 1606, 979, 589, 622, 584, 818, - 1053, 1291, 1288, 1289, 1290, 1295, 1297, 1294, 818, 1293, - 3332, 1272, 623, 818, 2587, 1735, 2046, 2047, 1739, 1287, - 1737, 1738, 2964, 1740, 1741, 2269, 3002, 2188, 2982, 2821, - 2822, 989, 2872, 951, 2469, 1339, 2565, 2542, 118, 2564, - 1333, 1334, 2825, 2432, 2369, 1866, 2821, 2822, 1526, 1273, - 1274, 979, 2134, 1434, 1636, 3422, 2427, 3082, 1065, 2825, - 1291, 1288, 1289, 1290, 1295, 1297, 1294, 1469, 1293, 1717, - 1716, 1718, 1719, 1720, 3013, 3014, 2089, 1332, 1287, 979, - 1329, 2541, 979, 2747, 1345, 3421, 2577, 83, 3453, 3422, - 1051, 2576, 2135, 896, 167, 2577, 978, 3104, 1069, 2133, - 2576, 113, 1097, 173, 3357, 951, 1503, 1505, 1111, 1016, - 1887, 1002, 1062, 1059, 921, 1762, 3045, 921, 1363, 3421, - 1364, 1367, 88, 88, 1888, 1071, 3104, 1485, 2976, 2208, - 88, 1489, 3452, 2136, 2256, 2592, 1083, 880, 1483, 979, - 1470, 189, 2916, 2132, 2398, 641, 641, 1085, 1809, 88, - 1486, 1746, 978, 1878, 1540, 2611, 2511, 3496, 972, 975, - 976, 189, 936, 1732, 1301, 1733, 969, 973, 1734, 3526, - 1300, 1301, 3527, 114, 3525, 1878, 3145, 2286, 3020, 3019, - 978, 641, 2175, 978, 189, 982, 972, 968, 982, 972, - 984, 1646, 1645, 984, 985, 983, 641, 985, 983, 1487, - 1635, 2185, 189, 98, 1470, 2183, 1440, 1441, 1442, 1443, - 1444, 990, 1302, 1488, 3489, 986, 988, 99, 2594, 3536, - 979, 2187, 3003, 892, 158, 1055, 1322, 1323, 1324, 1325, - 1327, 1326, 1328, 1329, 1476, 2180, 1826, 1828, 1829, 641, - 978, 1068, 3530, 1984, 1463, 1643, 972, 975, 976, 1098, - 936, 101, 1345, 1885, 969, 973, 3255, 3254, 641, 641, - 1827, 641, 1763, 641, 641, 3245, 641, 641, 641, 641, - 641, 641, 1678, 1302, 2184, 1681, 3095, 1683, 2180, 1345, - 3094, 1629, 1345, 641, 1345, 189, 2848, 2604, 2603, 2602, - 2596, 3079, 2600, 3080, 2595, 2313, 2593, 1725, 1473, 1723, - 1712, 2598, 1700, 3387, 1302, 189, 3537, 877, 1484, 3325, - 2597, 1622, 879, 1507, 1504, 2321, 1836, 2182, 641, 3027, - 189, 978, 1276, 1015, 1490, 1682, 1641, 1012, 2599, 2601, - 1837, 1330, 1331, 1835, 1651, 641, 1652, 189, 1654, 1656, - 1531, 1532, 1660, 1662, 1664, 1666, 1668, 1299, 3388, 1300, - 1301, 3026, 1640, 189, 3326, 3016, 2613, 1613, 1614, 1615, - 189, 1724, 1302, 1722, 1711, 1605, 1639, 1639, 2798, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 641, 2261, - 2262, 2263, 1620, 1619, 1618, 821, 822, 823, 1632, 1502, - 1611, 2786, 1758, 2493, 1302, 2492, 159, 1324, 1325, 1327, - 1326, 1328, 1329, 171, 1302, 2140, 1726, 1710, 1299, 1686, - 1300, 1301, 1764, 1765, 1320, 1321, 1322, 1323, 1324, 1325, - 1327, 1326, 1328, 1329, 1690, 1691, 1769, 1709, 2053, 2054, - 1696, 1697, 1708, 1776, 1777, 1778, 1984, 1754, 1502, 1299, - 1981, 1300, 1301, 1698, 179, 1883, 3500, 1502, 1766, 1983, - 1692, 1689, 1688, 1687, 1884, 1770, 1658, 1772, 1773, 1774, - 1775, 3010, 630, 816, 1779, 2476, 630, 2156, 2155, 630, - 122, 955, 954, 953, 2154, 2153, 1791, 1535, 3498, 1502, - 1302, 3490, 1318, 3352, 2586, 160, 165, 162, 168, 169, - 170, 172, 174, 175, 176, 177, 1768, 1299, 3351, 1300, - 1301, 178, 180, 181, 182, 1319, 1320, 1321, 1322, 1323, - 1324, 1325, 1327, 1326, 1328, 1329, 1302, 2152, 2151, 1790, - 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1304, 3329, 1299, - 39, 1300, 1301, 1789, 2418, 3515, 2755, 95, 1511, 1299, - 3328, 1300, 1301, 641, 641, 3327, 1302, 1805, 96, 2323, - 3250, 641, 3477, 1502, 1298, 1502, 189, 1861, 1861, 1298, - 1502, 2418, 3415, 1502, 3432, 1502, 1318, 1302, 3234, 104, - 1840, 3233, 1302, 1859, 1859, 1862, 2418, 3395, 2418, 3391, - 103, 2756, 102, 1881, 1512, 3144, 2889, 1882, 2325, 1319, - 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, - 3430, 1502, 1469, 1502, 641, 2758, 1302, 1343, 3142, 1830, - 3378, 1502, 3345, 1832, 1345, 1299, 3091, 1300, 1301, 1468, - 2276, 1945, 1467, 2753, 1879, 641, 3063, 3342, 2274, 1302, - 2275, 1345, 3258, 1502, 3281, 1302, 2418, 3246, 3280, 1318, - 2769, 2770, 1314, 1466, 1315, 3063, 1502, 2754, 3024, 1977, - 1502, 1299, 1502, 1300, 1301, 3009, 641, 641, 1316, 1330, + 1042, 1043, 1044, 1045, 1046, 1047, 105, 106, 107, 606, + 110, 3367, 2192, 116, 80, 624, 185, 3106, 3106, 585, + 624, 604, 3066, 122, 1286, 3067, 3427, 1005, 1004, 3496, + 643, 3427, 925, 769, 770, 3274, 3465, 3085, 2437, 872, + 873, 874, 875, 3074, 80, 883, 3410, 82, 80, 3417, + 80, 2821, 2186, 3273, 2137, 2895, 1863, 2048, 3084, 3446, + 1612, 601, 2394, 2438, 3350, 1538, 3451, 1539, 2258, 2749, + 616, 2558, 2559, 914, 915, 2583, 624, 2131, 2255, 1299, + 2821, 1300, 1301, 2082, 3449, 611, 625, 1318, 2567, 1296, + 2750, 2751, 89, 3455, 3456, 614, 1114, 3150, 2083, 2084, + 1086, 2770, 2771, 2019, 1091, 1092, 870, 869, 3450, 2872, + 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, + 1329, 3488, 89, 2522, 1049, 625, 89, 3337, 89, 947, + 1074, 1296, 949, 2256, 2486, 1075, 2101, 2100, 952, 1087, + 1060, 1061, 3489, 2474, 1080, 624, 2473, 2852, 2964, 2475, + 1103, 1800, 1105, 2250, 2251, 2253, 2252, 2883, 591, 624, + 593, 607, 1927, 627, 2626, 626, 597, 2593, 595, 599, + 608, 600, 1063, 594, 2881, 605, 638, 642, 596, 609, + 610, 613, 617, 618, 619, 615, 612, 636, 603, 628, + 1102, 1104, 1292, 1535, 1074, 1284, 950, 2430, 2431, 1075, + 918, 2048, 624, 1093, 1743, 1742, 1113, 1073, 2769, 1072, + 2857, 1479, 2569, 1094, 3296, 2168, 3297, 2529, 2554, 2845, + 2772, 625, 2212, 2130, 2207, 3517, 625, 2846, 1088, 952, + 1731, 944, 1112, 1081, 1292, 1107, 2853, 1095, 946, 945, + 1705, 1089, 1090, 1024, 1056, 2046, 2047, 2854, 2571, 3463, + 2595, 1919, 1908, 1909, 1910, 1911, 1921, 1912, 1913, 1914, + 1926, 1922, 1915, 1916, 1923, 1924, 1925, 1917, 1918, 1920, + 2229, 2211, 2230, 2660, 2231, 2209, 189, 2213, 189, 184, + 3055, 189, 625, 3054, 1706, 2232, 1707, 950, 928, 922, + 920, 1100, 1054, 1030, 1029, 1101, 2219, 2215, 2217, 2218, + 2216, 2220, 2221, 123, 3248, 1106, 990, 3051, 1616, 2256, + 2171, 3111, 641, 2210, 641, 641, 166, 1736, 951, 2605, + 2604, 2603, 2597, 2061, 2601, 2627, 2596, 988, 2594, 1099, + 961, 999, 960, 2599, 641, 189, 961, 1335, 1336, 1337, + 1338, 998, 2598, 997, 928, 922, 920, 1349, 996, 995, + 1353, 625, 1482, 994, 993, 1343, 992, 987, 1000, 2479, + 2600, 2602, 1345, 2190, 2772, 625, 1332, 936, 1332, 936, + 1108, 934, 163, 1084, 973, 164, 3344, 2520, 958, 1070, + 3536, 1076, 1077, 1078, 1079, 3529, 1009, 2575, 3494, 2046, + 2047, 1745, 972, 1637, 2488, 936, 1008, 629, 183, 972, + 1753, 2144, 3423, 2556, 913, 1115, 1116, 3423, 625, 951, + 2572, 2523, 2197, 2398, 2400, 2196, 1749, 1534, 622, 818, + 3050, 1291, 1288, 1289, 1290, 1295, 1297, 1294, 818, 1293, + 1272, 818, 3422, 623, 1277, 1017, 2791, 3422, 2553, 1287, + 2965, 1610, 979, 1609, 1608, 2539, 952, 1048, 1750, 2822, + 2823, 2588, 991, 2270, 2873, 1339, 1273, 1274, 2543, 1606, + 589, 584, 2826, 1291, 1288, 1289, 1290, 1295, 1297, 1294, + 2188, 1293, 2578, 989, 1333, 1334, 979, 2577, 2822, 2823, + 83, 1287, 1016, 2134, 3333, 3014, 3015, 1469, 3003, 3083, + 2983, 2826, 1717, 1716, 1718, 1719, 1720, 2428, 921, 2470, + 1636, 2433, 2542, 2566, 1345, 1735, 2565, 2370, 1866, 167, + 1526, 1052, 88, 1434, 979, 3105, 3105, 1065, 173, 3454, + 118, 1053, 2089, 2135, 1062, 1059, 1503, 1505, 1071, 1739, + 2133, 1737, 1738, 1332, 1740, 1741, 1329, 2748, 1363, 2917, + 1364, 979, 88, 978, 896, 113, 88, 1485, 88, 1367, + 2578, 1489, 2257, 1111, 921, 2577, 3358, 880, 1483, 979, + 1470, 189, 1002, 3453, 2136, 641, 641, 3046, 2977, 2208, + 1486, 1097, 1809, 1762, 2132, 1083, 1887, 978, 1069, 2399, + 1746, 189, 1540, 972, 975, 976, 1085, 936, 2612, 1878, + 1888, 969, 973, 979, 1324, 1325, 1327, 1326, 1328, 1329, + 1878, 641, 2287, 3527, 189, 2512, 3528, 3497, 3526, 1300, + 1301, 1051, 968, 1302, 1301, 978, 641, 114, 3146, 1487, + 982, 972, 189, 98, 1470, 984, 951, 1488, 3021, 985, + 983, 99, 2890, 3020, 1440, 1441, 1442, 1443, 1444, 158, + 2175, 1646, 978, 1645, 1635, 2185, 1302, 982, 972, 2183, + 986, 990, 984, 1732, 1476, 1733, 985, 983, 1734, 641, + 978, 988, 3537, 1463, 2187, 1643, 972, 975, 976, 3490, + 936, 3004, 1345, 892, 969, 973, 3531, 3256, 641, 641, + 101, 641, 3388, 641, 641, 3255, 641, 641, 641, 641, + 641, 641, 1678, 3246, 978, 1681, 1015, 1683, 1502, 1345, + 1012, 1629, 1345, 641, 1345, 189, 3096, 1055, 1322, 1323, + 1324, 1325, 1327, 1326, 1328, 1329, 1836, 1473, 1098, 1885, + 1763, 1068, 1700, 1302, 1484, 189, 1622, 3389, 1302, 877, + 1837, 1330, 1331, 1835, 1507, 879, 2180, 1504, 641, 3095, + 189, 2262, 2263, 2264, 1725, 1682, 2180, 1641, 1299, 3538, + 1300, 1301, 1723, 1502, 1651, 641, 1652, 189, 1654, 1656, + 1883, 3028, 1660, 1662, 1664, 1666, 1668, 1531, 1532, 1884, + 3326, 3027, 3017, 189, 1640, 2184, 2799, 1613, 1614, 1615, + 189, 1299, 2787, 1300, 1301, 2182, 1639, 1639, 1605, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 641, 2494, + 1302, 821, 822, 823, 1619, 1620, 1618, 1758, 1724, 1712, + 1632, 159, 3501, 1502, 1302, 3327, 1722, 2493, 171, 1320, + 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 1686, + 2140, 1726, 1764, 1765, 1306, 1307, 1308, 1309, 1310, 1311, + 1312, 1304, 1710, 1709, 1690, 1691, 1769, 1490, 1708, 1302, + 1696, 1697, 1698, 1776, 1777, 1778, 1692, 1754, 1299, 179, + 1300, 1301, 1302, 1299, 1689, 1300, 1301, 2614, 1766, 1688, + 3080, 1302, 3081, 1711, 1687, 1770, 1302, 1772, 1773, 1774, + 1775, 2227, 1658, 2228, 1779, 1502, 1984, 2849, 2277, 3011, + 630, 630, 122, 955, 954, 953, 1791, 1318, 2276, 2587, + 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, + 177, 1276, 1302, 1611, 2756, 1768, 178, 180, 181, 182, + 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, + 1329, 2477, 630, 3499, 1502, 1299, 1302, 1300, 1301, 1790, + 1789, 1826, 1828, 1829, 2156, 2155, 3433, 1502, 1535, 1299, + 39, 1300, 1301, 1984, 3491, 3431, 1502, 1981, 3353, 2757, + 3429, 1502, 1502, 641, 641, 1827, 1983, 1805, 2154, 2153, + 3352, 641, 2976, 2152, 2151, 3330, 189, 1861, 1861, 3329, + 816, 1302, 3328, 2759, 1299, 3251, 1300, 1301, 3235, 1511, + 1840, 104, 3234, 1859, 1859, 1862, 3277, 1299, 3346, 1300, + 1301, 2754, 103, 1881, 102, 2324, 1299, 1882, 1300, 1301, + 3145, 1299, 3143, 1300, 1301, 1298, 1502, 3282, 2770, 2771, + 3305, 1502, 1469, 3092, 641, 2755, 1468, 1343, 1302, 1830, + 1467, 95, 95, 1832, 1345, 1512, 2419, 3516, 97, 2322, + 1466, 1945, 96, 96, 1879, 641, 1302, 1299, 3025, 1300, + 1301, 1345, 3478, 1502, 3281, 1302, 1298, 1502, 2761, 1318, + 2419, 3416, 1314, 3010, 1315, 3303, 1502, 2419, 3396, 1977, + 2858, 1299, 1502, 1300, 1301, 2855, 641, 641, 1316, 1330, 1331, 1313, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, - 1326, 1328, 1329, 2857, 2006, 1470, 2418, 3061, 1302, 1833, - 2760, 1299, 2854, 1300, 1301, 2789, 79, 1939, 1808, 95, - 1806, 1503, 2013, 1807, 1989, 2788, 97, 1950, 1797, 1798, - 96, 2502, 1299, 2490, 1300, 1301, 1992, 1299, 1465, 1300, - 1301, 2180, 1502, 3428, 1502, 2980, 1502, 1838, 2227, 3304, - 1502, 2465, 1980, 2334, 1502, 2037, 1839, 2202, 1841, 1842, + 1326, 1328, 1329, 2790, 2006, 1470, 2789, 1502, 1502, 1833, + 2419, 3392, 3239, 79, 1302, 1797, 1798, 1939, 1808, 1806, + 1807, 1503, 2013, 1502, 1989, 2503, 1299, 1950, 1300, 1301, + 1302, 104, 3379, 1502, 3238, 2769, 1992, 3064, 3343, 1302, + 3300, 1502, 103, 2491, 102, 1302, 1838, 2772, 1465, 3286, + 1502, 3072, 1980, 97, 2466, 2037, 1839, 2202, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, - 1853, 1299, 1865, 1300, 1301, 2779, 2778, 2768, 2030, 189, - 2031, 2201, 2043, 1302, 641, 1502, 1872, 1874, 1302, 2771, - 97, 1991, 3302, 1502, 1299, 2014, 1300, 1301, 2775, 2776, - 1299, 1950, 1300, 1301, 1302, 2775, 2774, 3238, 189, 2442, - 1502, 641, 2025, 2098, 2466, 1302, 1989, 1793, 98, 1994, - 1995, 189, 2255, 2551, 2468, 641, 1302, 1759, 1992, 189, - 1721, 189, 99, 189, 189, 1990, 2414, 1941, 98, 1889, - 1890, 1891, 1892, 1299, 1302, 1300, 1301, 1713, 641, 1502, - 2063, 97, 99, 1903, 2036, 2141, 1319, 1320, 1321, 1322, - 1323, 1324, 1325, 1327, 1326, 1328, 1329, 1993, 1502, 3237, - 1996, 1997, 3299, 1502, 1601, 2532, 2107, 2108, 2109, 2110, - 2525, 2526, 3071, 1991, 2418, 2417, 1302, 1703, 3285, 1502, - 2093, 1302, 2092, 1699, 2102, 1695, 2103, 2104, 2105, 2106, - 3491, 893, 2757, 641, 1515, 2465, 2074, 2024, 1694, 2279, - 2951, 1502, 2113, 2114, 2115, 2116, 2279, 1502, 1299, 1693, - 1300, 1301, 1513, 1299, 2035, 1300, 1301, 2058, 2944, 1502, - 641, 2123, 1109, 2096, 2038, 2709, 641, 1864, 1502, 1299, - 2129, 1300, 1301, 1601, 1600, 2169, 2975, 2056, 1302, 2529, - 1299, 103, 1300, 1301, 1302, 927, 2507, 2080, 926, 2079, - 2078, 1299, 1302, 1300, 1301, 2095, 2094, 2097, 2466, 2181, - 1514, 1318, 2166, 2268, 2975, 2941, 1502, 2434, 2255, 1299, - 1302, 1300, 1301, 641, 2139, 1546, 1545, 1298, 641, 2434, - 2441, 1302, 641, 641, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1327, 1326, 1328, 1329, 1302, 2742, 2124, 2119, 2120, - 2977, 3383, 3356, 2418, 2174, 2138, 2255, 2177, 2142, 2178, - 1298, 1299, 2150, 1300, 1301, 2194, 1299, 2180, 1300, 1301, - 189, 2442, 2939, 1502, 2936, 2777, 980, 189, 2904, 1502, - 1302, 2173, 2124, 2176, 2172, 2442, 2887, 1502, 981, 2442, - 189, 189, 2682, 2081, 189, 2198, 189, 2195, 1639, 2199, - 2200, 2975, 2279, 189, 2389, 1502, 2334, 2310, 2309, 2180, - 189, 2163, 2051, 1506, 2015, 2387, 1502, 2761, 1864, 1810, - 1318, 2765, 1748, 1299, 1533, 1300, 1301, 1302, 2764, 1299, - 3340, 1300, 1301, 963, 962, 882, 189, 1299, 89, 1300, - 1301, 641, 2205, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1327, 1326, 1328, 1329, 1302, 1299, 2272, 1300, 1301, 3458, - 2277, 2266, 2766, 2280, 3276, 2281, 1299, 2762, 1300, 1301, - 2288, 3398, 2763, 3269, 2290, 2291, 2292, 1509, 3235, 3156, - 1299, 3044, 1300, 1301, 2298, 2299, 2300, 2301, 2302, 2303, - 2304, 2305, 2306, 2307, 3041, 2234, 2273, 1302, 3022, 2271, - 3028, 2899, 2241, 2242, 2898, 1832, 1345, 2244, 1992, 1302, - 2801, 2366, 1502, 89, 1302, 1299, 2245, 1300, 1301, 1603, - 2314, 2315, 2316, 2317, 2318, 2122, 2320, 2846, 2803, 2799, - 2322, 2533, 1302, 2118, 2327, 2328, 2112, 2329, 2349, 1502, - 2332, 2111, 2333, 2283, 1302, 1728, 2336, 1634, 1630, 2293, - 2340, 3029, 3030, 3031, 2345, 2346, 2347, 2348, 2253, 1674, - 1599, 115, 1299, 1991, 1300, 1301, 2308, 2359, 1302, 2362, - 2363, 1833, 1302, 2499, 3032, 2850, 1054, 2365, 2367, 2264, - 3270, 2341, 1502, 2498, 2370, 2371, 2372, 2373, 2374, 1299, - 2137, 1300, 1301, 1302, 3242, 2381, 2382, 2028, 2383, 3046, - 3510, 2386, 2388, 2037, 1302, 2390, 1795, 1990, 3508, 1302, - 1675, 1676, 1677, 3484, 1302, 2402, 2282, 2265, 2285, 2267, - 1861, 3033, 3034, 3035, 2987, 2988, 2993, 3364, 2997, 1302, - 3290, 2499, 1299, 1302, 1300, 1301, 1859, 2403, 2990, 2795, - 2794, 2992, 2793, 2709, 1299, 2728, 1300, 1301, 2512, 1299, - 2235, 1300, 1301, 2494, 2731, 2729, 2946, 189, 3360, 2732, - 2730, 1302, 2401, 2727, 3126, 189, 3125, 1299, 1796, 1300, - 1301, 1670, 104, 1510, 2319, 3271, 641, 2942, 2042, 1299, - 39, 1300, 1301, 103, 2034, 102, 2981, 641, 2914, 2458, - 1302, 2687, 2686, 2910, 97, 3324, 3135, 2438, 2896, 2404, - 2419, 2406, 3137, 1299, 1302, 1300, 1301, 1299, 2968, 1300, - 1301, 189, 2971, 2895, 3124, 189, 2967, 2892, 1671, 1672, - 1673, 2733, 2696, 2451, 2452, 2699, 2701, 1747, 1299, 868, - 1300, 1301, 897, 1302, 2702, 2415, 2773, 1302, 2483, 1299, - 898, 1300, 1301, 2428, 1299, 2385, 1300, 1301, 2503, 1299, - 1476, 1300, 1301, 1502, 2391, 1887, 1019, 1018, 2865, 650, - 2486, 2488, 2457, 2973, 1299, 2498, 1300, 1301, 1299, 1888, - 1300, 1301, 2411, 1302, 2384, 2416, 2524, 2580, 2479, 641, - 95, 1275, 2539, 2431, 123, 189, 95, 2463, 2380, 1302, - 97, 96, 189, 97, 3522, 1302, 1299, 96, 1300, 1301, - 2053, 2054, 2791, 2548, 2238, 3437, 641, 2129, 1302, 2467, - 3341, 2470, 3265, 641, 2477, 2772, 2455, 2379, 2039, 2226, - 2480, 2378, 641, 104, 2225, 1299, 2224, 1300, 1301, 1302, - 2223, 2546, 2491, 1302, 103, 2685, 102, 1302, 1345, 1299, - 2500, 1300, 1301, 2684, 1302, 97, 905, 906, 2222, 2953, - 2259, 189, 189, 189, 189, 189, 1302, 2377, 102, 2513, - 2514, 2515, 903, 2508, 3312, 909, 909, 2509, 1299, 104, - 1300, 1301, 1299, 2376, 1300, 1301, 189, 189, 2545, 2375, - 103, 1622, 102, 3311, 2615, 2616, 2617, 2618, 2619, 3293, - 3143, 3141, 2364, 2589, 2534, 2535, 1302, 189, 3140, 3133, - 1302, 2501, 3042, 2624, 2972, 2970, 2504, 2505, 1299, 2544, - 1300, 1301, 104, 2358, 2804, 2164, 103, 2357, 641, 1617, - 1302, 2356, 904, 103, 1299, 3132, 1300, 1301, 2355, 1302, - 1299, 2605, 1300, 1301, 2961, 2434, 2569, 3512, 3511, 3512, - 2354, 2607, 2588, 1299, 3114, 1300, 1301, 2414, 2572, 2620, - 2578, 2627, 2311, 2579, 2026, 2447, 2450, 2451, 2452, 2448, - 1302, 2449, 2453, 1527, 1299, 641, 1300, 1301, 1299, 1519, - 1300, 1301, 1299, 3511, 1300, 1301, 108, 109, 3330, 1299, - 2353, 1300, 1301, 3008, 2352, 2606, 895, 2608, 3, 91, - 1, 1299, 1744, 1300, 1301, 3012, 3447, 602, 2016, 2666, - 2637, 2661, 2639, 641, 2351, 1474, 3485, 3443, 2663, 3444, - 1714, 641, 1704, 2350, 3074, 1951, 3266, 2807, 2650, 2651, - 2652, 2653, 2170, 3040, 2127, 971, 1980, 148, 1980, 2090, - 2718, 1299, 2629, 1300, 1301, 1299, 2091, 1300, 1301, 3411, - 112, 2635, 641, 929, 2344, 111, 974, 2736, 2737, 1082, - 2165, 2590, 3064, 2484, 2099, 1299, 189, 1300, 1301, 884, - 641, 1552, 2666, 1550, 1299, 2706, 1300, 1301, 1551, 1549, - 1554, 2712, 1553, 2690, 641, 2721, 2712, 2741, 1345, 1489, - 2458, 641, 641, 1345, 189, 189, 189, 189, 189, 2873, - 2312, 2665, 2662, 2915, 2664, 1299, 189, 1300, 1301, 1799, - 2677, 189, 637, 2454, 189, 631, 189, 2715, 186, 189, - 189, 189, 1541, 1520, 2691, 2688, 2928, 2681, 1013, 2703, - 2704, 592, 2780, 2743, 2203, 598, 2744, 1350, 1794, 2683, - 2471, 886, 885, 924, 2723, 2724, 2722, 2726, 2689, 2725, - 916, 2027, 2405, 2734, 923, 2827, 3243, 98, 2717, 1302, - 2965, 2695, 2738, 2739, 189, 2697, 2745, 2720, 2678, 2679, - 2680, 99, 2421, 2806, 2700, 2751, 1758, 641, 1302, 2693, - 1345, 3323, 3134, 2781, 3396, 641, 2867, 2481, 1516, 2783, - 189, 2935, 2782, 2645, 2646, 2647, 2648, 2649, 2284, 1876, - 1340, 2068, 3109, 1825, 189, 659, 2884, 2885, 2886, 658, - 2888, 2890, 2834, 656, 1302, 2835, 2407, 2435, 1302, 2805, - 1305, 2869, 2129, 189, 2897, 806, 189, 2826, 2395, 2901, - 2902, 2903, 2905, 2906, 2907, 2908, 1528, 2841, 2909, 2446, - 2911, 2912, 2913, 2343, 1302, 2917, 2918, 2919, 2920, 2921, - 2922, 2923, 2924, 2925, 2926, 2444, 2858, 2443, 2236, 2861, - 2860, 1302, 2342, 2933, 2075, 2989, 2937, 2985, 2938, 2940, - 2868, 2943, 2945, 3439, 2947, 2948, 2949, 2950, 2070, 2784, - 2785, 2878, 2956, 2875, 2876, 2066, 2877, 2413, 757, 2879, - 756, 2881, 668, 2883, 1299, 660, 1300, 1301, 2339, 1302, - 652, 755, 2338, 754, 2930, 3005, 641, 2833, 3423, 2554, - 2847, 2934, 2556, 1299, 2482, 1300, 1301, 2978, 2979, 2843, - 1283, 2983, 1492, 1302, 646, 942, 2863, 2864, 2337, 1302, - 2870, 1500, 1496, 3347, 2258, 189, 2893, 1491, 1302, 2995, - 2996, 1906, 1907, 3354, 2815, 2335, 1497, 3058, 2796, 1299, - 2530, 1300, 1301, 1299, 1302, 1300, 1301, 2157, 65, 43, - 1302, 2954, 2955, 3318, 3384, 2957, 753, 750, 3111, 3112, - 3113, 2032, 2033, 1499, 2962, 1498, 2969, 2657, 2658, 1299, - 3367, 1300, 1301, 2331, 3368, 749, 3369, 1934, 2974, 1280, - 3460, 1801, 90, 34, 189, 2991, 1299, 33, 1300, 1301, - 32, 31, 30, 25, 24, 23, 2994, 2330, 22, 21, - 27, 2999, 20, 2326, 19, 2998, 18, 2818, 3480, 3521, - 117, 1303, 2324, 189, 2959, 3047, 3048, 2834, 52, 3062, - 2835, 3006, 3007, 49, 1299, 47, 1300, 1301, 2289, 125, - 124, 3023, 189, 3025, 2278, 189, 189, 189, 3068, 3069, - 1358, 50, 46, 1057, 44, 641, 641, 2984, 1299, 29, - 1300, 1301, 28, 17, 1299, 16, 1300, 1301, 15, 14, - 13, 3081, 12, 1299, 3085, 1300, 1301, 11, 7, 3000, - 3001, 1500, 1496, 6, 37, 36, 35, 1804, 26, 1299, - 4, 1300, 1301, 2517, 2159, 1299, 1497, 1300, 1301, 0, - 0, 3096, 641, 641, 641, 641, 0, 0, 2447, 2450, - 2451, 2452, 2448, 3070, 2449, 2453, 3100, 0, 2987, 2988, - 0, 1493, 1494, 1499, 0, 1498, 0, 0, 3108, 0, - 0, 0, 0, 0, 0, 3090, 3115, 0, 0, 0, - 0, 0, 0, 3086, 0, 0, 3017, 3018, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3129, 3107, 3098, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3051, 0, - 0, 1861, 3055, 3056, 3057, 0, 0, 0, 189, 39, - 0, 0, 0, 0, 0, 0, 0, 1859, 3158, 0, - 2712, 3130, 0, 0, 0, 3138, 3150, 1345, 3139, 0, - 0, 0, 641, 3146, 641, 3154, 3152, 3148, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2715, 0, 3257, - 0, 2715, 0, 0, 0, 3162, 3244, 0, 3264, 0, - 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, - 0, 0, 0, 817, 0, 0, 81, 0, 3274, 3275, - 0, 3277, 0, 3278, 3279, 0, 641, 0, 3282, 3283, - 3284, 3241, 3286, 3289, 3287, 3240, 3256, 3239, 0, 189, - 1861, 1604, 641, 3268, 0, 3288, 0, 0, 3298, 3300, - 3301, 3303, 3305, 3306, 3308, 641, 1859, 3291, 3261, 3260, - 3248, 0, 0, 0, 3159, 3160, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3292, 0, 3338, 881, 3294, 81, 0, 0, 3297, 0, - 0, 0, 0, 0, 0, 641, 3316, 0, 3334, 641, - 641, 3313, 3314, 0, 881, 3315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3333, 0, 0, 941, - 0, 0, 0, 0, 3331, 0, 3322, 0, 641, 0, - 3337, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2715, - 0, 0, 0, 3251, 3252, 3253, 0, 0, 0, 1760, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3339, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 641, 3363, 0, - 0, 3358, 0, 0, 0, 39, 0, 0, 0, 0, - 3350, 3353, 0, 189, 0, 0, 0, 0, 3379, 0, - 0, 0, 3355, 0, 3380, 3381, 0, 0, 0, 0, - 0, 641, 189, 0, 0, 0, 0, 3346, 0, 0, - 0, 0, 0, 0, 0, 0, 3392, 0, 0, 0, - 0, 0, 3373, 0, 0, 3374, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3382, 3362, 0, - 0, 0, 3417, 3418, 0, 0, 3372, 0, 0, 0, - 0, 39, 641, 0, 3389, 2712, 3427, 3429, 3431, 3394, - 0, 3424, 1345, 3402, 641, 3425, 3407, 3410, 3397, 3404, - 3403, 3401, 3406, 3405, 3399, 0, 3268, 3412, 0, 0, - 0, 3459, 0, 0, 0, 0, 0, 0, 641, 641, - 0, 3435, 0, 0, 0, 0, 0, 3438, 0, 0, - 0, 3456, 3446, 3451, 0, 0, 0, 0, 3465, 0, - 641, 0, 3424, 0, 0, 0, 3425, 0, 3463, 0, - 3476, 0, 0, 0, 189, 641, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3474, 0, 0, 0, 3479, - 1353, 0, 0, 0, 0, 0, 0, 0, 1820, 1821, - 1822, 1823, 3497, 3499, 3501, 0, 3494, 0, 0, 0, - 3492, 0, 0, 0, 1861, 0, 0, 3503, 641, 0, - 3509, 3507, 3502, 0, 3505, 0, 0, 0, 0, 0, - 1859, 3506, 0, 3520, 3517, 0, 0, 0, 3424, 0, - 641, 3523, 3425, 0, 0, 0, 0, 1867, 1868, 3532, - 3533, 3531, 1870, 3529, 909, 909, 1875, 641, 0, 641, - 1880, 0, 0, 0, 0, 0, 0, 0, 1861, 0, - 3539, 3540, 3541, 1893, 1894, 1895, 1896, 1897, 1898, 1899, - 1900, 1901, 1902, 3288, 1859, 3538, 0, 1928, 1929, 1930, - 1931, 1932, 1933, 1935, 0, 1940, 0, 1942, 1943, 1944, - 0, 1946, 1947, 1948, 0, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 0, 1978, - 0, 1985, 1986, 909, 0, 909, 909, 909, 909, 909, - 0, 0, 0, 0, 0, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 0, 2007, 2008, 2009, 2010, 2011, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2049, 2050, 3478, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1569, 0, 0, 0, - 0, 0, 0, 0, 1118, 0, 1118, 1118, 0, 0, - 2087, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 881, 1342, 1347, 1348, 0, 1351, 0, - 1352, 1354, 1355, 1356, 0, 1359, 1360, 1362, 1362, 2125, - 1362, 1366, 1366, 1368, 1369, 1370, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, - 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, - 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, - 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 0, 0, - 1557, 0, 1433, 0, 1435, 1436, 1437, 1438, 1439, 0, - 0, 0, 0, 0, 0, 0, 0, 1366, 1366, 1366, - 1366, 1366, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, - 1454, 1455, 1456, 1457, 1458, 3180, 3182, 3181, 3199, 3200, - 3201, 3202, 3203, 3204, 3205, 707, 0, 0, 0, 0, - 0, 0, 1472, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1570, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, - 0, 881, 0, 0, 0, 881, 0, 0, 0, 0, - 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1583, 1586, 1587, 1588, 1589, 1590, - 1591, 0, 1592, 1593, 1594, 1595, 1596, 1571, 1572, 1573, - 1574, 1555, 1556, 1584, 0, 1558, 0, 1559, 1560, 1561, - 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, 1568, 1575, - 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2287, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2294, - 2295, 2296, 2297, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1358, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3194, 3195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1118, 0, 773, 0, 686, 777, 688, 774, 775, 0, - 684, 687, 776, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1518, 0, 0, 0, 0, 0, 0, 705, 706, - 3179, 3183, 3184, 3185, 3196, 3197, 3198, 3206, 3208, 738, - 3207, 3209, 3210, 3211, 3214, 3215, 3216, 3217, 3212, 3213, - 3218, 3163, 3167, 3164, 3165, 3166, 3178, 3168, 3169, 3170, - 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3219, 3220, 3221, - 3222, 3223, 3224, 3189, 3193, 3192, 3190, 3191, 3187, 3188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 778, 0, 779, 0, 0, 783, 0, 0, - 0, 785, 784, 0, 786, 752, 751, 0, 0, 780, - 781, 801, 782, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1569, 0, - 0, 0, 0, 0, 0, 1118, 1118, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 0, 184, 620, - 0, 0, 0, 0, 0, 640, 0, 3225, 3226, 3227, - 3228, 3229, 3230, 3231, 3232, 0, 0, 0, 0, 0, - 0, 0, 123, 0, 145, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 640, 0, 0, - 2585, 0, 0, 0, 0, 0, 156, 0, 0, 0, - 0, 0, 144, 0, 0, 0, 0, 0, 0, 909, - 0, 0, 2609, 2610, 0, 0, 2612, 0, 0, 2614, - 0, 163, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2621, - 2622, 2623, 0, 132, 133, 155, 154, 183, 0, 0, - 0, 2628, 1557, 0, 2630, 2631, 2632, 0, 0, 0, - 2633, 2634, 0, 0, 1954, 2636, 0, 0, 2638, 0, - 0, 2640, 2641, 2642, 2643, 0, 0, 0, 0, 2644, - 1954, 1954, 1954, 1954, 1954, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 909, 0, - 0, 0, 0, 0, 0, 2667, 2668, 2669, 2670, 2671, - 2672, 0, 0, 0, 2673, 2674, 0, 2675, 0, 2676, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1570, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 149, 130, 152, 137, - 129, 0, 150, 151, 0, 0, 0, 0, 167, 0, - 0, 0, 0, 0, 2707, 0, 0, 173, 138, 0, - 0, 0, 0, 0, 0, 2069, 0, 0, 0, 0, - 0, 0, 141, 139, 134, 135, 136, 140, 0, 0, - 0, 2740, 0, 0, 131, 0, 1583, 1586, 1587, 1588, - 1589, 1590, 1591, 142, 1592, 1593, 1594, 1595, 1596, 1571, - 1572, 1573, 1574, 1555, 1556, 1584, 0, 1558, 0, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, - 1568, 1575, 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, - 0, 0, 0, 0, 0, 941, 0, 0, 0, 0, - 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 941, 0, - 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2891, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2900, 0, 0, - 0, 0, 184, 0, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1585, 0, 0, 0, 0, 0, 123, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 146, 2523, 0, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 123, 0, 145, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 166, 163, 0, 0, 164, 0, - 159, 0, 0, 0, 0, 0, 0, 171, 2260, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 0, 0, 0, 156, 0, 0, 0, 0, - 0, 144, 640, 1271, 640, 640, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2270, 179, 0, - 163, 0, 0, 164, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3043, - 0, 0, 1625, 1626, 155, 154, 183, 0, 0, 0, - 0, 0, 1344, 0, 0, 0, 0, 0, 0, 160, - 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, - 0, 0, 3067, 0, 0, 178, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, - 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3087, 0, 3088, - 0, 0, 3089, 0, 0, 3092, 3093, 0, 0, 0, - 0, 0, 0, 2368, 3097, 149, 1627, 152, 0, 1624, - 0, 150, 151, 0, 3099, 0, 0, 167, 0, 0, - 0, 0, 0, 0, 758, 0, 173, 0, 0, 0, - 0, 0, 0, 0, 0, 2400, 3116, 0, 0, 3117, - 0, 3118, 3119, 0, 3120, 0, 3121, 759, 0, 0, - 0, 3122, 0, 881, 1344, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2439, 2440, 3147, 0, 0, 0, - 0, 0, 0, 2459, 0, 2460, 2461, 3155, 639, 0, - 3157, 0, 158, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 588, 3161, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, - 0, 588, 3236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 891, 0, 933, 0, - 940, 0, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 640, 0, 910, 910, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 0, 640, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1598, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1607, 0, 0, 0, - 0, 0, 0, 0, 0, 2537, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, - 0, 1633, 0, 0, 0, 0, 0, 0, 0, 1642, - 0, 0, 1344, 1644, 0, 153, 1647, 1648, 640, 640, - 0, 640, 3321, 640, 640, 0, 640, 640, 640, 640, - 640, 640, 0, 0, 0, 0, 0, 0, 0, 1344, - 1679, 1680, 1344, 640, 1344, 0, 1685, 0, 0, 0, - 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, - 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 146, 0, 640, 147, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1751, 0, 0, 640, 0, 0, 0, 0, - 0, 0, 179, 0, 0, 0, 0, 0, 0, 159, - 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, + 1853, 2201, 1865, 1299, 2043, 1300, 1301, 97, 2030, 189, + 2031, 3259, 1502, 2530, 641, 1302, 1991, 2025, 1872, 1874, + 1793, 1299, 1759, 1300, 1301, 2014, 2419, 3247, 2952, 1502, + 1299, 1950, 1300, 1301, 3064, 1502, 2419, 3062, 189, 2053, + 2054, 641, 1502, 2098, 2945, 1502, 1989, 2467, 98, 1994, + 1995, 189, 1721, 2942, 1502, 641, 99, 2469, 1992, 189, + 3492, 189, 1302, 189, 189, 1990, 1502, 1941, 98, 1889, + 1890, 1891, 1892, 1713, 1302, 1703, 99, 1699, 641, 1299, + 2063, 1300, 1301, 1903, 2036, 2141, 2180, 1502, 2981, 1502, + 2758, 2335, 1502, 2780, 2779, 1299, 2415, 1300, 1301, 1993, + 2776, 2777, 1996, 1997, 1299, 2466, 1300, 1301, 1991, 1695, + 1299, 97, 1300, 1301, 2776, 2775, 2107, 2108, 2109, 2110, + 2093, 1302, 2092, 1694, 2102, 1693, 2103, 2104, 2105, 2106, + 2443, 1502, 103, 641, 2256, 2552, 2074, 2024, 1601, 2533, + 893, 1513, 2113, 2114, 2115, 2116, 2940, 1502, 2526, 2527, + 1299, 1109, 1300, 1301, 2710, 2096, 2035, 2058, 2905, 1502, + 641, 2123, 2419, 2418, 2038, 2976, 641, 1302, 2467, 2280, + 2129, 2280, 1502, 1864, 1502, 2169, 2508, 2056, 2256, 1302, + 1601, 1600, 1546, 1545, 2743, 927, 1302, 2080, 926, 2079, + 2078, 2442, 1302, 2097, 2256, 2095, 2094, 1299, 1298, 1300, + 1301, 1298, 2166, 1318, 1515, 2888, 1502, 2435, 2978, 1299, + 1302, 1300, 1301, 641, 3384, 3357, 2139, 2419, 641, 1302, + 2435, 2443, 641, 641, 1302, 2326, 1319, 1320, 1321, 1322, + 1323, 1324, 1325, 1327, 1326, 1328, 1329, 2124, 2119, 2120, + 2181, 2937, 2778, 2683, 2138, 2174, 2443, 2081, 2177, 2142, + 2178, 2390, 1502, 2150, 2280, 2194, 1299, 2335, 1300, 1301, + 189, 2311, 2310, 2388, 1502, 2762, 980, 189, 2180, 2766, + 1514, 2173, 2124, 2172, 2163, 2176, 2765, 3341, 981, 2443, + 189, 189, 2051, 1506, 189, 2198, 189, 2195, 1639, 2199, + 2200, 2015, 2976, 189, 2367, 1502, 1302, 1864, 2180, 1810, + 189, 1748, 1299, 2998, 1300, 1301, 1533, 963, 2350, 1502, + 2767, 1318, 882, 2269, 1299, 2763, 1300, 1301, 2314, 3029, + 2764, 1299, 962, 1300, 1301, 89, 189, 1299, 3459, 1300, + 1301, 641, 2205, 3399, 1319, 1320, 1321, 1322, 1323, 1324, + 1325, 1327, 1326, 1328, 1329, 1299, 2273, 1300, 1301, 1674, + 2278, 2267, 3270, 2281, 1299, 2282, 1300, 1301, 1509, 1299, + 2289, 1300, 1301, 3236, 2291, 2292, 2293, 3157, 3045, 3042, + 3030, 3031, 3032, 3023, 2299, 2300, 2301, 2302, 2303, 2304, + 2305, 2306, 2307, 2308, 2900, 2235, 2274, 2899, 1603, 2272, + 89, 2122, 2242, 2243, 2847, 1832, 1345, 2245, 1992, 2804, + 1675, 1676, 1677, 2800, 3033, 2534, 2246, 2118, 2112, 2111, + 2315, 2316, 2317, 2318, 2319, 1728, 2321, 1634, 1630, 1302, + 2323, 1599, 115, 1670, 2328, 2329, 2802, 2330, 2500, 1054, + 2333, 1299, 2334, 1300, 1301, 2851, 2337, 3271, 1302, 2294, + 2341, 2988, 2989, 2254, 2346, 2347, 2348, 2349, 1991, 2137, + 2499, 3034, 3035, 3036, 1302, 2028, 2309, 2360, 1302, 2363, + 2364, 1833, 1795, 3511, 3509, 3485, 3365, 2366, 2368, 2265, + 1671, 1672, 1673, 1302, 2371, 2372, 2373, 2374, 2375, 1302, + 3291, 2991, 2796, 1302, 2795, 2382, 2383, 2794, 2384, 1318, + 2284, 2387, 2389, 2037, 1302, 2391, 2710, 1990, 2500, 1302, + 2513, 2236, 2994, 2342, 1502, 2403, 2732, 2266, 2286, 2268, + 1861, 2733, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, + 1326, 1328, 1329, 3243, 1796, 2993, 1859, 2404, 1319, 1320, + 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 3047, + 2730, 2729, 2947, 1302, 3127, 2731, 3126, 189, 2728, 3361, + 3272, 1302, 2402, 1510, 1299, 189, 1300, 1301, 2495, 2734, + 2042, 2452, 2453, 2283, 2320, 2034, 641, 2943, 2982, 2688, + 39, 1302, 2687, 1299, 2969, 1300, 1301, 641, 2915, 2459, + 1302, 3138, 2968, 2911, 3325, 3136, 2972, 2439, 2405, 1299, + 2407, 1300, 1301, 1299, 3125, 1300, 1301, 2700, 2702, 1302, + 2420, 189, 2697, 1747, 897, 189, 2703, 868, 1299, 2484, + 1300, 1301, 898, 2774, 1299, 2504, 1300, 1301, 1299, 1019, + 1300, 1301, 1018, 2866, 1887, 2416, 1302, 2897, 95, 1299, + 2499, 1300, 1301, 2429, 1299, 2896, 1300, 1301, 1888, 96, + 1476, 2581, 95, 1275, 2392, 1302, 2540, 123, 2974, 97, + 650, 97, 2458, 96, 3523, 2893, 2053, 2054, 2792, 2239, + 2487, 2489, 3438, 1302, 2386, 2417, 2525, 2226, 2480, 641, + 3342, 2412, 3266, 2432, 2773, 189, 1302, 2464, 1299, 2456, + 1300, 1301, 189, 2385, 2039, 2225, 1299, 2224, 1300, 1301, + 1302, 905, 906, 2549, 2223, 2222, 641, 2129, 2954, 2468, + 1302, 2471, 2481, 641, 2260, 2686, 1299, 2478, 1300, 1301, + 2381, 1302, 641, 2685, 102, 1299, 103, 1300, 1301, 104, + 1302, 2547, 2275, 3313, 1302, 3312, 3294, 2492, 1345, 2380, + 103, 1302, 102, 3144, 1299, 2501, 1300, 1301, 3142, 3141, + 3133, 189, 189, 189, 189, 189, 1302, 2379, 3134, 2514, + 2515, 2516, 3043, 903, 2510, 2509, 909, 909, 2973, 2971, + 2378, 1299, 104, 1300, 1301, 2805, 1622, 189, 189, 1302, + 2546, 2164, 1617, 103, 2377, 2616, 2617, 2618, 2619, 2620, + 1299, 904, 1300, 1301, 2590, 2535, 2536, 1302, 189, 2962, + 2435, 2502, 3115, 1302, 2625, 2376, 2505, 2506, 1299, 2545, + 1300, 1301, 2415, 2628, 2365, 3513, 3512, 104, 2359, 641, + 2312, 1299, 2026, 1300, 1301, 2358, 1527, 1302, 103, 1519, + 102, 3512, 2606, 108, 109, 1299, 2570, 1300, 1301, 97, + 2357, 3513, 2608, 2589, 3331, 1299, 3009, 1300, 1301, 2573, + 2621, 2579, 895, 3, 2580, 91, 1299, 1, 1300, 1301, + 1744, 1302, 3013, 2356, 3448, 1299, 641, 1300, 1301, 1299, + 602, 1300, 1301, 2016, 1474, 3486, 1299, 3444, 1300, 1301, + 3445, 2355, 1714, 1704, 1500, 1496, 2607, 2354, 2609, 3075, + 1951, 1299, 3267, 1300, 1301, 2808, 2170, 3041, 2127, 1497, + 2667, 2638, 2662, 2640, 641, 971, 148, 2090, 2091, 2664, + 3412, 2353, 641, 112, 1299, 929, 1300, 1301, 111, 2651, + 2652, 2653, 2654, 974, 2032, 2033, 1499, 1980, 1498, 1980, + 1082, 2719, 1299, 2630, 1300, 1301, 2165, 3065, 1299, 2485, + 1300, 1301, 2636, 641, 2099, 2352, 1552, 1550, 2737, 2738, + 1302, 1551, 2591, 1549, 1554, 1553, 2874, 189, 2313, 2916, + 884, 641, 1299, 2667, 1300, 1301, 2707, 1799, 637, 2455, + 631, 186, 2713, 1541, 2691, 641, 2722, 2713, 2742, 1345, + 1489, 2459, 641, 641, 1345, 189, 189, 189, 189, 189, + 1520, 2929, 2666, 2663, 1013, 2665, 1299, 189, 1300, 1301, + 592, 2678, 189, 2781, 2203, 189, 598, 189, 2716, 1350, + 189, 189, 189, 1794, 2684, 2692, 2689, 2472, 2682, 924, + 2704, 2705, 916, 2027, 2744, 2406, 923, 2745, 2646, 2647, + 2648, 2649, 2650, 885, 2351, 2724, 2725, 2723, 2727, 2690, + 2726, 3244, 2718, 886, 2735, 2966, 2828, 2696, 98, 2698, + 1302, 2422, 2701, 2739, 2740, 189, 99, 2746, 2721, 2679, + 2680, 2681, 1758, 2694, 2807, 3324, 2752, 3135, 641, 1302, + 3397, 1345, 2482, 1516, 2782, 2936, 641, 2868, 2285, 1876, + 2784, 189, 1340, 2783, 2068, 1299, 3110, 1300, 1301, 1825, + 659, 658, 656, 2408, 2436, 189, 1305, 2885, 2886, 2887, + 806, 2889, 2891, 2835, 2396, 1302, 2836, 1528, 2447, 1302, + 2806, 2445, 2870, 2129, 189, 2898, 2827, 189, 2444, 2237, + 2902, 2903, 2904, 2906, 2907, 2908, 2909, 2075, 2990, 2910, + 2842, 2912, 2913, 2914, 2345, 1302, 2918, 2919, 2920, 2921, + 2922, 2923, 2924, 2925, 2926, 2927, 2986, 2859, 3440, 2070, + 2862, 2861, 1302, 2344, 2934, 2066, 2414, 2938, 757, 2939, + 2941, 2869, 2944, 2946, 756, 2948, 2949, 2950, 2951, 668, + 2785, 2786, 2879, 2957, 2876, 2877, 660, 2878, 652, 755, + 2880, 754, 2882, 3006, 2884, 1299, 2834, 1300, 1301, 2343, + 1302, 3424, 2555, 2340, 1302, 2931, 2848, 641, 2557, 2483, + 2844, 1283, 2935, 1492, 1299, 646, 1300, 1301, 2979, 2980, + 942, 2871, 2984, 3348, 1302, 2259, 2894, 2864, 2865, 2339, + 1302, 2448, 2451, 2452, 2453, 2449, 189, 2450, 2454, 1491, + 2996, 2997, 1906, 1907, 3355, 2816, 2338, 3059, 2797, 1302, + 1299, 2531, 1300, 1301, 1299, 2157, 1300, 1301, 65, 43, + 1302, 1500, 1496, 2955, 2956, 2958, 3319, 3385, 753, 750, + 3112, 3113, 3114, 2658, 2659, 2963, 1497, 2970, 3368, 3369, + 1299, 749, 1300, 1301, 2336, 1302, 3370, 1934, 2332, 2975, + 1280, 3461, 1801, 90, 34, 189, 2992, 1299, 33, 1300, + 1301, 1493, 1494, 1499, 32, 1498, 31, 2995, 2331, 30, + 25, 24, 3000, 23, 2327, 22, 2999, 21, 27, 20, + 19, 18, 1303, 3007, 189, 2960, 3048, 3049, 2835, 2819, + 3063, 2836, 3008, 2325, 3481, 1299, 3522, 1300, 1301, 1299, + 117, 1300, 1301, 189, 2290, 52, 189, 189, 189, 3069, + 3070, 1358, 3024, 49, 3026, 47, 641, 641, 2985, 1299, + 125, 1300, 1301, 124, 50, 1299, 46, 1300, 1301, 2279, + 1057, 44, 3082, 29, 28, 3086, 17, 16, 15, 14, + 3001, 3002, 13, 12, 1299, 11, 1300, 1301, 7, 6, + 37, 36, 35, 1804, 26, 1299, 4, 1300, 1301, 2518, + 2159, 0, 3097, 641, 641, 641, 641, 0, 0, 0, + 0, 0, 0, 0, 3071, 0, 0, 3101, 0, 0, + 1299, 0, 1300, 1301, 2448, 2451, 2452, 2453, 2449, 3109, + 2450, 2454, 0, 0, 2988, 2989, 3091, 3116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3018, 3019, 0, + 0, 0, 0, 0, 3087, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3130, 3108, 3099, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3052, + 0, 0, 1861, 3056, 3057, 3058, 0, 0, 0, 189, + 39, 0, 0, 0, 0, 0, 0, 0, 1859, 3159, + 0, 2713, 3131, 0, 0, 0, 3139, 3151, 1345, 3140, + 0, 0, 0, 641, 3147, 641, 3155, 3153, 3149, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2716, 0, + 3258, 0, 2716, 0, 0, 0, 3163, 3245, 0, 3265, + 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, + 0, 0, 0, 0, 817, 0, 0, 81, 0, 3275, + 3276, 0, 3278, 0, 3279, 3280, 0, 641, 0, 3283, + 3284, 3285, 3242, 3287, 3290, 3288, 3241, 3257, 3240, 0, + 189, 1861, 1604, 641, 3269, 0, 3289, 0, 0, 3299, + 3301, 3302, 3304, 3306, 3307, 3309, 641, 1859, 3292, 3262, + 3261, 3249, 0, 0, 0, 3160, 3161, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3293, 0, 3339, 881, 3295, 81, 0, 0, 3298, + 0, 0, 0, 0, 0, 0, 641, 3317, 0, 3335, + 641, 641, 3314, 3315, 0, 881, 3316, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3334, 0, 0, + 941, 0, 0, 0, 0, 3332, 0, 3323, 0, 641, + 0, 3338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2716, 0, 0, 0, 3252, 3253, 3254, 0, 0, 0, + 1760, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3340, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 641, 3364, + 0, 0, 3359, 0, 0, 0, 39, 0, 0, 0, + 0, 3351, 3354, 0, 189, 0, 0, 0, 0, 3380, + 0, 0, 0, 3356, 0, 3381, 3382, 0, 0, 0, + 0, 0, 641, 189, 0, 0, 0, 0, 3347, 0, + 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, + 0, 0, 0, 3374, 0, 0, 3375, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3383, 3363, + 0, 0, 0, 3418, 3419, 0, 0, 3373, 0, 0, + 0, 0, 39, 641, 0, 3390, 2713, 3428, 3430, 3432, + 3395, 0, 3425, 1345, 3403, 641, 3426, 3408, 3411, 3398, + 3405, 3404, 3402, 3407, 3406, 3400, 0, 3269, 3413, 0, + 0, 0, 3460, 0, 0, 0, 0, 0, 0, 641, + 641, 0, 3436, 0, 0, 0, 0, 0, 3439, 0, + 0, 0, 3457, 3447, 3452, 0, 0, 0, 0, 3466, + 0, 641, 0, 3425, 0, 0, 0, 3426, 0, 3464, + 0, 3477, 0, 0, 0, 189, 641, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3475, 0, 0, 0, + 3480, 1353, 0, 0, 0, 0, 0, 0, 0, 1820, + 1821, 1822, 1823, 3498, 3500, 3502, 0, 3495, 0, 0, + 0, 3493, 0, 0, 0, 1861, 0, 0, 3504, 641, + 0, 3510, 3508, 3503, 0, 3506, 0, 0, 0, 0, + 0, 1859, 3507, 0, 3521, 3518, 0, 0, 0, 3425, + 0, 641, 3524, 3426, 0, 0, 0, 0, 1867, 1868, + 3533, 3534, 3532, 1870, 3530, 909, 909, 1875, 641, 0, + 641, 1880, 0, 0, 0, 0, 0, 0, 0, 1861, + 0, 3540, 3541, 3542, 1893, 1894, 1895, 1896, 1897, 1898, + 1899, 1900, 1901, 1902, 3289, 1859, 3539, 0, 1928, 1929, + 1930, 1931, 1932, 1933, 1935, 0, 1940, 0, 1942, 1943, + 1944, 0, 1946, 1947, 1948, 0, 1954, 1955, 1956, 1957, + 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, + 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 0, + 1978, 0, 1985, 1986, 909, 0, 909, 909, 909, 909, + 909, 0, 0, 0, 0, 0, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2005, 0, 2007, 2008, 2009, 2010, 2011, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2049, 2050, 3479, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1569, 0, 0, + 0, 0, 0, 0, 0, 1118, 0, 1118, 1118, 0, + 0, 2087, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 881, 1342, 1347, 1348, 0, 1351, + 0, 1352, 1354, 1355, 1356, 0, 1359, 1360, 1362, 1362, + 2125, 1362, 1366, 1366, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, + 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, + 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, + 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, + 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 0, + 0, 1557, 0, 1433, 0, 1435, 1436, 1437, 1438, 1439, + 0, 0, 0, 0, 0, 0, 0, 0, 1366, 1366, + 1366, 1366, 1366, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 0, 3181, 3183, 3182, + 3200, 3201, 3202, 3203, 3204, 3205, 3206, 707, 0, 0, + 0, 0, 0, 1472, 0, 80, 41, 42, 82, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1570, 86, 0, 0, 0, 45, + 71, 72, 0, 69, 73, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1478, 0, 0, 0, + 0, 0, 881, 0, 0, 0, 881, 0, 0, 0, + 0, 58, 881, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 0, 1583, 1586, 1587, 1588, 1589, + 1590, 1591, 0, 1592, 1593, 1594, 1595, 1596, 1571, 1572, + 1573, 1574, 1555, 1556, 1584, 0, 1558, 0, 1559, 1560, + 1561, 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, 1568, + 1575, 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2288, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2295, 2296, 2297, 2298, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1358, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3187, 0, 0, + 0, 48, 51, 54, 53, 56, 0, 68, 0, 0, + 77, 74, 3195, 3196, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 57, 85, 84, 0, 0, 66, 67, + 55, 0, 0, 0, 0, 0, 75, 76, 0, 1585, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1118, 0, 0, 773, 0, 686, 777, 688, 774, + 775, 0, 684, 687, 776, 0, 0, 0, 0, 59, + 60, 0, 61, 62, 63, 64, 0, 0, 0, 0, + 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, + 705, 706, 3180, 3184, 3185, 3186, 3197, 3198, 3199, 3207, + 3209, 738, 3208, 3210, 3211, 3212, 3215, 3216, 3217, 3218, + 3213, 3214, 3219, 3164, 3168, 3165, 3166, 3167, 3179, 3169, + 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3220, + 3221, 3222, 3223, 3224, 3225, 3190, 3194, 3193, 3191, 3192, + 3188, 3189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 778, 0, 779, 0, 0, 783, + 0, 0, 0, 785, 784, 0, 786, 752, 751, 0, + 0, 780, 781, 801, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 0, 160, 165, 162, 168, 169, 170, 172, - 174, 175, 176, 177, 0, 0, 0, 179, 0, 178, - 180, 181, 182, 0, 0, 2654, 3361, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3375, - 0, 0, 3376, 0, 3377, 0, 0, 0, 160, 165, - 162, 168, 169, 170, 172, 174, 175, 176, 177, 0, - 0, 0, 0, 0, 178, 180, 181, 182, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2716, 0, 81, 0, 0, 2069, 2069, 2069, 2069, - 2069, 0, 0, 0, 0, 0, 0, 80, 41, 42, - 82, 0, 0, 2459, 881, 0, 0, 0, 2069, 0, - 0, 2069, 0, 0, 0, 0, 0, 86, 0, 0, - 0, 45, 71, 72, 0, 69, 73, 0, 3457, 0, - 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 640, 0, 0, 0, 0, 0, - 0, 640, 0, 0, 0, 0, 0, 0, 3471, 0, - 3472, 0, 3473, 58, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2824, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 2832, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, - 0, 0, 0, 1869, 0, 640, 0, 0, 3518, 0, - 3519, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 640, 640, 0, 0, - 0, 0, 588, 0, 588, 0, 0, 588, 0, 0, - 0, 0, 0, 0, 0, 1120, 0, 1120, 1120, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1118, 1118, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 0, 184, + 0, 620, 0, 0, 0, 0, 0, 640, 0, 3226, + 3227, 3228, 3229, 3230, 3231, 3232, 3233, 0, 0, 0, + 0, 0, 0, 123, 0, 145, 0, 0, 0, 184, + 0, 0, 0, 88, 0, 0, 166, 0, 0, 1569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1278, 0, 0, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, - 0, 0, 0, 48, 51, 54, 53, 56, 0, 68, - 0, 588, 77, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 1984, 0, 0, 820, - 0, 0, 0, 0, 0, 57, 85, 84, 1346, 1860, - 66, 67, 55, 0, 640, 0, 0, 0, 75, 76, + 0, 0, 0, 123, 0, 0, 0, 640, 0, 640, + 0, 0, 2586, 0, 0, 0, 166, 156, 0, 0, + 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, + 0, 909, 0, 0, 2610, 2611, 0, 0, 2613, 0, + 0, 2615, 163, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2622, 2623, 2624, 132, 133, 155, 154, 183, 0, + 0, 0, 163, 2629, 0, 164, 2631, 2632, 2633, 0, + 0, 0, 2634, 2635, 0, 0, 1954, 2637, 0, 0, + 2639, 0, 0, 2641, 2642, 2643, 2644, 0, 183, 0, + 0, 2645, 1954, 1954, 1954, 1954, 1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 640, 0, 0, 0, 0, 2069, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 640, 3004, - 0, 59, 60, 0, 61, 62, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, - 2147, 2148, 2149, 0, 0, 0, 0, 0, 0, 0, - 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 640, 0, 0, 0, 0, 0, 640, 1642, 0, 0, - 1642, 0, 1642, 0, 0, 0, 0, 0, 2179, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1480, 1481, - 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1477, 0, 0, 588, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 640, 0, - 0, 0, 640, 640, 1524, 0, 0, 891, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1542, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 88, 3123, 0, 3127, 3128, - 587, 0, 0, 0, 0, 0, 0, 0, 588, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 871, 0, - 0, 2716, 933, 81, 0, 2716, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1650, 1650, 0, 1650, 0, 1650, 1650, 0, 1659, - 1650, 1650, 1650, 1650, 1650, 0, 0, 0, 1346, 937, - 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, - 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1346, 0, 0, 1346, 0, - 1346, 588, 0, 0, 3249, 0, 0, 0, 0, 0, - 0, 1727, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1701, 0, 0, 0, 0, 0, 0, 1755, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1344, 0, 640, 0, - 0, 0, 0, 1757, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 0, 1120, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 1780, 1781, 588, 588, 588, - 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2716, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1368, 1369, 1370, - 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, - 1381, 1382, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, - 1414, 1415, 1416, 1418, 1419, 1420, 1421, 1422, 1423, 1424, - 1425, 1426, 1427, 1445, 1446, 1447, 1448, 1449, 1450, 1451, - 1452, 1453, 1454, 1455, 1456, 1457, 1458, 0, 0, 184, + 909, 0, 0, 0, 0, 0, 0, 2668, 2669, 2670, + 2671, 2672, 2673, 1557, 0, 0, 2674, 2675, 0, 2676, + 0, 2677, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 149, 130, 152, + 137, 129, 0, 150, 151, 0, 0, 0, 0, 167, + 0, 0, 0, 0, 0, 0, 2708, 0, 173, 138, + 0, 0, 0, 0, 0, 0, 2069, 0, 0, 0, + 0, 0, 0, 141, 139, 134, 135, 136, 140, 167, + 0, 0, 0, 2741, 0, 131, 1570, 0, 173, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 941, 0, 0, 0, + 0, 0, 0, 2803, 0, 0, 0, 1583, 1586, 1587, + 1588, 1589, 1590, 1591, 0, 1592, 1593, 1594, 1595, 1596, + 1571, 1572, 1573, 1574, 1555, 1556, 1584, 0, 1558, 941, + 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 158, + 0, 1568, 1575, 1576, 1577, 1578, 0, 1579, 1580, 1581, + 1582, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 2892, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2901, + 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, + 2524, 147, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1585, 0, 123, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, + 0, 159, 0, 0, 0, 0, 0, 0, 171, 2261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1621, 3348, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 123, 0, 145, 640, 0, 0, 81, - 0, 0, 0, 0, 0, 0, 166, 640, 0, 0, - 0, 0, 0, 0, 0, 0, 1120, 1120, 0, 0, - 0, 0, 0, 0, 1802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, - 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, - 0, 2475, 588, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 163, 0, 0, 164, 0, 0, 0, 0, - 3393, 0, 0, 0, 0, 81, 0, 1855, 0, 0, - 0, 0, 0, 0, 1625, 1626, 155, 154, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1871, 640, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 910, 910, 0, 0, 640, 1346, 0, 1904, - 1905, 0, 0, 640, 0, 0, 0, 1642, 1642, 0, - 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1344, 2547, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3475, 0, 0, 0, 0, 0, 0, 0, 1120, - 0, 0, 0, 0, 0, 0, 0, 149, 1627, 152, - 0, 1624, 0, 150, 151, 0, 0, 0, 0, 167, - 0, 910, 1757, 910, 910, 910, 910, 910, 173, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058, - 0, 1064, 0, 0, 1066, 0, 0, 2029, 0, 0, + 0, 159, 0, 144, 640, 1271, 640, 640, 171, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2271, 179, + 0, 0, 163, 0, 0, 164, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3044, 0, 0, 1625, 1626, 155, 154, 183, 179, + 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, + 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, + 177, 0, 0, 0, 3068, 0, 178, 180, 181, 182, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, + 177, 0, 0, 0, 0, 0, 178, 180, 181, 182, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 758, 3088, + 0, 3089, 0, 0, 3090, 0, 0, 3093, 3094, 0, + 0, 0, 0, 0, 2369, 0, 3098, 149, 1627, 152, + 0, 1624, 0, 150, 151, 0, 3100, 0, 0, 167, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, + 0, 0, 0, 0, 0, 0, 2401, 0, 3117, 0, + 0, 3118, 0, 3119, 3120, 0, 3121, 0, 3122, 0, + 0, 0, 639, 3123, 881, 0, 1344, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2440, 2441, 0, 3148, 0, + 0, 0, 0, 0, 2460, 0, 2461, 2462, 0, 3156, + 0, 0, 3158, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 933, 0, 940, 0, 3162, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 640, 640, 0, + 0, 0, 0, 0, 3237, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, - 0, 0, 0, 0, 2041, 0, 0, 0, 0, 0, - 910, 0, 0, 0, 0, 0, 0, 0, 1524, 0, - 0, 1120, 0, 0, 891, 0, 0, 0, 1279, 0, - 0, 0, 0, 0, 0, 640, 0, 588, 0, 0, - 0, 933, 0, 0, 1757, 588, 0, 588, 0, 588, - 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 0, 158, - 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 940, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1598, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1607, 0, + 0, 0, 0, 0, 0, 0, 2538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 933, 0, 0, 0, 0, 0, 940, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 640, 0, 0, 0, 1344, 0, - 0, 640, 640, 1344, 0, 0, 0, 153, 0, 0, + 0, 640, 0, 1633, 0, 0, 0, 0, 0, 0, + 0, 1642, 0, 0, 1344, 1644, 0, 153, 1647, 1648, + 640, 640, 0, 640, 3322, 640, 640, 0, 640, 640, + 640, 640, 640, 640, 0, 0, 0, 0, 0, 0, + 0, 1344, 1679, 1680, 1344, 640, 1344, 0, 1685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, - 0, 1855, 0, 0, 0, 1855, 1855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, + 640, 147, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1751, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2787, 0, 0, 146, 0, - 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, - 1344, 0, 0, 0, 0, 640, 588, 0, 0, 0, - 0, 159, 0, 588, 0, 0, 0, 0, 171, 0, - 0, 0, 0, 0, 0, 0, 588, 588, 0, 0, - 588, 0, 2239, 0, 0, 0, 0, 0, 0, 588, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 0, 2247, 0, 2866, 1530, 0, 179, + 0, 159, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 1547, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 0, 0, 0, 0, 0, 0, 2655, 3362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3376, 0, 0, 3377, 0, 3378, 0, 0, 0, 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, 0, 0, 0, 0, 0, 178, 180, 181, 182, - 0, 1120, 0, 0, 0, 0, 640, 0, 0, 0, + 2069, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2717, 759, 81, 0, 0, 2069, 2069, + 2069, 2069, 2069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2460, 881, 0, 0, 0, + 2069, 0, 0, 2069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3458, 0, 0, 0, 0, 0, 0, 187, 0, 0, + 588, 0, 0, 0, 0, 640, 640, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 588, 0, + 3472, 0, 3473, 1477, 3474, 0, 0, 0, 0, 0, + 0, 0, 0, 891, 0, 0, 2825, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2833, 0, 0, 0, + 910, 910, 0, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1344, 0, 0, 587, + 0, 0, 0, 0, 0, 1869, 0, 640, 0, 0, + 3519, 0, 3520, 1344, 0, 0, 0, 871, 0, 1120, + 0, 1120, 1120, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 640, + 0, 1278, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 937, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1346, 0, 1757, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 0, 0, 819, 0, 0, 0, 807, 820, 821, + 822, 823, 808, 0, 0, 809, 810, 0, 811, 0, + 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 816, 824, 825, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 2069, 0, + 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, + 640, 3005, 0, 0, 0, 0, 0, 0, 0, 2837, + 2838, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 2147, 2148, 2149, 0, 0, 0, 0, 0, + 0, 0, 1480, 1481, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 2839, 0, 0, 0, 0, 640, 1642, + 0, 0, 1642, 0, 1642, 0, 0, 0, 0, 0, + 2179, 0, 0, 0, 0, 0, 0, 0, 1524, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1542, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 640, 0, 0, 0, 640, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2840, 2841, 0, + 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3124, 0, + 3128, 3129, 0, 0, 0, 1650, 1650, 0, 1650, 0, + 1650, 1650, 0, 1659, 1650, 1650, 1650, 1650, 1650, 0, + 0, 0, 0, 2717, 0, 81, 0, 2717, 0, 0, + 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, + 0, 777, 0, 774, 775, 1727, 0, 0, 776, 588, + 0, 588, 0, 640, 588, 0, 0, 0, 0, 0, + 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1120, 0, 0, 588, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 1058, 0, + 1064, 0, 0, 1066, 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1767, 0, 0, 0, - 0, 0, 3011, 1771, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1782, 1783, 1784, 1785, 1786, 1787, - 1788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2408, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, - 2423, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 640, 640, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2717, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1279, 0, 1368, + 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, + 1379, 1380, 1381, 1382, 1383, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, + 1412, 1413, 1414, 1415, 1416, 1418, 1419, 1420, 1421, 1422, + 1423, 1424, 1425, 1426, 1427, 1445, 1446, 1447, 1448, 1449, + 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1120, 1120, 0, 3349, 0, 0, 0, 1346, 1802, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 81, 0, 0, 0, 0, 0, 0, 0, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1855, 0, 0, 588, 0, 0, 0, 0, 0, + 0, 0, 0, 2476, 0, 0, 0, 0, 0, 0, + 0, 0, 1871, 0, 891, 0, 0, 0, 0, 0, + 0, 0, 3394, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, - 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1904, 1905, 0, 0, 0, 0, 0, + 0, 640, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 1642, + 1642, 0, 0, 1120, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1346, 0, 0, 0, 0, + 1344, 2548, 0, 0, 0, 0, 1530, 0, 0, 0, + 0, 0, 0, 3476, 0, 0, 0, 0, 0, 0, + 0, 0, 1346, 0, 1547, 1346, 0, 1346, 588, 0, + 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1701, 0, + 0, 0, 0, 184, 0, 0, 0, 0, 2041, 0, + 0, 0, 0, 588, 1621, 0, 0, 0, 0, 0, + 0, 0, 1524, 0, 0, 1120, 0, 123, 0, 145, + 1757, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 166, 0, 0, 0, 0, 933, 588, 0, 0, 0, + 0, 0, 0, 588, 0, 0, 0, 1684, 0, 0, + 0, 0, 1780, 1781, 588, 588, 588, 588, 588, 588, + 588, 156, 0, 0, 0, 0, 0, 144, 640, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1729, 0, 0, 0, 163, 0, 0, 164, + 940, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 0, 1625, 1626, + 155, 154, 183, 0, 640, 1767, 0, 933, 0, 0, + 0, 0, 1771, 940, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 933, 0, 0, 0, 0, 1855, 0, 640, 0, 1855, + 1855, 1344, 0, 0, 640, 640, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2041, - 0, 588, 0, 0, 0, 0, 2531, 0, 2516, 1813, - 0, 0, 0, 0, 0, 2536, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1344, 0, 0, - 0, 0, 640, 0, 640, 0, 0, 0, 0, 0, + 0, 149, 1627, 152, 0, 1624, 0, 150, 151, 0, + 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, + 0, 0, 173, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 2788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1346, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 588, 588, 588, - 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 588, 0, 0, 640, 0, 0, 0, + 640, 0, 0, 1344, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2248, 0, + 0, 0, 0, 0, 0, 0, 0, 1346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, + 910, 0, 0, 0, 1346, 0, 0, 0, 1813, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1855, 640, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1855, 0, + 0, 0, 0, 158, 0, 1120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 640, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2655, 0, 0, 0, - 0, 0, 0, 0, 1120, 0, 0, 0, 640, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, - 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0, - 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, - 0, 0, 2059, 2692, 2062, 0, 0, 1813, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1120, 0, 0, - 0, 0, 588, 0, 2719, 1650, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, - 0, 0, 0, 0, 1346, 0, 0, 0, 0, 1346, - 588, 588, 588, 588, 588, 0, 0, 0, 0, 0, - 0, 0, 2735, 0, 0, 0, 0, 588, 0, 0, - 1701, 640, 588, 0, 0, 588, 2746, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 910, 1757, + 910, 910, 910, 910, 910, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 933, 0, 0, 0, 0, 0, 0, 0, 2041, 0, - 588, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1344, 0, 640, 0, 1346, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 1701, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 891, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, + 0, 1757, 588, 0, 588, 0, 588, 2077, 0, 0, + 0, 0, 146, 0, 0, 147, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3012, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2409, 0, 159, 0, 0, 0, 0, + 0, 0, 171, 0, 2424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 640, + 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, + 0, 2059, 0, 2062, 0, 0, 1813, 0, 0, 0, + 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 640, 640, 640, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 160, 165, 162, 168, 169, 170, + 172, 174, 175, 176, 177, 0, 2507, 0, 0, 0, + 178, 180, 181, 182, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2041, 0, 0, 0, 0, 0, 0, + 2532, 0, 0, 0, 0, 0, 0, 0, 0, 2537, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 588, 588, 0, 0, 588, 0, 2240, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 1344, 0, 0, 588, 0, 640, 0, 640, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 640, 0, 588, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, - 0, 0, 0, 1813, 819, 0, 0, 0, 0, 820, - 2214, 0, 0, 0, 0, 0, 0, 0, 0, 1860, - 0, 0, 0, 2232, 2233, 0, 0, 2237, 0, 0, - 0, 0, 0, 0, 0, 0, 2240, 0, 640, 2929, - 0, 0, 0, 2243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 2246, - 0, 0, 0, 0, 0, 0, 0, 640, 0, 640, + 0, 0, 1813, 0, 0, 0, 1855, 0, 0, 2214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 588, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 2233, 2234, 0, 0, 2238, 0, 0, 640, + 0, 0, 0, 0, 0, 2241, 0, 0, 0, 0, + 0, 0, 2244, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 0, 1855, 0, 0, 0, 0, 640, 1346, + 0, 1757, 0, 0, 0, 0, 0, 0, 2247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 0, 0, 819, 0, 0, 0, 807, - 820, 821, 822, 823, 808, 0, 0, 809, 810, 588, - 811, 0, 0, 0, 0, 0, 0, 0, 2041, 2041, - 0, 0, 0, 0, 816, 824, 825, 0, 588, 0, - 0, 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2656, 0, 0, 0, 0, 0, 0, 0, 1120, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 640, 640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1650, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 640, 0, 0, 0, 0, 0, 0, 2693, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1120, 0, 0, 0, 0, 0, 0, 2720, + 1650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3075, 3076, 3077, 3078, 0, - 0, 2836, 2837, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 1701, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2838, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2462, 0, + 0, 0, 0, 0, 640, 933, 0, 0, 0, 0, + 0, 0, 0, 2041, 588, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1701, 3151, 0, 3153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2839, - 2840, 0, 0, 0, 0, 0, 0, 0, 2510, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2041, + 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1344, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3259, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1120, 0, - 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 640, 640, 0, 0, 2517, 0, 2463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2559, 2560, 2561, 2562, 2563, 0, - 773, 0, 0, 777, 0, 774, 775, 0, 0, 0, - 776, 0, 0, 0, 0, 0, 0, 0, 3309, 1813, - 2573, 0, 3309, 3309, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 2930, 0, 0, 0, 0, 0, + 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 588, 588, 588, 588, 588, 0, + 0, 0, 0, 0, 0, 0, 0, 2511, 0, 0, + 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, + 0, 0, 0, 2560, 2561, 2562, 2563, 2564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2041, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1813, + 2574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2582, 0, 0, 2041, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3076, 3077, 3078, 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1346, 0, 0, 0, 0, 1346, 588, 588, + 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, + 2736, 0, 0, 0, 0, 588, 0, 0, 1701, 0, + 588, 0, 0, 588, 2747, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2041, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, + 3152, 0, 3154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1346, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, + 588, 0, 0, 0, 2041, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2793, 0, 0, + 3260, 0, 0, 0, 0, 0, 0, 0, 0, 819, + 0, 1984, 0, 1120, 820, 0, 0, 0, 0, 0, + 0, 0, 0, 2831, 1860, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3386, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3390, 0, 0, + 0, 0, 0, 0, 0, 0, 2860, 0, 0, 2863, + 0, 0, 0, 3310, 0, 0, 0, 3310, 3310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1346, 0, - 0, 1120, 1120, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 0, 0, 0, 0, 2041, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3441, 0, - 0, 0, 0, 0, 0, 0, 0, 2792, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2959, 0, + 0, 0, 0, 0, 0, 2041, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2830, 0, 0, 0, 0, 0, 0, - 0, 3386, 0, 0, 0, 0, 0, 2842, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 588, + 588, 588, 0, 0, 0, 0, 0, 0, 0, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2041, 0, 0, 2859, 0, 0, 2862, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, - 2929, 0, 3441, 1254, 1239, 496, 0, 1182, 1257, 1151, - 1170, 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, - 1155, 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, - 1256, 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 1263, 354, 1206, 0, 476, 384, 0, - 0, 0, 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, - 1258, 1168, 1215, 1259, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 3413, 630, 0, 0, 0, - 0, 3414, 0, 0, 0, 0, 228, 0, 2958, 235, - 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 1164, 1212, 1253, 1165, 1214, 252, 307, - 259, 251, 501, 1264, 1244, 1129, 1193, 1252, 0, 0, - 219, 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, - 1127, 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, - 0, 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, - 0, 0, 0, 0, 0, 1157, 0, 1204, 0, 0, - 0, 1136, 1128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3021, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3036, 0, 0, 3037, 3038, - 3039, 0, 0, 0, 0, 1183, 0, 0, 0, 0, - 1139, 0, 1158, 1230, 0, 1122, 284, 1133, 385, 244, - 0, 1237, 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, - 1243, 1171, 349, 1135, 316, 191, 215, 0, 1169, 395, - 441, 453, 1242, 1154, 1163, 242, 1161, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 1203, 1222, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 1134, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 1149, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 1238, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 1227, 1269, 408, 452, 230, 523, 475, - 1144, 1148, 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, - 1262, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 1231, 1138, 0, 1146, 1147, 1240, 1249, 1250, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 1202, 190, - 211, 352, 1265, 434, 275, 561, 533, 528, 197, 213, - 1141, 249, 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, - 1190, 1191, 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, - 1235, 1246, 1268, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 1201, - 1207, 365, 268, 291, 306, 1216, 532, 481, 217, 446, - 277, 240, 1234, 1236, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1197, 1225, - 360, 497, 498, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, - 0, 0, 1254, 1239, 496, 3359, 1182, 1257, 1151, 1170, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3022, 0, 0, 0, + 3387, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3391, 0, 0, 3037, 0, 0, 3038, 3039, + 3040, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1120, 1120, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3434, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, + 819, 0, 0, 3442, 807, 820, 821, 822, 823, 808, + 0, 0, 809, 810, 0, 811, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, + 824, 825, 1701, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3387, 0, 0, 0, + 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2041, 0, + 0, 0, 0, 0, 0, 0, 2837, 2838, 0, 0, + 0, 0, 0, 0, 0, 2930, 0, 3442, 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, + 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2839, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 380, 2840, 2841, 0, 1254, 1239, 496, + 0, 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, + 1196, 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, + 257, 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, + 1172, 196, 1220, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 1263, 354, 1206, + 0, 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, + 1181, 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 1701, 0, 3414, + 630, 0, 0, 0, 0, 3415, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 588, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, + 1165, 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, + 1193, 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, + 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, + 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, + 1233, 1179, 0, 0, 0, 0, 1346, 0, 0, 1157, + 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, + 0, 0, 0, 0, 0, 3360, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1183, + 0, 0, 0, 0, 1139, 0, 1158, 1230, 1701, 1122, + 284, 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, + 1178, 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, + 215, 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, + 1161, 451, 409, 521, 223, 271, 438, 415, 449, 422, + 274, 1203, 1222, 450, 356, 506, 432, 518, 543, 544, + 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, + 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, + 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, + 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, + 1134, 536, 391, 505, 515, 378, 367, 209, 513, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, + 526, 564, 224, 225, 227, 1149, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1238, 500, + 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, + 557, 555, 390, 297, 474, 319, 357, 1227, 1269, 408, + 452, 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, + 1199, 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, + 1249, 1250, 583, 368, 465, 520, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, + 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, + 363, 431, 1202, 190, 211, 352, 1265, 434, 275, 561, + 533, 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, + 1174, 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, + 1221, 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, + 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, + 0, 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, + 532, 481, 217, 446, 277, 240, 1234, 1236, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1197, 1225, 360, 497, 498, 302, 380, 0, + 0, 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, @@ -2465,7 +2475,7 @@ var yyAct = [...]int{ 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, - 0, 0, 2747, 0, 1157, 0, 1204, 0, 0, 0, + 0, 0, 2748, 0, 1157, 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2530,7 +2540,7 @@ var yyAct = [...]int{ 1193, 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, - 1233, 1179, 0, 0, 0, 0, 0, 2705, 0, 1157, + 1233, 1179, 0, 0, 0, 0, 0, 2706, 0, 1157, 0, 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3128,7 +3138,7 @@ var yyAct = [...]int{ 385, 244, 0, 762, 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 813, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 3400, + 409, 521, 223, 271, 438, 415, 449, 422, 274, 3401, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, @@ -3433,8 +3443,8 @@ var yyAct = [...]int{ 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, + 0, 0, 0, 819, 0, 0, 0, 0, 820, 0, + 0, 309, 237, 311, 195, 396, 477, 273, 1860, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, @@ -3442,11 +3452,11 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 219, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, @@ -4034,7 +4044,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 3310, 0, + 0, 0, 0, 0, 542, 0, 0, 0, 3311, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, @@ -4149,7 +4159,7 @@ var yyAct = [...]int{ 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 2424, 630, 0, 0, 0, 0, 0, + 0, 0, 0, 2425, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -4158,7 +4168,7 @@ var yyAct = [...]int{ 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2425, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4214,8 +4224,8 @@ var yyAct = [...]int{ 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 630, 0, 0, 0, 0, 2409, 0, - 0, 0, 0, 228, 0, 0, 235, 2410, 0, 0, + 0, 0, 0, 630, 0, 0, 0, 0, 2410, 0, + 0, 0, 0, 228, 0, 0, 235, 2411, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, @@ -4424,7 +4434,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, - 0, 0, 3434, 0, 0, 0, 349, 0, 316, 191, + 0, 0, 3435, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, @@ -4554,7 +4564,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, - 3310, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 3311, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, @@ -5948,7 +5958,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, - 314, 364, 370, 371, 372, 373, 3442, 393, 394, 397, + 314, 364, 370, 371, 372, 373, 3443, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, @@ -6153,54 +6163,30 @@ var yyAct = [...]int{ 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 0, 0, 360, 497, - 498, 302, 89, 0, 0, 819, 0, 0, 0, 807, - 820, 821, 822, 823, 808, 0, 0, 809, 810, 0, - 811, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 816, 824, 825, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2836, 2837, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2838, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2839, - 2840, + 498, 302, } var yyPact = [...]int{ - -1000, -1000, 5528, -1000, -443, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 3896, -1000, -445, -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, 2139, 2319, + -1000, -1000, -1000, -1000, 2330, -1000, 818, 1855, -1000, 2135, + 4361, -1000, 45733, 584, -1000, 43137, 583, 144, 28210, -1000, + 232, -1000, 216, 44435, 219, -1000, -1000, -1000, -335, 17824, + 2082, 77, 76, 45733, -1000, -1000, -1000, -1000, 2274, 1823, + -1000, 401, -1000, -1000, -1000, -1000, -1000, -1000, 42488, -1000, + 933, -1000, -1000, 2141, 2125, 2349, 742, 2081, -1000, 2213, + 1823, -1000, 17824, 2281, 2187, 17175, 17175, 523, -1000, -1000, + 245, -1000, -1000, 23667, 45733, 30806, 353, -1000, 2135, -1000, + -1000, -1000, 105, -1000, 423, 1754, -1000, 1739, -1000, 699, + 737, 444, 560, 539, 443, 441, 440, 436, 435, 430, + 428, 418, 450, -1000, 771, 771, -123, -124, 4391, 508, + 515, 515, 816, 555, 2106, 2103, -1000, -1000, 771, 771, + 771, 427, 771, 771, 771, 771, 373, 372, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 570, 2135, 321, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2173, 2225, - -1000, -1000, -1000, -1000, 2373, -1000, 794, 1884, -1000, 2162, - 4360, -1000, 45633, 541, -1000, 43037, 539, 143, 28110, -1000, - 220, -1000, 198, 44335, 208, -1000, -1000, -1000, -332, 17724, - 2094, 97, 91, 45633, -1000, -1000, -1000, -1000, 2314, 1836, - -1000, 396, -1000, -1000, -1000, -1000, -1000, -1000, 42388, -1000, - 903, -1000, -1000, 2170, 2167, 2383, 711, 2099, -1000, 2247, - 1836, -1000, 17724, 2312, 2232, 17075, 17075, 493, -1000, -1000, - 281, -1000, -1000, 23567, 45633, 30706, 397, -1000, 2162, -1000, - -1000, -1000, 114, -1000, 398, 1756, -1000, 1755, -1000, 694, - 722, 429, 538, 494, 428, 423, 420, 419, 417, 410, - 409, 406, 408, -1000, 740, 740, -120, -121, 4794, 481, - 484, 484, 863, 517, 2131, 2130, -1000, -1000, 740, 740, - 740, 377, 740, 740, 740, 740, 338, 336, 740, 740, - 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, - 740, 740, 740, 740, 740, 469, 2162, 321, -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, @@ -6239,61 +6225,61 @@ 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, 45733, 262, 45733, -1000, 656, 45733, + 922, 922, 179, 922, 922, 922, 922, 220, 697, 70, + -1000, 215, 317, 180, 313, 916, 273, -1000, -1000, 310, + 916, 1581, -1000, 754, 308, 176, -1000, 922, 922, -1000, + 11309, 174, 11309, 11309, -1000, 2130, -1000, -1000, -1000, -1000, + -1000, 1179, -1000, -1000, -1000, -1000, -1000, 554, -1000, -1000, + -1000, -1000, 44435, 41839, -1000, -1000, 165, -1000, -1000, 1630, + 1002, 17824, 1043, -1000, 1279, 717, -1000, -1000, -1000, -1000, + -1000, 611, -1000, 18473, 18473, 18473, 18473, -1000, -1000, 1758, + 41190, 1758, 1758, 18473, 1758, -1000, 18473, 1758, 1758, 1758, + 17824, 1758, 1758, 1758, 1758, -1000, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, -1000, -1000, -1000, -1000, 1758, 652, + 1758, 1758, 1758, 1758, 1758, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1758, 1758, 1758, 1758, 1758, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 19771, 1310, 1300, 1296, -1000, 15228, 1758, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 45633, 329, 45633, -1000, 617, 45633, - 862, 862, 123, 862, 862, 862, 862, 217, 678, 70, - -1000, 205, 317, 212, 319, 867, 202, -1000, -1000, 308, - 867, 1592, -1000, 729, 313, 168, -1000, 862, 862, -1000, - 11209, 175, 11209, 11209, -1000, 2158, -1000, -1000, -1000, -1000, - -1000, 1010, -1000, -1000, -1000, -1000, -1000, 512, -1000, -1000, - -1000, -1000, 44335, 41739, -1000, -1000, 165, -1000, -1000, 1649, - 1348, 17724, 1149, -1000, 1279, 681, -1000, -1000, -1000, -1000, - -1000, 597, -1000, 18373, 18373, 18373, 18373, -1000, -1000, 1761, - 41090, 1761, 1761, 18373, 1761, -1000, 18373, 1761, 1761, 1761, - 17724, 1761, 1761, 1761, 1761, -1000, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, -1000, -1000, -1000, -1000, 1761, 612, - 1761, 1761, 1761, 1761, 1761, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1761, 1761, 1761, 1761, 1761, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 19671, 1333, 1312, 1309, -1000, 15128, 1761, -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, -1000, 45733, + -1000, 1758, 270, 44435, 44435, 442, 2213, 1823, -1000, 2274, + 2231, 401, -1000, 2737, 1473, 1368, 1233, 1823, 1715, 45733, + -1000, 1791, -1000, -1000, -1000, -1000, 2011, 1305, 1571, -1000, + -1000, -1000, -1000, 1702, 17824, -1000, -1000, 2324, -1000, 21070, + 649, 2321, 40541, -1000, 523, 523, 1738, 462, 19, -1000, + -1000, -1000, -1000, 791, 27561, -1000, -1000, -1000, -1000, 1614, + 45733, -1000, -1000, 4376, 1160, -1000, 1854, -1000, 1612, -1000, + 1821, 17824, 1867, 582, 1160, 566, 565, 563, -1000, -25, + -1000, -1000, -1000, -1000, -1000, -1000, 771, 771, 771, -1000, + 400, 2272, 4361, 6555, -1000, -1000, -1000, 39892, 1851, 1160, + -1000, 1850, -1000, 867, 617, 665, 665, 1160, -1000, -1000, + 45084, 1160, 866, 864, 1160, 1160, 44435, 44435, -1000, 39243, + -1000, 38594, 37945, 1146, 44435, 37296, 36647, 35998, 35349, 34700, + -1000, 1911, -1000, 1837, -1000, -1000, -1000, 45084, 1160, 1160, + 45084, 44435, 45084, 45733, 1160, -1000, -1000, 370, -1000, -1000, + 1138, 1133, 1128, 771, 771, 1120, 1555, 1553, 1539, 771, + 771, 1116, 1507, 29508, 1505, 346, 1112, 1107, 1106, 1137, + 1503, 212, 1482, 1080, 1072, 1095, 44435, 1848, 45733, -1000, + 302, 788, 587, 439, 789, 2135, 2078, 1733, 536, 571, + 1160, 518, 518, 44435, -1000, 13274, -1000, -1000, 1452, 17824, + -1000, 918, 916, 916, -1000, -1000, -1000, -1000, -1000, -1000, + 922, 45733, 918, -1000, -1000, -1000, 916, 922, 45733, 922, + 922, 922, 922, 916, 916, 916, 922, 45733, 45733, 45733, + 45733, 45733, 45733, 45733, 45733, 45733, 11309, 754, 922, -339, + -1000, 1450, -1000, -1000, 1967, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 45633, - -1000, 1761, 269, 44335, 44335, 399, 2247, 1836, -1000, 2314, - 2271, 396, -1000, 2857, 2074, 1446, 1254, 1836, 1735, 45633, - -1000, 1800, -1000, -1000, -1000, -1000, 2021, 1274, 1582, -1000, - -1000, -1000, -1000, 1632, 17724, -1000, -1000, 2364, -1000, 20970, - 607, 2358, 40441, -1000, 493, 493, 1746, 440, 50, -1000, - -1000, -1000, -1000, 783, 27461, -1000, -1000, -1000, -1000, 1647, - 45633, -1000, -1000, 4315, 1158, -1000, 1883, -1000, 1605, -1000, - 1842, 17724, 1904, 537, 1158, 531, 530, 526, -1000, -28, - -1000, -1000, -1000, -1000, -1000, -1000, 740, 740, 740, -1000, - 402, 2309, 4360, 6311, -1000, -1000, -1000, 39792, 1871, 1158, - -1000, 1870, -1000, 843, 591, 638, 638, 1158, -1000, -1000, - 44984, 1158, 835, 834, 1158, 1158, 44335, 44335, -1000, 39143, - -1000, 38494, 37845, 1140, 44335, 37196, 36547, 35898, 35249, 34600, - -1000, 2049, -1000, 1937, -1000, -1000, -1000, 44984, 1158, 1158, - 44984, 44335, 44984, 45633, 1158, -1000, -1000, 372, -1000, -1000, - 1137, 1136, 1135, 740, 740, 1134, 1579, 1568, 1555, 740, - 740, 1127, 1553, 29408, 1547, 300, 1116, 1111, 1091, 1048, - 1507, 209, 1490, 1047, 1045, 1090, 44335, 1868, 45633, -1000, - 304, 718, 496, 434, 780, 2162, 2092, 1744, 511, 536, - 1158, 490, 490, 44335, -1000, 13174, -1000, -1000, 1487, 17724, - -1000, 880, 867, 867, -1000, -1000, -1000, -1000, -1000, -1000, - 862, 45633, 880, -1000, -1000, -1000, 867, 862, 45633, 862, - 862, 862, 862, 867, 867, 867, 862, 45633, 45633, 45633, - 45633, 45633, 45633, 45633, 45633, 45633, 11209, 729, 862, -337, - -1000, 1477, -1000, -1000, 2001, -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, @@ -6308,283 +6294,282 @@ 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, 11309, 11309, -1000, -1000, -1000, -1000, 193, -1000, 34051, + 395, 781, -1000, 1731, 33402, -1000, -341, -343, -345, -350, + -1000, -1000, -1000, -355, -357, -1000, -1000, -1000, 17824, 17824, + 17824, 17824, -198, -1000, 1182, 18473, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 164, 931, 18473, 18473, 18473, 18473, 18473, + 18473, 18473, 18473, 18473, 18473, 18473, 18473, 18473, 18473, 18473, + -1000, -1000, 25614, 19103, 19103, 717, 717, 717, 717, -1000, + -88, 1729, 45084, -1000, -1000, -1000, 647, 17824, 17824, 717, + -1000, 1160, 15228, 32753, 17175, 17175, 17824, 802, 1002, 45084, + 17824, -1000, 1233, -1000, -1000, -1000, 1024, -1000, 911, 2119, + 2119, 2119, 2119, 17824, 17824, 17824, 17824, 17824, 17824, 17824, + 17824, 17824, 17824, 2119, 44435, 44435, 185, 17824, 17824, 17824, + 17824, 17824, 17824, 13929, 17824, 17824, 18473, 17824, 17824, 17824, + 1233, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, + 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, + 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 1233, 17824, + 1221, 17824, 17824, 17175, 12619, 17175, 17175, 17175, 17175, 17175, + -1000, -1000, -1000, -1000, -1000, 17824, 17824, 17824, 17824, 17824, + 17824, 17824, 17824, 1233, 17824, 17824, 17824, 17824, 17824, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1343, + 1369, 1328, 17824, -1000, 1723, -1000, -151, 23018, 17824, 1447, + 2317, 1897, 44435, -1000, -1000, -1000, 2213, -1000, 2213, 1343, + 2370, 2025, 17175, -1000, -1000, 2370, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1497, -1000, 45733, 1715, 2178, 44435, + 2017, 1434, 384, -1000, 17824, 17824, 1714, -1000, 1531, 45733, + -1000, -198, -1000, 32104, -1000, -1000, 10654, 45733, 410, 45733, + -1000, 22369, 31455, 301, 19, -1000, 1679, -1000, 36, 49, + 14578, 706, -1000, -1000, -1000, 4391, 19122, 1624, 706, 126, + -1000, -1000, -1000, 1821, -1000, 1821, 1821, 1821, 1821, 384, + 384, 384, 384, -1000, -1000, -1000, -1000, -1000, 1842, 1841, + -1000, 1821, 1821, 1821, 1821, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 11209, 11209, -1000, -1000, -1000, -1000, 203, -1000, 33951, - 422, 777, -1000, 1741, 33302, -1000, -341, -345, -347, -354, - -1000, -1000, -1000, -355, -357, -1000, -1000, -1000, 17724, 17724, - 17724, 17724, -182, -1000, 897, 18373, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 166, 951, 18373, 18373, 18373, 18373, 18373, - 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, 18373, - -1000, -1000, 25514, 7624, 7624, 681, 681, 681, 681, -1000, - -95, 1740, 44984, -1000, -1000, -1000, 604, 17724, 17724, 681, - -1000, 1158, 15128, 32653, 17075, 17075, 17724, 786, 1348, 44984, - 17724, -1000, 1254, -1000, -1000, -1000, 1129, -1000, 865, 2140, - 2140, 2140, 2140, 17724, 17724, 17724, 17724, 17724, 17724, 17724, - 17724, 17724, 17724, 2140, 44335, 44335, 219, 17724, 17724, 17724, - 17724, 17724, 17724, 13829, 17724, 17724, 18373, 17724, 17724, 17724, - 1254, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, - 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, - 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 1254, 17724, - 1124, 17724, 17724, 17075, 12519, 17075, 17075, 17075, 17075, 17075, - -1000, -1000, -1000, -1000, -1000, 17724, 17724, 17724, 17724, 17724, - 17724, 17724, 17724, 1254, 17724, 17724, 17724, 17724, 17724, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1341, - 1294, 1246, 17724, -1000, 1736, -1000, -151, 22918, 17724, 1472, - 2349, 1929, 44335, -1000, -1000, -1000, 2247, -1000, 2247, 1341, - 2707, 2034, 17075, -1000, -1000, 2707, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1510, -1000, 45633, 1735, 2202, 44335, - 2025, 1442, 431, -1000, 17724, 17724, 1734, -1000, 1180, 45633, - -1000, -182, -1000, 32004, -1000, -1000, 10554, 45633, 400, 45633, - -1000, 22269, 31355, 284, 50, -1000, 1715, -1000, 33, 76, - 14478, 680, -1000, -1000, -1000, 4794, 19022, 1628, 680, 135, - -1000, -1000, -1000, 1842, -1000, 1842, 1842, 1842, 1842, 431, - 431, 431, 431, -1000, -1000, -1000, -1000, -1000, 1864, 1859, - -1000, 1842, 1842, 1842, 1842, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1840, 1840, 1840, 1824, 1824, 507, -1000, 17824, + 336, 30806, 2148, 1094, 1156, 302, 519, 1891, 1160, 1160, + 1160, 519, -1000, 1243, 1238, 1214, -1000, -428, 1706, -1000, + -1000, 2271, -1000, -1000, 782, 894, 884, 764, 44435, 277, + 397, -1000, 481, -1000, 30806, 1160, 863, 665, 1160, -1000, + 1160, -1000, -1000, -1000, -1000, -1000, 1160, -1000, -1000, 1700, + -1000, 1730, 1018, 882, 1008, 878, 1700, -1000, -1000, -95, + 1700, -1000, 1700, -1000, 1700, -1000, 1700, -1000, 1700, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 797, 177, + -226, 44435, 277, 535, -1000, 532, 25614, -1000, -1000, -1000, + 25614, 25614, -1000, -1000, -1000, -1000, 1431, 1417, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1856, 1856, 1856, 1848, 1848, 478, -1000, 17724, - 325, 30706, 2182, 1089, 1529, 304, 491, 1922, 1158, 1158, - 1158, 491, -1000, 1207, 1164, 1157, -1000, -428, 1733, -1000, - -1000, 2305, -1000, -1000, 782, 869, 864, 725, 44335, 276, - 366, -1000, 463, -1000, 30706, 1158, 825, 638, 1158, -1000, - 1158, -1000, -1000, -1000, -1000, -1000, 1158, -1000, -1000, 1731, - -1000, 1689, 970, 858, 927, 854, 1731, -1000, -1000, -107, - 1731, -1000, 1731, -1000, 1731, -1000, 1731, -1000, 1731, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 774, 204, - -232, 44335, 276, 509, -1000, 508, 25514, -1000, -1000, -1000, - 25514, 25514, -1000, -1000, -1000, -1000, 1441, 1417, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -415, 45733, -1000, + 294, 778, 356, 394, 345, 45733, 354, 2191, 2190, 2183, + 2181, 2163, -1000, -1000, -1000, 1145, 339, 364, 45733, 45733, + 518, 1944, 45733, 2152, 45733, -1000, -1000, -1000, -1000, -1000, + 1002, 45733, -1000, -1000, 922, 922, -1000, -1000, 45733, 922, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 922, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -412, 45633, -1000, - 287, 758, 341, 387, 345, 45633, 324, 2234, 2216, 2212, - 2210, 2205, -1000, -1000, -1000, 1408, 290, 335, 45633, 45633, - 490, 1983, 45633, 2187, 45633, -1000, -1000, -1000, -1000, -1000, - 1348, 45633, -1000, -1000, 862, 862, -1000, -1000, 45633, 862, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 862, -1000, + -1000, -1000, -1000, -1000, 45733, -1000, -1000, -1000, -1000, 44435, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -96, + 207, 30, 405, -1000, -1000, -1000, -1000, -1000, 2201, -1000, + 1002, 828, 832, -1000, 1758, -1000, -1000, 982, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 164, 18473, 18473, 18473, 1691, + 552, 1869, 1885, 1015, 902, 902, 786, 786, 723, 723, + 723, 723, 723, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1408, -1000, 1758, 45084, 1605, 12619, 2216, 1170, 1233, + 2781, -1000, 1603, -1000, 1603, 1995, 813, -1000, 17824, 1233, + 2756, -1000, -1000, 1233, 1233, 1233, 17824, -1000, -1000, 17824, + 17824, 17824, 17824, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 17824, 1694, 1693, 2315, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 45633, -1000, -1000, -1000, -1000, 44335, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -48, - 224, 29, 407, -1000, -1000, -1000, -1000, -1000, 2237, -1000, - 1348, 809, 802, -1000, 1761, -1000, -1000, 1040, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 166, 18373, 18373, 18373, 1581, - 544, 1690, 1443, 1030, 840, 840, 1009, 1009, 687, 687, - 687, 687, 687, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1398, -1000, 1761, 44984, 1599, 12519, 1382, 1322, 1254, - 2756, -1000, 1578, -1000, 1578, 1938, 808, -1000, 17724, 1254, - 2750, -1000, -1000, 1254, 1254, 1254, 17724, -1000, -1000, 17724, - 17724, 17724, 17724, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 17724, 1730, 1729, 2347, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1812, 1156, + 1156, 1156, 1156, 1156, 17824, 1384, -1000, -1000, -1000, 1287, + 2745, 1583, 2726, 1156, 1156, -1000, 1156, 2720, 2700, 1233, + 1630, 1233, 1689, -1000, 2696, 1156, 2658, 2641, 2615, 1935, + 2611, 2575, 2556, 1156, 1156, 1156, 1740, 2456, 2367, 2333, + 2309, 2303, 2285, 2262, 2247, 2240, 1156, -200, 1156, 1233, + -1000, -1000, -1000, -1000, -1000, 2236, 1726, 1233, 1686, 1758, + 646, -1000, -1000, 1603, 1233, 1233, 1603, 1603, 2227, 2206, + 2192, 2179, 2161, 2142, 1156, 1156, -1000, 1156, 2115, 2096, + 1695, 1683, 1233, -1000, 1328, 45733, -1000, -329, -1000, 13, + 698, 1758, -1000, 29508, 1233, -1000, 8039, -1000, 1154, -1000, + -1000, -1000, -1000, -1000, 26912, 1601, 2370, -1000, -1000, 1758, + 1594, -1000, -1000, 384, 115, 26263, 680, 680, 192, 1002, + 1002, 17824, -1000, -1000, -1000, -1000, -1000, -1000, 640, 2294, + 365, 1758, -1000, 1678, 2664, -1000, -1000, -1000, 2173, 20421, + -1000, 1758, 1758, 45733, 1610, 1489, -1000, 638, -1000, 1217, + 1679, 19, 95, -1000, -1000, -1000, -1000, 1002, -1000, 1201, + 417, 631, -1000, 479, -1000, -1000, -1000, -1000, 2088, 122, + -1000, -1000, -1000, 240, 384, -1000, -1000, -1000, -1000, -1000, + -1000, 1403, 1403, -1000, -1000, -1000, -1000, -1000, 1081, -1000, + -1000, -1000, 1063, -1000, -1000, 1989, 1936, 336, -1000, -1000, + 771, 1385, -1000, -1000, 2095, 771, 771, 44435, -1000, -1000, + 1607, 2148, 294, 45733, 822, 1943, -1000, 1891, 1891, 1891, + 45733, -1000, -1000, -1000, -1000, -1000, -1000, -416, 79, 396, + -1000, -1000, -1000, 4851, 44435, 1580, -1000, 278, -1000, 1444, + -1000, 44435, -1000, 1570, 1838, 1160, 1160, -1000, -1000, -1000, + 44435, 1758, -1000, -1000, -1000, -1000, 568, 2134, 264, -1000, + -1000, -221, -1000, -1000, 277, 278, 45084, 1160, 706, -1000, + -1000, -1000, -1000, -1000, -418, 1566, 559, 281, 341, 45733, + 45733, 45733, 45733, 45733, 636, -1000, -1000, 50, -1000, -1000, + 263, -1000, -1000, -1000, -1000, 263, -1000, -1000, -1000, -1000, + -1000, -1000, 326, 530, -1000, 45733, 45733, 659, -1000, -1000, + -1000, 916, -1000, -1000, 916, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2127, 45733, 27, -382, -1000, + -370, 17824, -1000, -1000, -1000, -1000, 1117, 550, 1869, 18473, + 18473, 18473, -1000, -1000, -1000, 350, 350, 25614, -1000, 17824, + 17175, -1000, -1000, 17824, 17824, 798, -1000, 17824, 1079, -1000, + 17824, -1000, -1000, -1000, 1328, 1156, 1156, 1156, 1156, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1633, + 17824, 17824, 17824, 1233, 347, -1000, -1000, -1000, -1000, -1000, + 2308, -1000, 17824, -1000, 25614, 17824, 17824, 17824, -1000, -1000, + -1000, 17824, 17824, -1000, -1000, 17824, 17824, -1000, 17824, 17824, + 17824, -1000, 17824, 17824, 17824, 17824, -1000, -1000, -1000, -1000, + 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, 17824, + -1000, -1000, 30806, 52, -200, 1221, 52, 1221, -1000, 17175, + 11964, -1000, -1000, -1000, -1000, -1000, 17824, 17824, 17824, 17824, + 17824, 17824, -1000, -1000, -1000, 17824, 17824, -1000, 17824, -1000, + 17824, -1000, -1000, -1000, -1000, -1000, 698, -1000, 665, 665, + 665, 44435, -1000, -1000, -1000, -1000, 1675, -1000, 2210, -1000, + 2034, 2031, 2307, 2294, -1000, 22369, 2370, -1000, -1000, 44435, + -322, -1000, 2075, 2069, 680, 680, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9999, 2213, 17824, 1939, 45084, 161, -1000, + 21720, 44435, 45084, 22369, 22369, 22369, 22369, 22369, -1000, 2001, + 1994, -1000, 1993, 1959, 2012, 45733, -1000, 1562, 1233, 2231, + 20421, 401, 17824, 24316, 1626, 22369, -1000, -1000, 22369, 45733, + 9344, -1000, -1000, 21, 38, -1000, -1000, -1000, -1000, 4391, + -1000, -1000, 1242, 2168, 2091, -1000, -1000, -1000, -1000, -1000, + 1546, -1000, 1532, 1674, 1525, 177, -1000, 1866, 2116, 771, + 771, -1000, 1046, -1000, 1160, 1366, 1363, -1000, -1000, -1000, + 557, -1000, 2151, 45733, 1930, 1927, 1925, -1000, -434, 1040, + 1836, 1864, 17824, 1832, 2265, 1649, 44435, -1000, -1000, 45084, + -1000, 173, -1000, 336, 44435, -1000, -1000, -1000, 397, 45733, + -1000, 8360, -1000, -1000, -1000, 278, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 45733, 291, -1000, 1827, 1155, -1000, -1000, + 1877, -1000, -1000, -1000, -1000, 228, 328, 1345, 260, 1340, + 260, -1000, 45733, 581, 1936, 45733, -1000, -1000, -1000, 922, + 922, -1000, -1000, 2109, -1000, 1160, 1156, 18473, 18473, -1000, + 717, 307, -179, 1821, 1821, -1000, 1821, 1824, -1000, 1821, + 208, 1821, 191, 1821, -1000, -1000, 1233, 1233, 1328, -1000, + 1637, 969, -1000, 1002, 17824, 2087, -1000, -1000, -1000, -1000, + -1000, -35, 2067, 2059, 1156, -1000, 1820, 1817, 17824, 1156, + 1233, 1590, 1156, 1156, 1156, 1156, -1000, 1002, 1328, 2015, + 1328, 1156, 1156, 2010, 300, 1156, 1523, 1523, 1523, 1523, + 1523, 1328, 1328, 1328, 1328, 44435, -1000, -200, -1000, -1000, + -244, -249, -1000, 1233, -200, 1673, 1233, -1000, 1578, 1485, + 1999, 1476, 1156, 1974, 1156, 1156, 1156, 1460, -1000, 2195, + 2195, 2195, 1518, 1154, 45733, -1000, -1000, -1000, -1000, 2294, + 2292, 1653, -1000, -1000, 115, 456, -1000, 2046, 2069, -1000, + 2259, 2056, 2258, -1000, -1000, -1000, -1000, -1000, 1002, -1000, + 2137, 1597, -1000, 777, 1640, -1000, -1000, 16526, 1520, 2030, + 629, 1518, 1724, 2664, 1884, 1924, 2857, -1000, -1000, -1000, + -1000, 1978, -1000, 1955, -1000, -1000, 1791, -1000, -1000, 1369, + 1233, 1735, 410, 22369, 1711, 1711, -1000, 627, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 912, 5683, 2343, -1000, 1333, + -1000, 1159, 205, 1036, -1000, -1000, 771, 771, -1000, 856, + 851, -1000, 45733, 1806, -1000, 384, 1318, 384, 1035, -1000, + 1025, -1000, -1000, -1000, -1000, 1807, 1892, -1000, -1000, -1000, + -1000, 45733, -1000, -1000, 45733, 45733, 45733, 1802, 2252, -1000, + 17824, 1801, 776, 1970, 44435, 44435, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 505, 771, -396, + 362, 359, 771, 771, 771, -435, -1000, -1000, 1468, 1466, + -1000, -125, -1000, 17824, -1000, -1000, -1000, 1065, 1065, 1310, + 1300, 1296, -1000, 1791, -1000, -1000, -1000, 1412, -1000, -1000, + -104, 44435, 44435, 44435, 44435, -1000, -1000, 1134, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1049, 1529, - 1529, 1529, 1529, 1529, 17724, 1080, -1000, -1000, -1000, 1251, - 2734, 1206, 2725, 1529, 1529, -1000, 1529, 2719, 2695, 1254, - 1649, 1254, 1728, -1000, 2657, 1529, 2640, 2614, 2610, 1903, - 2574, 2555, 2366, 1529, 1529, 1529, 1860, 2335, 2326, 2306, - 2302, 2262, 2250, 2243, 2239, 2235, 1529, -193, 1529, 1254, - -1000, -1000, -1000, -1000, -1000, 2214, 1833, 1254, 1724, 1761, - 603, -1000, -1000, 1578, 1254, 1254, 1578, 1578, 2201, 2195, - 2179, 2143, 2139, 2110, 1529, 1529, -1000, 1529, 2096, 2067, - 1737, 1726, 1254, -1000, 1246, 45633, -1000, -325, -1000, 9, - 683, 1761, -1000, 29408, 1254, -1000, 5684, -1000, 931, -1000, - -1000, -1000, -1000, -1000, 26812, 1571, 2707, -1000, -1000, 1761, - 1546, -1000, -1000, 431, 124, 26163, 659, 659, 184, 1348, - 1348, 17724, -1000, -1000, -1000, -1000, -1000, -1000, 602, 2329, - 403, 1761, -1000, 1707, 2298, -1000, -1000, -1000, 2200, 20321, - -1000, 1761, 1761, 45633, 1640, 1486, -1000, 593, -1000, 1166, - 1715, 50, 24, -1000, -1000, -1000, -1000, 1348, -1000, 1155, - 405, 636, -1000, 456, -1000, -1000, -1000, -1000, 2107, 119, - -1000, -1000, -1000, 248, 431, -1000, -1000, -1000, -1000, -1000, - -1000, 1393, 1393, -1000, -1000, -1000, -1000, -1000, 1079, -1000, - -1000, -1000, 1077, -1000, -1000, 1974, 1959, 325, -1000, -1000, - 740, 1391, -1000, -1000, 2118, 740, 740, 44335, -1000, -1000, - 1617, 2182, 287, 45633, 793, 1981, -1000, 1922, 1922, 1922, - 45633, -1000, -1000, -1000, -1000, -1000, -1000, -416, 78, 379, - -1000, -1000, -1000, 4849, 44335, 1542, -1000, 272, -1000, 1610, - -1000, 44335, -1000, 1536, 1854, 1158, 1158, -1000, -1000, -1000, - 44335, 1761, -1000, -1000, -1000, -1000, 534, 2160, 263, -1000, - -1000, -214, -1000, -1000, 276, 272, 44984, 1158, 680, -1000, - -1000, -1000, -1000, -1000, -418, 1484, 522, 279, 331, 45633, - 45633, 45633, 45633, 45633, 589, -1000, -1000, 54, -1000, -1000, - 237, -1000, -1000, -1000, -1000, 237, -1000, -1000, -1000, -1000, - -1000, 327, 498, -1000, 45633, 45633, 624, -1000, -1000, -1000, - 867, -1000, -1000, 867, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2153, 45633, 19, -373, -1000, -368, - 17724, -1000, -1000, -1000, -1000, 1122, 533, 1690, 18373, 18373, - 18373, -1000, -1000, -1000, 738, 738, 25514, -1000, 17724, 17075, - -1000, -1000, 17724, 17724, 785, -1000, 17724, 988, -1000, 17724, - -1000, -1000, -1000, 1246, 1529, 1529, 1529, 1529, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1682, 17724, - 17724, 17724, 1254, 339, -1000, -1000, -1000, -1000, -1000, 2346, - -1000, 17724, -1000, 25514, 17724, 17724, 17724, -1000, -1000, -1000, - 17724, 17724, -1000, -1000, 17724, 17724, -1000, 17724, 17724, 17724, - -1000, 17724, 17724, 17724, 17724, -1000, -1000, -1000, -1000, 17724, - 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, 17724, -1000, - -1000, 30706, 83, -193, 1124, 83, 1124, -1000, 17075, 11864, - -1000, -1000, -1000, -1000, -1000, 17724, 17724, 17724, 17724, 17724, - 17724, -1000, -1000, -1000, 17724, 17724, -1000, 17724, -1000, 17724, - -1000, -1000, -1000, -1000, -1000, 683, -1000, 638, 638, 638, - 44335, -1000, -1000, -1000, -1000, 1714, -1000, 2230, -1000, 2044, - 2043, 2342, 2329, -1000, 22269, 2707, -1000, -1000, 44335, -315, - -1000, 2085, 2087, 659, 659, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 9899, 2247, 17724, 1976, 44984, 161, -1000, 21620, - 44335, 44984, 22269, 22269, 22269, 22269, 22269, -1000, 2006, 1988, - -1000, 1998, 1997, 2064, 45633, -1000, 1471, 1254, 2271, 20321, - 396, 17724, 24216, 1678, 22269, -1000, -1000, 22269, 45633, 9244, - -1000, -1000, 15, 34, -1000, -1000, -1000, -1000, 4794, -1000, - -1000, 1284, 2199, 2104, -1000, -1000, -1000, -1000, -1000, 1467, - -1000, 1460, 1697, 1437, 204, -1000, 1901, 2141, 740, 740, - -1000, 1075, -1000, 1158, 1385, 1375, -1000, -1000, -1000, 521, - -1000, 2185, 45633, 1975, 1973, 1972, -1000, -434, 1052, 1852, - 1838, 17724, 1851, 2304, 1675, 44335, -1000, -1000, 44984, -1000, - 173, -1000, 325, 44335, -1000, -1000, -1000, 366, 45633, -1000, - 46205, -1000, -1000, -1000, 272, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 45633, 291, -1000, 1850, 974, -1000, -1000, 1907, - -1000, -1000, -1000, -1000, 223, 333, 1372, 213, 1363, 213, - -1000, 45633, 615, 1959, 45633, -1000, -1000, -1000, 862, 862, - -1000, -1000, 2134, -1000, 1158, 1529, 18373, 18373, -1000, 681, - 305, -127, 1842, 1842, -1000, 1842, 1848, -1000, 1842, 188, - 1842, 174, 1842, -1000, -1000, 1254, 1254, 1246, -1000, 1708, - 1343, -1000, 1348, 17724, 2039, -1000, -1000, -1000, -1000, -1000, - -36, 2035, 2020, 1529, -1000, 1827, 1824, 17724, 1529, 1254, - 1700, 1529, 1529, 1529, 1529, -1000, 1348, 1246, 2015, 1246, - 1529, 1529, 2010, 323, 1529, 1415, 1415, 1415, 1415, 1415, - 1246, 1246, 1246, 1246, 44335, -1000, -193, -1000, -1000, -234, - -235, -1000, 1254, -193, 1696, 1254, -1000, 1694, 1637, 1999, - 1590, 1529, 1978, 1529, 1529, 1529, 1572, -1000, 2236, 2236, - 2236, 1403, 931, 45633, -1000, -1000, -1000, -1000, 2329, 2327, - 1693, -1000, -1000, 124, 458, -1000, 2070, 2087, -1000, 2295, - 2072, 2294, -1000, -1000, -1000, -1000, -1000, 1348, -1000, 2142, - 1608, -1000, 757, 1672, -1000, -1000, 16426, 1407, 2038, 587, - 1403, 1723, 2298, 1957, 1971, 2841, -1000, -1000, -1000, -1000, - 1984, -1000, 1969, -1000, -1000, 1800, -1000, -1000, 1294, 1254, - 1950, 400, 22269, 1711, 1711, -1000, 585, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 883, 7785, 2380, -1000, 1345, -1000, - 1151, 214, 1039, -1000, -1000, 740, 740, -1000, 822, 821, - -1000, 45633, 1821, -1000, 431, 1338, 431, 1035, -1000, 1003, - -1000, -1000, -1000, -1000, 1878, 1952, -1000, -1000, -1000, -1000, - 45633, -1000, -1000, 45633, 45633, 45633, 1817, 2292, -1000, 17724, - 1804, 745, 1920, 44335, 44335, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 448, 740, -396, 334, - 326, 740, 740, 740, -436, -1000, -1000, 1368, 1337, -1000, - -118, -1000, 17724, -1000, -1000, -1000, 1069, 1069, 1333, 1312, - 1309, -1000, 1800, -1000, -1000, -1000, 1543, -1000, -1000, -110, - 44335, 44335, 44335, 44335, -1000, -1000, 975, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 681, - 1254, 332, -112, 1254, -1000, -1000, 431, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 17724, -1000, 17724, - -1000, 1348, 17724, 2247, 1306, 17724, 17724, -1000, 964, 960, - 1529, -1000, -1000, -1000, 17724, -1000, -1000, -1000, -1000, -1000, - 17724, -1000, -1000, -1000, 17724, 289, 738, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1254, 367, -1000, - -1000, -1000, -1000, 2339, -1000, 1254, 17724, -1000, -1000, 17724, - -1000, 17724, 17724, -1000, 17724, -1000, 17724, -1000, -1000, -1000, - -1000, 17724, 1761, 2057, 1761, 1761, 24216, -1000, -1000, 2327, - 2317, 2289, 2052, 2059, 2059, 2070, -1000, 2288, 2281, -1000, - 1298, 2280, 1275, 819, -1000, 44984, 17724, 161, -1000, 395, - 44335, 161, 44335, -1000, 2307, -1000, -1000, 17724, 1802, -1000, - 17724, -1000, -1000, -1000, -1000, -1000, -1000, 7624, 2329, 1711, - -1000, -1000, 695, -1000, 17724, -1000, -1000, -1000, 3777, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1261, 1258, -1000, - -1000, 1801, 17724, -1000, -1000, -1000, 1530, 1468, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1800, -1000, -1000, -1000, - -1000, 366, -423, 1915, 44335, 949, -1000, 1328, 1675, 358, - 161, 1240, 740, 740, 740, 941, 940, 29408, 1324, -1000, - 44335, 425, -1000, 366, -1000, -123, -124, 1529, -1000, -1000, - 2196, -1000, -1000, 11864, -1000, -1000, 1796, 1912, -1000, -1000, - -1000, -1000, 2022, -104, -115, -1000, -1000, 1529, 1529, 1786, - 1254, -1000, 1529, 1529, 1329, 1325, -1000, 1529, 1246, 1550, - -1000, 289, 1254, 1963, -1000, -1000, 7624, -1000, -1000, 2307, - 2279, 83, -1000, -1000, 275, 83, 1348, 1534, 1529, 1454, - 1411, 1529, 1529, 24865, -1000, 2273, 2254, 30057, 30057, 683, - 2317, -203, 17724, 17724, 2050, 1012, -1000, -1000, -1000, -1000, - 1235, 1230, -1000, 1218, -1000, 2375, -1000, 1348, -1000, 161, - -1000, 569, 1672, -1000, 2247, 1348, 44335, 1348, 113, 2307, - -1000, 1529, -1000, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, - 1761, 1761, 1761, -1000, -1000, 44335, 1751, -1000, -1000, 2194, - 1318, 77, -1000, 1303, 1675, -1000, -1000, 152, -1000, 17724, - -1000, 29408, 1188, 1173, -1000, -1000, -1000, -1000, -436, -1000, - -1000, -1000, -1000, -1000, -1000, 396, 1674, -1000, 733, 44335, - 45633, -1000, 2005, -1000, -1000, -1000, 17724, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 17724, -1000, 1254, 1960, -1000, - -250, -1000, -400, 17724, -193, -1000, -1000, -193, -1000, 17724, - -1000, -1000, 17724, -1000, 17724, -1000, -1000, 1302, -1000, -1000, - -1000, -1000, -1000, 1302, 1302, -1000, -203, -1000, 1673, -1000, - 44335, 1348, 1649, -1000, 1006, -1000, -1000, -1000, -1000, -1000, - 44984, 1672, 44335, -1000, 1270, 1254, 1761, 2247, -1000, 1268, - -1000, 396, -1000, 1794, 1838, -1000, -1000, -1000, 15777, -1000, - -1000, -1000, -1000, -1000, 190, -109, 11864, 8565, 1253, -1000, - -108, 1529, 1246, -1000, -361, -1000, -1000, -1000, -1000, 239, - -1000, -1000, 1649, -1000, -1000, 1405, 1292, 1256, 28759, -1000, - -1000, -1000, -1000, -203, -1000, -1000, 2189, -1000, -1000, 1636, - -1000, -1000, 24216, 43686, -1000, -90, 314, -109, 17724, 1782, - 1254, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -7, - -1000, -1000, -1000, -1000, -1000, 1907, -113, -1000, -1000, -1000, - 273, -384, -164, -167, -1000, -1000, 18373, -1000, 17724, -1000, - 17724, -1000, 17724, -1000, -1000, -1000, 44335, 1761, -1000, 1244, - -1000, 3663, -252, 1946, -1000, -76, -1000, -1000, -1000, 875, - 1171, -1000, -1000, -1000, -1000, -1000, -1000, 1561, 44335, -1000, - 473, -1000, -1000, -110, -116, 795, -1000, -1000, -1000, -1000, - -1000, 1170, 1138, 1529, -1000, 44335, -1000, 43686, -242, 680, - 7624, -1000, 1941, 1933, 2334, -1000, -1000, -1000, -1000, -1000, - -1000, -440, 1226, 299, -1000, -1000, 273, -1000, 17724, -1000, - 17724, -1000, 1254, -1000, -1000, 2177, 113, -1000, 2336, -1000, - 2369, 698, 698, -1000, 926, -440, -1000, -1000, 1529, 1529, - -1000, -253, -1000, -1000, -1000, -1000, -1000, 467, 967, -1000, - -1000, -1000, -1000, -1000, 7624, -1000, -1000, -1000, 260, 260, - -1000, -1000, + 717, 1233, 344, -111, 1233, -1000, -1000, 384, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 17824, -1000, + 17824, -1000, 1002, 17824, 2213, 1293, 17824, 17824, -1000, 1003, + 970, 1156, -1000, -1000, -1000, 17824, -1000, -1000, -1000, -1000, + -1000, 17824, -1000, -1000, -1000, 17824, 258, 350, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1233, 398, + -1000, -1000, -1000, -1000, 2297, -1000, 1233, 17824, -1000, -1000, + 17824, -1000, 17824, 17824, -1000, 17824, -1000, 17824, -1000, -1000, + -1000, -1000, 17824, 1758, 2047, 1758, 1758, 24316, -1000, -1000, + 2292, 2242, 2248, 2051, 2048, 2048, 2046, -1000, 2239, 2238, + -1000, 1282, 2233, 1280, 841, -1000, 45084, 17824, 161, -1000, + 399, 44435, 161, 44435, -1000, 2217, -1000, -1000, 17824, 1800, + -1000, 17824, -1000, -1000, -1000, -1000, -1000, -1000, 19103, 2294, + 1711, -1000, -1000, 729, -1000, 17824, -1000, -1000, -1000, 3779, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1262, 1258, + -1000, -1000, 1796, 17824, -1000, -1000, -1000, 1395, 1373, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1791, -1000, -1000, + -1000, -1000, 397, -423, 1954, 44435, 957, -1000, 1458, 1649, + 388, 161, 1255, 771, 771, 771, 949, 941, 29508, 1443, + -1000, 44435, 469, -1000, 397, -1000, -163, -176, 1156, -1000, + -1000, 2166, -1000, -1000, 11964, -1000, -1000, 1785, 1879, -1000, + -1000, -1000, -1000, 2007, -93, -114, -1000, -1000, 1156, 1156, + 1268, 1233, -1000, 1156, 1156, 1325, 1288, -1000, 1156, 1328, + 1411, -1000, 258, 1233, 1923, -1000, -1000, 19103, -1000, -1000, + 2217, 2226, 52, -1000, -1000, 276, 52, 1002, 1402, 1156, + 1337, 1292, 1156, 1156, 24965, -1000, 2225, 2223, 30157, 30157, + 698, 2242, -207, 17824, 17824, 2049, 1053, -1000, -1000, -1000, + -1000, 1252, 1249, -1000, 1245, -1000, 2341, -1000, 1002, -1000, + 161, -1000, 623, 1640, -1000, 2213, 1002, 44435, 1002, 112, + 2217, -1000, 1156, -1000, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, + 1758, 1758, 1758, 1758, -1000, -1000, 44435, 1708, -1000, -1000, + 2164, 1399, 78, -1000, 1269, 1649, -1000, -1000, 152, -1000, + 17824, -1000, 29508, 1240, 1228, -1000, -1000, -1000, -1000, -435, + -1000, -1000, -1000, -1000, -1000, -1000, 401, 1647, -1000, 765, + 44435, 45733, -1000, 2006, -1000, -1000, -1000, 17824, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 17824, -1000, 1233, 1909, + -1000, -246, -1000, -400, 17824, -200, -1000, -1000, -200, -1000, + 17824, -1000, -1000, 17824, -1000, 17824, -1000, -1000, 1394, -1000, + -1000, -1000, -1000, -1000, 1394, 1394, -1000, -207, -1000, 1646, + -1000, 44435, 1002, 1630, -1000, 965, -1000, -1000, -1000, -1000, + -1000, 45084, 1640, 44435, -1000, 1372, 1233, 1758, 2213, -1000, + 1339, -1000, 401, -1000, 1766, 1864, -1000, -1000, -1000, 15877, + -1000, -1000, -1000, -1000, -1000, 202, -101, 11964, 8689, 1332, + -1000, -98, 1156, 1328, -1000, -362, -1000, -1000, -1000, -1000, + 166, -1000, -1000, 1630, -1000, -1000, 1232, 1227, 1218, 28859, + -1000, -1000, -1000, -1000, -207, -1000, -1000, 2156, -1000, -1000, + 1244, -1000, -1000, 24316, 43786, -1000, -84, 325, -101, 17824, + 1761, 1233, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -4, -1000, -1000, -1000, -1000, -1000, 1877, -112, -1000, -1000, + -1000, 171, -386, -247, -252, -1000, -1000, 18473, -1000, 17824, + -1000, 17824, -1000, 17824, -1000, -1000, -1000, 44435, 1758, -1000, + 1324, -1000, 3664, -259, 1908, -1000, -89, -1000, -1000, -1000, + 910, 1224, -1000, -1000, -1000, -1000, -1000, -1000, 1491, 44435, + -1000, 500, -1000, -1000, -104, -120, 825, -1000, -1000, -1000, + -1000, -1000, 1205, 1084, 1156, -1000, 44435, -1000, 43786, -254, + 706, 19103, -1000, 1907, 1906, 2312, -1000, -1000, -1000, -1000, + -1000, -1000, -440, 1308, 296, -1000, -1000, 171, -1000, 17824, + -1000, 17824, -1000, 1233, -1000, -1000, 2147, 112, -1000, 2338, + -1000, 2327, 712, 712, -1000, 940, -440, -1000, -1000, 1156, + 1156, -1000, -266, -1000, -1000, -1000, -1000, -1000, 490, 990, + -1000, -1000, -1000, -1000, -1000, 19103, -1000, -1000, -1000, 259, + 259, -1000, -1000, } var yyPgo = [...]int{ - 0, 2894, 2893, 49, 5, 38, 37, 2890, 29, 102, - 204, 46, 210, 101, 2888, 2887, 2886, 2885, 2884, 2883, - 2878, 192, 189, 187, 2877, 2872, 2870, 2869, 2868, 2865, - 2863, 2862, 2859, 2854, 185, 177, 203, 2853, 2852, 2851, - 127, 200, 91, 95, 201, 2840, 2839, 85, 2835, 2833, - 2828, 197, 196, 195, 818, 2820, 194, 124, 58, 2819, - 2818, 2817, 2816, 2814, 2812, 2810, 2809, 2808, 2805, 2804, - 2803, 2802, 2801, 2800, 2797, 2793, 221, 2792, 2791, 23, - 2790, 87, 2789, 2787, 2786, 2785, 7, 2784, 2780, 16, - 47, 2778, 2777, 52, 2770, 2769, 2768, 2767, 2766, 18, - 2764, 27, 2763, 40, 2759, 2758, 133, 2757, 2750, 2748, - 42, 2747, 2744, 2743, 2742, 2741, 2737, 2736, 157, 2734, - 2733, 2730, 219, 207, 2725, 2724, 181, 132, 117, 2722, - 2720, 108, 202, 2719, 134, 2714, 2712, 2710, 162, 2709, - 2169, 2708, 2707, 76, 71, 2705, 190, 2703, 2701, 15, - 33, 74, 11, 19, 20, 2700, 2695, 75, 83, 2692, - 137, 2690, 2688, 113, 68, 2687, 103, 100, 2685, 2678, - 9, 4, 2673, 2, 1, 13, 69, 2667, 2665, 123, - 2664, 2658, 2657, 99, 2655, 2639, 5984, 2636, 97, 144, - 114, 81, 2628, 55, 135, 2625, 2620, 2617, 2616, 2613, - 56, 2609, 2605, 2603, 153, 72, 178, 2602, 54, 79, - 59, 145, 2601, 44, 92, 211, 179, 2600, 2599, 151, - 149, 2598, 2591, 61, 45, 50, 2588, 112, 141, 131, - 41, 98, 146, 2587, 2584, 60, 80, 2582, 2581, 2579, - 2574, 182, 2572, 2565, 78, 2561, 62, 2560, 208, 2558, - 21, 70, 2556, 53, 174, 2554, 82, 2552, 2551, 73, - 126, 77, 43, 2550, 171, 2543, 57, 176, 139, 172, - 2540, 2539, 2538, 2537, 205, 312, 2535, 2534, 147, 191, - 154, 160, 88, 2532, 307, 2531, 2528, 106, 51, 5094, - 2526, 39, 173, 2523, 2522, 5117, 150, 48, 24, 2518, - 119, 2515, 2513, 2512, 2509, 209, 206, 118, 175, 65, - 2503, 2500, 2499, 17, 2482, 2480, 2479, 2478, 2473, 2471, - 90, 36, 35, 34, 212, 66, 14, 105, 164, 84, - 2464, 2463, 2462, 129, 93, 2460, 169, 168, 136, 170, - 2459, 193, 155, 128, 2456, 180, 31, 2455, 2453, 2450, - 2449, 96, 2446, 2439, 2437, 2435, 163, 156, 122, 89, - 2434, 94, 121, 161, 159, 63, 2433, 64, 2432, 2427, - 28, 199, 30, 2426, 12, 116, 242, 2425, 4311, 198, - 2424, 22, 306, 158, 2422, 2420, 10, 6, 8, 2419, - 2417, 2416, 2415, 148, 2408, 2407, 2406, 2405, 26, 67, - 25, 3, 120, 86, 2402, 2400, 2399, 3083, 0, 143, - 2398, 213, + 0, 2900, 2899, 49, 5, 38, 37, 2896, 29, 102, + 207, 46, 206, 112, 2894, 2893, 2892, 2891, 2890, 2889, + 2888, 189, 188, 187, 2885, 2883, 2882, 2879, 2878, 2877, + 2876, 2874, 2873, 2871, 182, 177, 204, 2870, 2866, 2864, + 122, 201, 91, 95, 203, 2863, 2860, 85, 2855, 2853, + 2845, 199, 198, 197, 880, 2840, 196, 124, 58, 2836, + 2834, 2829, 2821, 2820, 2819, 2818, 2817, 2815, 2813, 2811, + 2810, 2809, 2806, 2804, 2798, 2794, 324, 2793, 2792, 23, + 2791, 87, 2790, 2787, 2786, 2781, 7, 2779, 2778, 16, + 47, 2774, 2773, 52, 2772, 2771, 2770, 2769, 2768, 18, + 2767, 27, 2766, 40, 2759, 2758, 136, 2755, 2751, 2748, + 42, 2747, 2745, 2744, 2743, 2742, 2739, 2726, 152, 2725, + 2723, 2721, 219, 209, 2720, 2715, 183, 132, 117, 2713, + 2711, 108, 205, 2710, 131, 2709, 2708, 2706, 163, 2702, + 2170, 2701, 2696, 75, 71, 2693, 190, 2691, 2689, 15, + 33, 74, 11, 19, 20, 2688, 2686, 66, 83, 2679, + 137, 2674, 2668, 113, 68, 2666, 103, 100, 2665, 2659, + 9, 4, 2658, 2, 1, 13, 69, 2656, 2638, 123, + 2637, 2629, 2628, 99, 2621, 2618, 5603, 2617, 97, 144, + 114, 82, 2614, 55, 135, 2610, 2606, 2604, 2603, 2602, + 56, 2601, 2600, 2599, 153, 72, 178, 2596, 54, 79, + 59, 145, 2594, 44, 94, 210, 179, 2592, 2589, 151, + 149, 2588, 2585, 61, 45, 50, 2583, 106, 141, 133, + 41, 98, 155, 2582, 2580, 60, 80, 2577, 2575, 2573, + 2562, 181, 2561, 2559, 78, 2557, 62, 2555, 211, 2552, + 21, 70, 2551, 53, 174, 2536, 81, 2535, 2533, 73, + 126, 77, 43, 2532, 171, 2529, 57, 176, 139, 172, + 2527, 2524, 2523, 2519, 212, 295, 2516, 2514, 147, 191, + 154, 161, 88, 2513, 299, 2510, 2504, 101, 51, 5058, + 2501, 39, 173, 2500, 2483, 5524, 150, 48, 24, 2481, + 119, 2480, 2479, 2478, 2477, 208, 193, 118, 175, 65, + 2469, 2468, 2466, 17, 2465, 2464, 2463, 2461, 2457, 2456, + 90, 36, 35, 34, 220, 76, 14, 105, 164, 84, + 2454, 2449, 2447, 134, 93, 2446, 169, 168, 128, 170, + 2440, 192, 157, 129, 2433, 180, 31, 2428, 2425, 2423, + 2420, 96, 2418, 2417, 2416, 2415, 162, 156, 127, 89, + 2408, 92, 121, 160, 159, 63, 2407, 64, 2406, 2405, + 28, 202, 30, 2402, 12, 116, 186, 2400, 4313, 200, + 2399, 22, 298, 158, 2393, 2392, 10, 6, 8, 2390, + 2387, 2385, 2384, 148, 2383, 2380, 2374, 2372, 26, 67, + 25, 3, 120, 86, 2370, 2367, 2365, 3084, 0, 143, + 2363, 213, } -//line sql.y:7925 +//line sql.y:7929 type yySymType struct { union any empty struct{} @@ -7314,68 +7299,68 @@ var yyR1 = [...]int{ 351, 351, 351, 351, 351, 351, 351, 351, 351, 277, 277, 277, 385, 385, 385, 385, 385, 385, 384, 384, 384, 350, 350, 350, 383, 383, 57, 57, 214, 214, - 402, 402, 403, 403, 403, 404, 404, 45, 45, 45, - 45, 45, 45, 44, 44, 44, 40, 40, 40, 40, + 402, 402, 403, 403, 403, 404, 404, 404, 45, 45, + 45, 45, 45, 45, 44, 44, 44, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 46, 46, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 27, + 40, 40, 40, 40, 40, 40, 40, 40, 46, 46, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 106, 106, 107, 107, 107, 107, 109, 109, 109, 366, - 366, 58, 58, 3, 3, 169, 171, 172, 172, 170, - 170, 170, 170, 170, 170, 60, 60, 59, 59, 174, - 173, 175, 175, 175, 1, 1, 2, 2, 4, 4, + 27, 106, 106, 107, 107, 107, 107, 109, 109, 109, + 366, 366, 58, 58, 3, 3, 169, 171, 172, 172, + 170, 170, 170, 170, 170, 170, 60, 60, 59, 59, + 174, 173, 175, 175, 175, 1, 1, 2, 2, 4, + 4, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 332, 332, 332, 365, 365, 367, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 112, 111, - 111, 110, 113, 113, 113, 113, 113, 113, 113, 113, - 369, 369, 369, 61, 61, 370, 321, 322, 323, 5, - 6, 346, 368, 120, 120, 28, 37, 37, 29, 29, - 29, 29, 30, 30, 62, 63, 63, 63, 63, 63, + 371, 371, 371, 332, 332, 332, 365, 365, 367, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 112, + 111, 111, 110, 113, 113, 113, 113, 113, 113, 113, + 113, 369, 369, 369, 61, 61, 370, 321, 322, 323, + 5, 6, 346, 368, 120, 120, 28, 37, 37, 29, + 29, 29, 29, 30, 30, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 276, 276, 285, - 285, 275, 275, 300, 300, 300, 278, 278, 278, 279, - 279, 395, 395, 395, 272, 272, 64, 64, 64, 301, - 301, 301, 301, 66, 66, 67, 68, 68, 303, 303, - 304, 304, 69, 70, 82, 82, 82, 82, 82, 82, - 82, 105, 105, 105, 15, 15, 15, 15, 78, 78, - 78, 14, 14, 65, 65, 72, 392, 392, 393, 394, - 394, 394, 394, 73, 75, 31, 31, 31, 31, 31, - 31, 130, 130, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 125, 125, 125, 119, 119, - 410, 76, 77, 77, 123, 123, 123, 116, 116, 116, - 122, 122, 122, 16, 16, 17, 258, 258, 18, 18, - 127, 127, 129, 129, 129, 129, 129, 131, 131, 131, - 131, 131, 131, 131, 126, 126, 128, 128, 128, 128, - 293, 293, 293, 292, 292, 163, 163, 165, 164, 164, - 166, 166, 167, 167, 167, 167, 212, 212, 189, 189, - 251, 251, 252, 252, 250, 250, 257, 257, 253, 253, - 253, 253, 260, 260, 168, 168, 168, 168, 176, 176, - 177, 177, 178, 178, 302, 302, 298, 298, 298, 297, - 297, 182, 182, 182, 184, 183, 183, 183, 183, 185, - 185, 187, 187, 186, 186, 188, 193, 193, 192, 192, - 190, 190, 190, 190, 191, 191, 191, 191, 194, 194, - 140, 140, 140, 140, 140, 140, 140, 155, 155, 155, - 155, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 241, 241, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 150, 150, 150, + 63, 63, 63, 63, 63, 63, 63, 63, 276, 276, + 285, 285, 275, 275, 300, 300, 300, 278, 278, 278, + 279, 279, 395, 395, 395, 272, 272, 64, 64, 64, + 301, 301, 301, 301, 66, 66, 67, 68, 68, 303, + 303, 304, 304, 69, 70, 82, 82, 82, 82, 82, + 82, 82, 105, 105, 105, 15, 15, 15, 15, 78, + 78, 78, 14, 14, 65, 65, 72, 392, 392, 393, + 394, 394, 394, 394, 73, 75, 31, 31, 31, 31, + 31, 31, 130, 130, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 125, 125, 125, 119, + 119, 410, 76, 77, 77, 123, 123, 123, 116, 116, + 116, 122, 122, 122, 16, 16, 17, 258, 258, 18, + 18, 127, 127, 129, 129, 129, 129, 129, 131, 131, + 131, 131, 131, 131, 131, 126, 126, 128, 128, 128, + 128, 293, 293, 293, 292, 292, 163, 163, 165, 164, + 164, 166, 166, 167, 167, 167, 167, 212, 212, 189, + 189, 251, 251, 252, 252, 250, 250, 257, 257, 253, + 253, 253, 253, 260, 260, 168, 168, 168, 168, 176, + 176, 177, 177, 178, 178, 302, 302, 298, 298, 298, + 297, 297, 182, 182, 182, 184, 183, 183, 183, 183, + 185, 185, 187, 187, 186, 186, 188, 193, 193, 192, + 192, 190, 190, 190, 190, 191, 191, 191, 191, 194, + 194, 140, 140, 140, 140, 140, 140, 140, 155, 155, + 155, 155, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 241, 241, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 149, 217, 217, 216, 216, 83, 83, 83, - 84, 84, 85, 85, 85, 85, 85, 86, 86, 86, - 86, 86, 141, 141, 88, 88, 87, 87, 207, 207, - 290, 290, 89, 90, 90, 93, 93, 92, 91, 91, - 97, 97, 94, 94, 96, 96, 95, 98, 98, 99, - 100, 100, 273, 273, 195, 195, 203, 203, 203, 203, - 196, 196, 196, 196, 196, 196, 196, 204, 204, 204, - 211, 205, 205, 201, 201, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, + 150, 150, 150, 149, 217, 217, 216, 216, 83, 83, + 83, 84, 84, 85, 85, 85, 85, 85, 86, 86, + 86, 86, 86, 141, 141, 88, 88, 87, 87, 207, + 207, 290, 290, 89, 90, 90, 93, 93, 92, 91, + 91, 97, 97, 94, 94, 96, 96, 95, 98, 98, + 99, 100, 100, 273, 273, 195, 195, 203, 203, 203, + 203, 196, 196, 196, 196, 196, 196, 196, 204, 204, + 204, 211, 205, 205, 201, 201, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, @@ -7384,34 +7369,34 @@ var yyR1 = [...]int{ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 160, 160, 160, 160, 222, 222, 147, 147, 147, + 200, 200, 160, 160, 160, 160, 222, 222, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 148, 148, 161, 161, 161, 161, 162, 162, - 162, 162, 162, 162, 162, 310, 310, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 411, 411, - 324, 324, 324, 324, 202, 202, 202, 202, 202, 121, - 121, 121, 121, 121, 307, 307, 307, 311, 311, 311, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 312, 312, 220, 220, 117, - 117, 218, 218, 219, 221, 221, 213, 213, 213, 213, - 215, 215, 198, 198, 198, 223, 223, 224, 224, 101, - 102, 102, 103, 103, 225, 225, 227, 226, 226, 228, - 229, 229, 229, 230, 230, 231, 231, 231, 47, 47, - 47, 47, 47, 42, 42, 42, 42, 43, 43, 43, - 43, 132, 132, 132, 132, 134, 134, 133, 133, 79, - 79, 80, 80, 80, 138, 138, 139, 139, 139, 136, - 136, 137, 137, 248, 248, 232, 232, 232, 239, 239, - 239, 235, 235, 237, 237, 237, 238, 238, 238, 236, - 245, 245, 247, 247, 246, 246, 242, 242, 243, 243, - 244, 244, 244, 240, 240, 197, 197, 197, 197, 197, - 249, 249, 249, 249, 261, 261, 208, 208, 210, 210, - 209, 209, 159, 262, 262, 266, 263, 263, 267, 267, - 267, 267, 255, 255, 255, 264, 264, 265, 265, 294, - 294, 294, 271, 271, 284, 284, 280, 280, 281, 281, - 274, 274, 286, 286, 286, 74, 206, 206, 362, 362, - 359, 289, 289, 291, 291, 295, 295, 299, 299, 296, - 296, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 147, 147, 147, 148, 148, 161, 161, 161, 161, 162, + 162, 162, 162, 162, 162, 162, 310, 310, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 411, + 411, 324, 324, 324, 324, 202, 202, 202, 202, 202, + 121, 121, 121, 121, 121, 307, 307, 307, 311, 311, + 311, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 312, 312, 220, 220, + 117, 117, 218, 218, 219, 221, 221, 213, 213, 213, + 213, 215, 215, 198, 198, 198, 223, 223, 224, 224, + 101, 102, 102, 103, 103, 225, 225, 227, 226, 226, + 228, 229, 229, 229, 230, 230, 231, 231, 231, 47, + 47, 47, 47, 47, 42, 42, 42, 42, 43, 43, + 43, 43, 132, 132, 132, 132, 134, 134, 133, 133, + 79, 79, 80, 80, 80, 138, 138, 139, 139, 139, + 136, 136, 137, 137, 248, 248, 232, 232, 232, 239, + 239, 239, 235, 235, 237, 237, 237, 238, 238, 238, + 236, 245, 245, 247, 247, 246, 246, 242, 242, 243, + 243, 244, 244, 244, 240, 240, 197, 197, 197, 197, + 197, 249, 249, 249, 249, 261, 261, 208, 208, 210, + 210, 209, 209, 159, 262, 262, 266, 263, 263, 267, + 267, 267, 267, 255, 255, 255, 264, 264, 265, 265, + 294, 294, 294, 271, 271, 284, 284, 280, 280, 281, + 281, 274, 274, 286, 286, 286, 74, 206, 206, 362, + 362, 359, 289, 289, 291, 291, 295, 295, 299, 299, + 296, 296, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, @@ -7426,6 +7411,7 @@ var yyR1 = [...]int{ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, @@ -7464,8 +7450,8 @@ var yyR1 = [...]int{ 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 407, 408, 305, 306, 306, 306, + 288, 288, 288, 288, 288, 407, 408, 305, 306, 306, + 306, } var yyR2 = [...]int{ @@ -7519,103 +7505,104 @@ var yyR2 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, - 0, 2, 0, 2, 2, 0, 2, 0, 1, 5, - 1, 3, 7, 1, 3, 3, 1, 2, 2, 2, - 5, 5, 5, 6, 8, 5, 5, 4, 4, 4, - 6, 5, 5, 5, 2, 2, 2, 2, 3, 3, - 3, 4, 3, 3, 1, 3, 5, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, - 4, 4, 2, 11, 3, 6, 8, 6, 6, 6, - 13, 8, 6, 10, 5, 5, 5, 7, 5, 5, - 5, 5, 5, 7, 7, 5, 5, 4, 4, 4, - 0, 6, 5, 6, 4, 5, 0, 8, 9, 0, - 3, 0, 1, 0, 3, 8, 4, 1, 3, 3, - 6, 7, 7, 8, 4, 0, 1, 0, 1, 3, - 3, 1, 1, 2, 1, 1, 0, 2, 0, 2, - 5, 3, 7, 4, 4, 4, 4, 3, 3, 3, - 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 0, 2, 2, 1, 3, 2, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 1, - 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, - 4, 4, 3, 0, 1, 4, 3, 4, 4, 3, - 3, 3, 2, 1, 3, 3, 3, 5, 7, 7, - 6, 5, 3, 2, 3, 3, 3, 7, 3, 3, - 3, 3, 4, 7, 5, 2, 4, 4, 4, 4, - 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, - 4, 2, 2, 4, 4, 4, 4, 4, 2, 3, - 3, 3, 3, 5, 2, 3, 3, 2, 3, 4, - 4, 4, 3, 4, 4, 5, 3, 0, 1, 0, - 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, - 2, 0, 1, 1, 1, 1, 2, 1, 3, 1, - 1, 1, 1, 1, 2, 1, 1, 5, 0, 1, - 0, 1, 2, 3, 0, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, 4, 4, 2, 2, 3, 1, 3, 2, 1, - 2, 1, 2, 2, 4, 3, 3, 6, 4, 7, - 6, 1, 3, 2, 2, 2, 2, 1, 1, 1, - 3, 2, 1, 1, 1, 0, 1, 1, 0, 3, - 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, - 0, 1, 1, 5, 5, 4, 0, 2, 4, 4, - 0, 1, 0, 1, 2, 3, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 2, 3, 5, - 0, 1, 2, 1, 1, 0, 1, 2, 1, 3, - 1, 1, 1, 4, 3, 1, 3, 4, 3, 7, - 0, 3, 0, 1, 1, 3, 1, 3, 1, 1, - 3, 3, 1, 3, 4, 4, 4, 3, 2, 4, - 0, 1, 0, 2, 0, 1, 0, 1, 2, 1, - 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, - 2, 2, 1, 1, 3, 3, 0, 1, 1, 2, - 6, 5, 6, 6, 0, 2, 3, 3, 0, 2, - 3, 3, 3, 2, 3, 1, 6, 3, 4, 3, - 1, 3, 4, 5, 6, 3, 4, 5, 6, 3, - 4, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, - 1, 3, 1, 1, 1, 2, 2, 2, 2, 1, - 1, 2, 7, 7, 6, 6, 2, 2, 1, 6, - 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 1, 0, 1, 2, 5, 0, 3, - 0, 1, 4, 4, 2, 0, 1, 1, 2, 2, - 1, 1, 2, 2, 0, 1, 1, 1, 1, 5, - 1, 3, 0, 3, 1, 1, 1, 2, 1, 2, + 0, 2, 0, 2, 2, 0, 2, 2, 0, 1, + 5, 1, 3, 7, 1, 3, 3, 1, 2, 2, + 2, 5, 5, 5, 6, 8, 5, 5, 4, 4, + 4, 6, 5, 5, 5, 2, 2, 2, 2, 3, + 3, 3, 4, 3, 3, 1, 3, 5, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 4, 4, 2, 11, 3, 6, 8, 6, 6, + 6, 13, 8, 6, 10, 5, 5, 5, 7, 5, + 5, 5, 5, 5, 7, 7, 5, 5, 4, 4, + 4, 0, 6, 5, 6, 4, 5, 0, 8, 9, + 0, 3, 0, 1, 0, 3, 8, 4, 1, 3, + 3, 6, 7, 7, 8, 4, 0, 1, 0, 1, + 3, 3, 1, 1, 2, 1, 1, 0, 2, 0, + 2, 5, 3, 7, 4, 4, 4, 4, 3, 3, + 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 0, 2, 2, 1, 3, 2, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 1, 3, 3, 0, 2, 2, 2, 2, 2, 2, + 2, 4, 4, 3, 0, 1, 4, 3, 4, 4, + 3, 3, 3, 2, 1, 3, 3, 3, 5, 7, + 7, 6, 5, 3, 2, 3, 3, 3, 7, 3, + 3, 3, 3, 4, 7, 5, 2, 4, 4, 4, + 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, + 3, 3, 3, 3, 5, 2, 3, 3, 2, 3, + 4, 4, 4, 3, 4, 4, 5, 3, 0, 1, + 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, + 0, 2, 0, 1, 1, 1, 1, 2, 1, 3, + 1, 1, 1, 1, 1, 2, 1, 1, 5, 0, + 1, 0, 1, 2, 3, 0, 3, 3, 3, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 4, 4, 2, 2, 3, 1, 3, 2, + 1, 2, 1, 2, 2, 4, 3, 3, 6, 4, + 7, 6, 1, 3, 2, 2, 2, 2, 1, 1, + 1, 3, 2, 1, 1, 1, 0, 1, 1, 0, + 3, 0, 2, 0, 2, 1, 2, 2, 0, 1, + 1, 0, 1, 1, 5, 5, 4, 0, 2, 4, + 4, 0, 1, 0, 1, 2, 3, 4, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, + 5, 0, 1, 2, 1, 1, 0, 1, 2, 1, + 3, 1, 1, 1, 4, 3, 1, 3, 4, 3, + 7, 0, 3, 0, 1, 1, 3, 1, 3, 1, + 1, 3, 3, 1, 3, 4, 4, 4, 3, 2, + 4, 0, 1, 0, 2, 0, 1, 0, 1, 2, + 1, 1, 1, 2, 2, 1, 2, 3, 2, 3, + 2, 2, 2, 1, 1, 3, 3, 0, 1, 1, + 2, 6, 5, 6, 6, 0, 2, 3, 3, 0, + 2, 3, 3, 3, 2, 3, 1, 6, 3, 4, + 3, 1, 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 1, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, + 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 2, 7, 7, 6, 6, 2, 2, 1, + 6, 3, 3, 3, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 1, 0, 1, 2, 5, 0, + 3, 0, 1, 4, 4, 2, 0, 1, 1, 2, + 2, 1, 1, 2, 2, 0, 1, 1, 1, 1, + 5, 1, 3, 0, 3, 1, 1, 1, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 6, 4, 4, 8, 6, + 8, 6, 5, 4, 10, 2, 2, 1, 2, 2, + 2, 4, 5, 5, 5, 5, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, + 6, 5, 4, 4, 4, 4, 4, 7, 4, 4, + 6, 6, 6, 8, 6, 6, 4, 4, 3, 4, + 6, 6, 4, 4, 4, 6, 8, 6, 4, 6, + 6, 8, 10, 7, 8, 8, 9, 4, 4, 4, + 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 4, 4, 6, 5, 9, 6, 9, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 6, 8, + 10, 12, 14, 6, 8, 8, 10, 12, 14, 6, + 8, 10, 12, 6, 8, 4, 4, 3, 4, 6, + 6, 4, 6, 4, 6, 8, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 4, 6, 4, 4, 8, 6, 8, - 6, 5, 4, 10, 2, 2, 1, 2, 2, 2, - 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 8, 8, 8, 6, - 5, 4, 4, 4, 4, 4, 7, 4, 4, 6, - 6, 6, 8, 6, 6, 4, 4, 3, 4, 6, - 6, 4, 4, 4, 6, 8, 6, 4, 6, 6, - 8, 10, 7, 8, 8, 9, 4, 4, 4, 4, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 4, 4, 6, 5, 9, 6, 9, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 6, 8, 10, - 12, 14, 6, 8, 8, 10, 12, 14, 6, 8, - 10, 12, 6, 8, 4, 4, 3, 4, 6, 6, - 4, 6, 4, 6, 8, 0, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 0, 2, 3, 3, 4, 4, 4, 4, 4, + 0, 3, 4, 7, 3, 1, 1, 1, 0, 5, + 5, 2, 3, 1, 2, 2, 1, 2, 1, 2, + 2, 1, 2, 2, 1, 1, 0, 1, 0, 1, + 0, 2, 1, 2, 4, 0, 2, 1, 1, 3, + 5, 1, 1, 1, 2, 2, 0, 3, 0, 2, + 2, 1, 3, 0, 1, 0, 1, 3, 1, 3, + 2, 0, 1, 1, 0, 1, 2, 4, 4, 0, + 2, 2, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 0, 3, 3, 3, 0, 3, 1, 1, + 0, 4, 0, 1, 1, 0, 3, 1, 3, 2, + 1, 1, 0, 1, 2, 4, 9, 3, 5, 0, + 3, 3, 0, 1, 0, 2, 2, 0, 2, 2, + 2, 0, 2, 1, 2, 3, 3, 0, 2, 1, + 2, 3, 4, 3, 0, 1, 2, 1, 5, 4, + 4, 1, 3, 3, 5, 0, 5, 1, 3, 1, + 2, 3, 4, 1, 1, 3, 3, 1, 3, 3, + 3, 3, 3, 1, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 0, 1, 0, 2, 0, + 3, 0, 1, 0, 1, 1, 5, 0, 1, 0, + 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, - 0, 2, 3, 3, 4, 4, 4, 4, 4, 0, - 3, 4, 7, 3, 1, 1, 1, 0, 5, 5, - 2, 3, 1, 2, 2, 1, 2, 1, 2, 2, - 1, 2, 2, 1, 1, 0, 1, 0, 1, 0, - 2, 1, 2, 4, 0, 2, 1, 1, 3, 5, - 1, 1, 1, 2, 2, 0, 3, 0, 2, 2, - 1, 3, 0, 1, 0, 1, 3, 1, 3, 2, - 0, 1, 1, 0, 1, 2, 4, 4, 0, 2, - 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 0, 3, 3, 3, 0, 3, 1, 1, 0, - 4, 0, 1, 1, 0, 3, 1, 3, 2, 1, - 1, 0, 1, 2, 4, 9, 3, 5, 0, 3, - 3, 0, 1, 0, 2, 2, 0, 2, 2, 2, - 0, 2, 1, 2, 3, 3, 0, 2, 1, 2, - 3, 4, 3, 0, 1, 2, 1, 5, 4, 4, - 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, - 3, 4, 1, 1, 3, 3, 1, 3, 3, 3, - 3, 3, 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 0, 2, 0, 3, - 0, 1, 0, 1, 1, 5, 0, 1, 0, 1, - 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -7669,8 +7656,8 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 1, } var yyChk = [...]int{ @@ -7896,497 +7883,497 @@ var yyChk = [...]int{ 546, 143, 598, 554, -334, -57, 240, 240, -307, -307, -307, 90, 90, -277, 649, -179, -134, 290, 151, 279, 279, 237, 237, 292, -186, 303, 306, 304, 305, 302, - 307, 308, 24, 24, 24, 24, 24, 90, 291, 293, - 295, 281, -186, -186, -280, 77, -181, -186, 27, -295, - -186, -278, -278, -186, -278, -278, -186, -289, 352, 609, - 610, 612, 611, -118, 408, 88, 507, 23, -119, 23, - -407, 119, 120, 121, -204, -146, -150, -146, 142, 261, - -407, -213, -408, -291, 26, 88, 78, -408, 88, 88, - -408, -408, 88, 15, -221, -219, 149, -140, -408, 88, - -408, -408, -408, -205, -140, -140, -140, -140, -408, -408, - -408, -408, -408, -408, -408, -408, -408, -408, -205, 88, - 88, 15, -311, 26, -408, -408, -408, -408, -408, -220, - -408, 15, -408, 78, 88, 162, 88, -408, -408, -408, - 88, 88, -408, -408, 88, 88, -408, 88, 88, 88, - -408, 88, 88, 88, 88, -408, -408, -408, -408, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, -408, - -90, 531, -408, -408, 88, -408, 88, -408, -407, 221, - -408, -408, -408, -408, -408, 88, 88, 88, 88, 88, - 88, -408, -408, -408, 88, 88, -408, 88, -408, 88, - -408, -393, 613, 409, -193, -192, -190, 75, 241, 76, - -407, -297, -408, -154, -256, -257, -256, -198, -289, 96, - 105, -232, -163, -165, 15, -131, -211, 89, 88, -325, - -236, -242, -275, -289, 90, 177, -327, 177, -327, 365, - 366, -228, 221, -194, 16, -197, 33, 58, -11, -407, - -407, 33, 88, -182, -184, -183, -185, 67, 71, 73, - 68, 69, 70, 74, -302, 26, -164, -9, -8, -407, - -407, -407, -186, -179, -409, 15, 78, -409, 88, 221, - -268, -270, 411, 408, 414, -378, 90, -106, 88, -351, - -338, -233, -135, 41, -331, 372, -325, 514, -325, -333, - 90, -333, 96, 96, 89, -47, -42, -43, 34, 82, - -358, -345, 90, 40, -345, -345, -289, 89, -229, -134, - -186, 143, 77, -362, -362, -362, -295, -2, 652, 658, - 137, 87, 375, 19, -250, 88, 89, -214, 299, 89, - -108, -289, 89, 87, -343, -343, -289, -407, 237, 32, - 32, 598, 554, 546, -57, -214, -213, -378, -326, 651, - 650, 89, 239, 297, -139, 422, -136, 90, 91, -186, - -186, -186, -186, -186, 230, 227, 398, -402, 309, -402, - 282, 240, -179, -186, 88, -81, 256, 251, -300, -300, - 34, -186, 408, 625, 623, -140, 142, 261, -158, -150, - -146, -309, 177, 338, 260, 336, 332, 352, 343, 370, - 334, 371, 331, 330, 329, -309, -307, -205, -128, -140, - -140, 150, -140, 148, -140, -408, -408, -408, -408, -408, - -225, -140, -140, -140, -408, 177, 338, 15, -140, -307, - -140, -140, -140, -140, -140, -375, -140, -205, -140, -205, - -140, -140, -140, -140, -140, -376, -376, -376, -376, -376, - -205, -205, -205, -205, -407, -289, -93, -92, -91, 581, - 241, -90, -160, -93, -160, -127, -291, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -190, -339, -339, - -339, -260, 88, -271, 23, 15, 58, 58, -163, -194, - -164, -131, -289, -239, 608, -245, 47, -243, -244, 48, - -240, 49, 57, -327, -327, 168, -230, -140, -261, 77, - -262, -266, -213, -208, -210, -209, -407, -249, -408, -289, - -260, -262, -166, -167, -167, -166, -167, 67, 67, 67, - 72, 67, 72, 67, -183, -295, -408, -408, -9, -9, - -140, -298, 78, -164, -164, -188, -295, 168, 408, 412, - 413, -351, -400, 119, 143, 32, 77, 368, 101, -398, - 176, 543, 593, 598, 554, 547, 588, -399, 243, 136, - 137, 255, 26, 42, 89, 88, 89, 88, 89, 88, - -283, -282, -43, -42, -345, -345, 96, -378, 90, 90, - 239, 27, -186, 77, 77, 77, -109, 656, 96, 87, - -3, 82, -140, 87, 20, -334, -213, -369, -321, -370, - -322, -323, -5, -6, -346, -112, 58, 101, -61, 45, - 238, 636, 637, 127, -407, 649, -361, -250, -365, -367, - -186, -143, -407, -142, -144, -151, 166, 167, 260, 334, - 335, -214, -186, -133, 288, 296, 87, -137, 92, -381, - 78, 279, 368, 279, 90, -403, 310, 90, -403, -186, - -81, -47, -186, -278, -278, 34, -378, -408, -158, -150, - -121, 162, 507, -312, 513, -320, -320, -320, -329, -320, - 326, -320, 326, -320, -408, -408, -408, 88, -408, 23, - -408, -140, 88, -117, 450, 88, 88, -408, 87, 87, - -140, -408, -408, -408, 88, -408, -408, -408, -408, -408, - 88, -408, -408, -408, 88, -310, 599, -408, -408, -408, - -408, -408, -408, -408, -408, -408, -408, -89, -290, -289, - -90, 563, 563, -408, -90, -222, 88, -408, -408, 88, - -408, 88, 88, -408, 88, -408, 88, -408, -408, -408, - -408, 88, -191, 23, -191, -191, -408, -256, -186, -194, - -223, 17, -236, 52, 344, -247, -246, 56, 48, -244, - 20, 50, 20, 31, -261, 88, 151, 88, -408, -408, - 88, 58, 221, -408, -194, -177, -176, 77, 78, -178, - 77, -176, 67, 67, -251, -408, -408, 88, -259, -164, - -194, -194, 221, 119, -407, -145, -157, -143, 13, 90, - 90, -378, -397, 640, 641, 32, 96, -345, -345, 137, - 137, -186, 87, -325, 90, -325, 96, 96, 32, 83, - 84, 85, 32, 79, 80, 81, -186, -186, -186, -186, - -366, 87, 20, -140, 87, 151, 89, -250, -250, 275, - 162, -345, 634, 281, 281, -345, -345, -345, -111, -110, - 656, 89, -408, 88, -332, 507, 510, -140, -152, -152, - -251, 89, -374, 507, -380, -289, -289, -289, -289, 96, - 98, -408, 505, 74, 508, -408, -325, -140, -140, -140, - -230, 90, -140, -140, 96, 96, -408, -140, -205, -140, - -408, -174, -173, -175, 617, 119, 32, -309, -408, -207, - 273, -96, -95, -94, 15, -408, -140, -140, -140, -140, - -140, -140, -140, -407, 67, 19, 17, -407, -407, -298, - -223, -224, 18, 20, -237, 54, -235, 53, -235, -246, - 20, 20, 90, 20, 90, 137, -266, -140, -210, 58, - -11, -289, -208, -289, -225, -140, 87, -140, -154, -194, - -194, -140, -200, 474, 476, 477, 478, 475, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 479, 453, - 108, 110, 109, 454, 455, 456, 338, 501, 502, 496, - 499, 500, 498, 497, 353, 354, 457, 458, 459, 111, - 112, 113, 114, 115, 116, 117, 460, 463, 461, 464, - 465, 466, 471, 472, 467, 468, 469, 470, 473, 490, - 491, 492, 493, 494, 495, 600, 601, 602, 603, 604, - 605, 606, 607, 90, 90, 87, -140, 89, 89, -251, - -365, -58, 89, -252, -250, 96, 89, 276, -209, -407, - 90, -345, -345, -345, 96, 96, -297, -408, 88, -289, - -399, -367, 511, 511, -408, 26, -373, -372, -291, 87, - 78, 63, 506, 509, -408, -408, 88, -408, -408, -408, - 89, 89, -408, -408, -408, 88, -408, -173, -175, -408, - 77, -154, -225, 20, -93, 298, 300, -93, -408, 88, - -408, -408, 88, -408, 88, -408, -408, -253, -408, -289, - 243, 20, 20, -253, -253, -193, -224, -103, -102, -101, - 537, -140, -205, -238, 55, 77, 122, 90, 90, 90, - 13, -208, 221, -230, -250, -171, 375, -225, -408, -250, - 89, 26, 89, 658, 137, 89, -209, -120, -407, 272, - -297, 90, 90, -110, -113, -11, 88, 151, -250, -186, - 63, -140, -205, -408, 77, 518, 617, -88, -87, -84, - 628, 654, -205, -90, -90, -140, -140, -140, 88, -408, - -408, -408, -103, 88, -100, -99, -289, 77, 122, -262, - -289, 89, -408, -407, -230, 89, -234, -11, 87, -3, - 272, -321, -370, -322, -323, -5, -6, -346, -79, 507, - -372, -350, -291, 90, 96, 89, 507, -408, -408, -86, - 145, 626, 596, -141, -152, -149, 220, -408, 88, -408, - 88, -408, 88, -289, 243, -101, 88, 26, -298, -172, - -170, -289, 560, -390, -389, 503, -400, -396, 119, 143, - 101, -398, 598, 554, 128, 129, -79, -140, 87, -408, - -80, 287, 613, -381, 508, -86, 627, 574, 549, 574, - 549, -140, -140, -140, -99, -407, -408, 88, 23, -313, - -60, 571, -387, -388, 77, -391, 381, 570, 591, 119, - 90, 89, -250, 248, -374, 509, 142, -408, 88, -408, - 88, -408, -89, -170, 567, -326, -154, -388, 77, -387, - 77, 14, 13, -4, 657, 89, 289, -86, -140, -140, - -408, -59, 27, -171, -386, 256, 251, 254, 33, -386, - 96, -4, -408, -408, 571, 250, 32, 119, -154, -174, - -173, -173, + 307, 308, 24, 24, 24, 24, 24, 96, 98, 291, + 293, 295, 281, -186, -186, -280, 77, -181, -186, 27, + -295, -186, -278, -278, -186, -278, -278, -186, -289, 352, + 609, 610, 612, 611, -118, 408, 88, 507, 23, -119, + 23, -407, 119, 120, 121, -204, -146, -150, -146, 142, + 261, -407, -213, -408, -291, 26, 88, 78, -408, 88, + 88, -408, -408, 88, 15, -221, -219, 149, -140, -408, + 88, -408, -408, -408, -205, -140, -140, -140, -140, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -205, + 88, 88, 15, -311, 26, -408, -408, -408, -408, -408, + -220, -408, 15, -408, 78, 88, 162, 88, -408, -408, + -408, 88, 88, -408, -408, 88, 88, -408, 88, 88, + 88, -408, 88, 88, 88, 88, -408, -408, -408, -408, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + -408, -90, 531, -408, -408, 88, -408, 88, -408, -407, + 221, -408, -408, -408, -408, -408, 88, 88, 88, 88, + 88, 88, -408, -408, -408, 88, 88, -408, 88, -408, + 88, -408, -393, 613, 409, -193, -192, -190, 75, 241, + 76, -407, -297, -408, -154, -256, -257, -256, -198, -289, + 96, 105, -232, -163, -165, 15, -131, -211, 89, 88, + -325, -236, -242, -275, -289, 90, 177, -327, 177, -327, + 365, 366, -228, 221, -194, 16, -197, 33, 58, -11, + -407, -407, 33, 88, -182, -184, -183, -185, 67, 71, + 73, 68, 69, 70, 74, -302, 26, -164, -9, -8, + -407, -407, -407, -186, -179, -409, 15, 78, -409, 88, + 221, -268, -270, 411, 408, 414, -378, 90, -106, 88, + -351, -338, -233, -135, 41, -331, 372, -325, 514, -325, + -333, 90, -333, 96, 96, 89, -47, -42, -43, 34, + 82, -358, -345, 90, 40, -345, -345, -289, 89, -229, + -134, -186, 143, 77, -362, -362, -362, -295, -2, 652, + 658, 137, 87, 375, 19, -250, 88, 89, -214, 299, + 89, -108, -289, 89, 87, -343, -343, -289, -407, 237, + 32, 32, 598, 554, 546, -57, -214, -213, -378, -326, + 651, 650, 89, 239, 297, -139, 422, -136, 90, 91, + -186, -186, -186, -186, -186, 230, 227, 398, -402, 309, + -402, 282, 240, -179, -186, 88, -81, 256, 251, -300, + -300, 34, -186, 408, 625, 623, -140, 142, 261, -158, + -150, -146, -309, 177, 338, 260, 336, 332, 352, 343, + 370, 334, 371, 331, 330, 329, -309, -307, -205, -128, + -140, -140, 150, -140, 148, -140, -408, -408, -408, -408, + -408, -225, -140, -140, -140, -408, 177, 338, 15, -140, + -307, -140, -140, -140, -140, -140, -375, -140, -205, -140, + -205, -140, -140, -140, -140, -140, -376, -376, -376, -376, + -376, -205, -205, -205, -205, -407, -289, -93, -92, -91, + 581, 241, -90, -160, -93, -160, -127, -291, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -190, -339, + -339, -339, -260, 88, -271, 23, 15, 58, 58, -163, + -194, -164, -131, -289, -239, 608, -245, 47, -243, -244, + 48, -240, 49, 57, -327, -327, 168, -230, -140, -261, + 77, -262, -266, -213, -208, -210, -209, -407, -249, -408, + -289, -260, -262, -166, -167, -167, -166, -167, 67, 67, + 67, 72, 67, 72, 67, -183, -295, -408, -408, -9, + -9, -140, -298, 78, -164, -164, -188, -295, 168, 408, + 412, 413, -351, -400, 119, 143, 32, 77, 368, 101, + -398, 176, 543, 593, 598, 554, 547, 588, -399, 243, + 136, 137, 255, 26, 42, 89, 88, 89, 88, 89, + 88, -283, -282, -43, -42, -345, -345, 96, -378, 90, + 90, 239, 27, -186, 77, 77, 77, -109, 656, 96, + 87, -3, 82, -140, 87, 20, -334, -213, -369, -321, + -370, -322, -323, -5, -6, -346, -112, 58, 101, -61, + 45, 238, 636, 637, 127, -407, 649, -361, -250, -365, + -367, -186, -143, -407, -142, -144, -151, 166, 167, 260, + 334, 335, -214, -186, -133, 288, 296, 87, -137, 92, + -381, 78, 279, 368, 279, 90, -403, 310, 90, -403, + -186, -81, -47, -186, -278, -278, 34, -378, -408, -158, + -150, -121, 162, 507, -312, 513, -320, -320, -320, -329, + -320, 326, -320, 326, -320, -408, -408, -408, 88, -408, + 23, -408, -140, 88, -117, 450, 88, 88, -408, 87, + 87, -140, -408, -408, -408, 88, -408, -408, -408, -408, + -408, 88, -408, -408, -408, 88, -310, 599, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -89, -290, + -289, -90, 563, 563, -408, -90, -222, 88, -408, -408, + 88, -408, 88, 88, -408, 88, -408, 88, -408, -408, + -408, -408, 88, -191, 23, -191, -191, -408, -256, -186, + -194, -223, 17, -236, 52, 344, -247, -246, 56, 48, + -244, 20, 50, 20, 31, -261, 88, 151, 88, -408, + -408, 88, 58, 221, -408, -194, -177, -176, 77, 78, + -178, 77, -176, 67, 67, -251, -408, -408, 88, -259, + -164, -194, -194, 221, 119, -407, -145, -157, -143, 13, + 90, 90, -378, -397, 640, 641, 32, 96, -345, -345, + 137, 137, -186, 87, -325, 90, -325, 96, 96, 32, + 83, 84, 85, 32, 79, 80, 81, -186, -186, -186, + -186, -366, 87, 20, -140, 87, 151, 89, -250, -250, + 275, 162, -345, 634, 281, 281, -345, -345, -345, -111, + -110, 656, 89, -408, 88, -332, 507, 510, -140, -152, + -152, -251, 89, -374, 507, -380, -289, -289, -289, -289, + 96, 98, -408, 505, 74, 508, -408, -325, -140, -140, + -140, -230, 90, -140, -140, 96, 96, -408, -140, -205, + -140, -408, -174, -173, -175, 617, 119, 32, -309, -408, + -207, 273, -96, -95, -94, 15, -408, -140, -140, -140, + -140, -140, -140, -140, -407, 67, 19, 17, -407, -407, + -298, -223, -224, 18, 20, -237, 54, -235, 53, -235, + -246, 20, 20, 90, 20, 90, 137, -266, -140, -210, + 58, -11, -289, -208, -289, -225, -140, 87, -140, -154, + -194, -194, -140, -200, 474, 476, 477, 478, 475, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 479, + 453, 108, 110, 109, 454, 455, 456, 338, 501, 502, + 496, 499, 500, 498, 497, 353, 354, 457, 458, 459, + 111, 112, 113, 114, 115, 116, 117, 460, 463, 461, + 464, 465, 466, 471, 472, 467, 468, 469, 470, 473, + 490, 491, 492, 493, 494, 495, 600, 601, 602, 603, + 604, 605, 606, 607, 90, 90, 87, -140, 89, 89, + -251, -365, -58, 89, -252, -250, 96, 89, 276, -209, + -407, 90, -345, -345, -345, 96, 96, -297, -408, 88, + -289, -399, -367, 511, 511, -408, 26, -373, -372, -291, + 87, 78, 63, 506, 509, -408, -408, 88, -408, -408, + -408, 89, 89, -408, -408, -408, 88, -408, -173, -175, + -408, 77, -154, -225, 20, -93, 298, 300, -93, -408, + 88, -408, -408, 88, -408, 88, -408, -408, -253, -408, + -289, 243, 20, 20, -253, -253, -193, -224, -103, -102, + -101, 537, -140, -205, -238, 55, 77, 122, 90, 90, + 90, 13, -208, 221, -230, -250, -171, 375, -225, -408, + -250, 89, 26, 89, 658, 137, 89, -209, -120, -407, + 272, -297, 90, 90, -110, -113, -11, 88, 151, -250, + -186, 63, -140, -205, -408, 77, 518, 617, -88, -87, + -84, 628, 654, -205, -90, -90, -140, -140, -140, 88, + -408, -408, -408, -103, 88, -100, -99, -289, 77, 122, + -262, -289, 89, -408, -407, -230, 89, -234, -11, 87, + -3, 272, -321, -370, -322, -323, -5, -6, -346, -79, + 507, -372, -350, -291, 90, 96, 89, 507, -408, -408, + -86, 145, 626, 596, -141, -152, -149, 220, -408, 88, + -408, 88, -408, 88, -289, 243, -101, 88, 26, -298, + -172, -170, -289, 560, -390, -389, 503, -400, -396, 119, + 143, 101, -398, 598, 554, 128, 129, -79, -140, 87, + -408, -80, 287, 613, -381, 508, -86, 627, 574, 549, + 574, 549, -140, -140, -140, -99, -407, -408, 88, 23, + -313, -60, 571, -387, -388, 77, -391, 381, 570, 591, + 119, 90, 89, -250, 248, -374, 509, 142, -408, 88, + -408, 88, -408, -89, -170, 567, -326, -154, -388, 77, + -387, 77, 14, 13, -4, 657, 89, 289, -86, -140, + -140, -408, -59, 27, -171, -386, 256, 251, 254, 33, + -386, 96, -4, -408, -408, 571, 250, 32, 119, -154, + -174, -173, -173, } var yyDef = [...]int{ - 850, -2, -2, 852, 2, 4, 5, 6, 7, 8, + 851, -2, -2, 853, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 69, 71, - 72, 850, 850, 850, 0, 850, 0, 0, 850, -2, - -2, 850, 1467, 0, 850, 0, 0, -2, 777, 783, - 0, 785, -2, 0, 0, 850, 2016, 2016, 845, 0, - 0, 0, 0, 0, 850, 850, 850, 850, 1324, 49, - 850, 0, 84, 85, 801, 802, 803, 64, 0, 2014, - 851, 1, 3, 70, 74, 0, 0, 0, 57, 1333, - 0, 77, 0, 0, 854, 0, 0, 1450, 850, 850, + 72, 851, 851, 851, 0, 851, 0, 0, 851, -2, + -2, 851, 1468, 0, 851, 0, 0, -2, 778, 784, + 0, 786, -2, 0, 0, 851, 2017, 2017, 846, 0, + 0, 0, 0, 0, 851, 851, 851, 851, 1325, 49, + 851, 0, 84, 85, 802, 803, 804, 64, 0, 2015, + 852, 1, 3, 70, 74, 0, 0, 0, 57, 1334, + 0, 77, 0, 0, 855, 0, 0, 1451, 851, 851, 0, 116, 117, 0, 0, 0, -2, 120, -2, 149, - 150, 151, 0, 156, 590, 510, 562, 508, 547, -2, + 150, 151, 0, 156, 591, 511, 563, 509, 548, -2, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 513, 384, 384, 0, 0, -2, 494, - 494, 494, 1452, 0, 0, 0, 544, 446, 384, 384, + 0, 0, 0, 514, 384, 384, 0, 0, -2, 494, + 494, 494, 1453, 0, 0, 0, 545, 446, 384, 384, 384, 0, 384, 384, 384, 384, 0, 0, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 1351, 155, 1468, 1465, 1466, - 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, - 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, - 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, - 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, - 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, - 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, - 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, - 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, - 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, - 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, - 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, - 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, - 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, - 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, - 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, - 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, - 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, - 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, - 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, - 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, - 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, - 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, - 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, - 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, - 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, - 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, - 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, - 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, - 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, - 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, - 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, - 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, - 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, - 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, - 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, - 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010, 2011, 2012, 2013, 0, 1444, 0, 703, 953, 0, - 766, 766, 0, 766, 766, 766, 766, 0, 0, 0, - 715, 0, 0, 0, 0, 763, 0, 731, 732, 0, - 763, 0, 738, 769, 0, 0, 744, 766, 766, 747, - 2017, 0, 2017, 2017, 1435, 0, 760, 758, 772, 773, - 39, 776, 779, 780, 781, 782, 784, 0, 789, 792, - 1461, 1462, 0, 794, 813, 814, 0, 846, 847, 44, - 1101, 0, 975, 980, 991, 1006, 1007, 1008, 1009, 1010, - 1012, 1013, 1014, 0, 0, 0, 0, 1019, 1020, 0, - 0, 0, 0, 0, 1082, 1028, 0, 0, 0, 0, - 1297, 0, 0, 1258, 1258, 1116, 1258, 1260, 1260, 1668, - 1804, 1812, 1929, 1631, 1636, 1637, 1638, 1922, 1923, 1924, - 1925, 1964, 1965, 1969, 1728, 0, 0, 0, 2013, 1765, - 1773, 1774, 1798, 1895, 1950, 1648, 1793, 1861, 1725, 1747, - 1748, 1877, 1878, 1769, 1770, 1751, 1763, 1766, 1754, 1755, - 1757, 1759, 1764, 1771, 1777, 1756, 1776, 1775, 0, 1752, - 1753, 1758, 1768, 1772, 1760, 1761, 1762, 1767, 1778, 0, - 0, 0, 0, 0, 1197, 1198, 1199, 1200, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 1310, 1311, 42, - 43, 1100, 1422, 1260, 1260, 1260, 1260, 1260, 1042, 1043, - 1044, 1045, 1046, 1070, 1071, 1077, 1078, 1872, 1873, 1874, - 1875, 1709, 1959, 1717, 1718, 1856, 1857, 1730, 1731, 1988, - 1989, -2, -2, -2, 221, 222, 223, 224, 225, 226, - 227, 228, 0, 1672, 1941, 1942, 217, 0, 0, 285, - 286, 282, 283, 284, 1084, 1085, 238, 239, 240, 241, + 384, 384, 384, 384, 384, 1352, 155, 1469, 1466, 1467, + 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, + 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, + 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, + 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, + 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, + 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, + 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, + 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, + 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, + 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, + 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, + 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, + 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, + 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, + 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, + 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, + 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, + 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, + 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, + 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, + 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, + 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, + 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, + 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, + 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, + 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, + 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, + 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, + 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, + 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, + 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, + 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, + 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + 2011, 2012, 2013, 2014, 0, 1445, 0, 704, 954, 0, + 767, 767, 0, 767, 767, 767, 767, 0, 0, 0, + 716, 0, 0, 0, 0, 764, 0, 732, 733, 0, + 764, 0, 739, 770, 0, 0, 745, 767, 767, 748, + 2018, 0, 2018, 2018, 1436, 0, 761, 759, 773, 774, + 39, 777, 780, 781, 782, 783, 785, 0, 790, 793, + 1462, 1463, 0, 795, 814, 815, 0, 847, 848, 44, + 1102, 0, 976, 981, 992, 1007, 1008, 1009, 1010, 1011, + 1013, 1014, 1015, 0, 0, 0, 0, 1020, 1021, 0, + 0, 0, 0, 0, 1083, 1029, 0, 0, 0, 0, + 1298, 0, 0, 1259, 1259, 1117, 1259, 1261, 1261, 1669, + 1805, 1813, 1930, 1632, 1637, 1638, 1639, 1923, 1924, 1925, + 1926, 1965, 1966, 1970, 1729, 0, 0, 0, 2014, 1766, + 1774, 1775, 1799, 1896, 1951, 1649, 1794, 1862, 1726, 1748, + 1749, 1878, 1879, 1770, 1771, 1752, 1764, 1767, 1755, 1756, + 1758, 1760, 1765, 1772, 1778, 1757, 1777, 1776, 0, 1753, + 1754, 1759, 1769, 1773, 1761, 1762, 1763, 1768, 1779, 0, + 0, 0, 0, 0, 1198, 1199, 1200, 1201, 0, 0, + 0, 0, 0, 0, 0, 280, 281, 1311, 1312, 42, + 43, 1101, 1423, 1261, 1261, 1261, 1261, 1261, 1043, 1044, + 1045, 1046, 1047, 1071, 1072, 1078, 1079, 1873, 1874, 1875, + 1876, 1710, 1960, 1718, 1719, 1857, 1858, 1731, 1732, 1989, + 1990, -2, -2, -2, 221, 222, 223, 224, 225, 226, + 227, 228, 0, 1673, 1942, 1943, 217, 0, 0, 285, + 286, 282, 283, 284, 1085, 1086, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 2016, 0, - 823, 0, 0, 0, 0, 0, 1333, 0, 1325, 1324, - 62, 0, 850, -2, 0, 0, 0, 0, 46, 0, - 51, 910, 853, 76, 75, 1373, 0, 0, 0, 58, - 1334, 66, 68, 1335, 0, 855, 856, 0, 886, 890, - 0, 0, 0, 1451, 1450, 1450, 101, 0, 0, 1426, - 113, 114, 115, 0, 0, 1432, 1433, 1437, 1438, 0, + 272, 273, 274, 275, 276, 277, 278, 279, 2017, 0, + 824, 0, 0, 0, 0, 0, 1334, 0, 1326, 1325, + 62, 0, 851, -2, 0, 0, 0, 0, 46, 0, + 51, 911, 854, 76, 75, 1374, 0, 0, 0, 58, + 1335, 66, 68, 1336, 0, 856, 857, 0, 887, 891, + 0, 0, 0, 1452, 1451, 1451, 101, 0, 0, 1427, + 113, 114, 115, 0, 0, 1433, 1434, 1438, 1439, 0, 0, 167, 168, 0, 40, 411, 0, 163, 0, 404, - 345, 0, 1351, 0, 0, 0, 0, 0, 850, 0, - 1445, 144, 145, 152, 153, 154, 384, 384, 384, 559, - 0, 0, 155, 155, 517, 518, 519, 0, 0, -2, + 345, 0, 1352, 0, 0, 0, 0, 0, 851, 0, + 1446, 144, 145, 152, 153, 154, 384, 384, 384, 560, + 0, 0, 155, 155, 518, 519, 520, 0, 0, -2, 409, 0, 495, 0, 0, 398, 398, 402, 400, 401, - 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, - 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 651, 0, 385, 0, 557, 558, 447, 0, 0, 0, - 0, 0, 0, 0, 0, 1453, 1454, 0, 534, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 537, 0, + 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 652, 0, 385, 0, 558, 559, 447, 0, 0, 0, + 0, 0, 0, 0, 0, 1454, 1455, 0, 535, 536, 0, 0, 0, 384, 384, 0, 0, 0, 0, 384, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 1364, 0, 0, 505, 0, -2, 0, 695, 0, 0, - 0, 1446, 1446, 0, 702, 0, 704, 705, 0, 0, - 706, 0, 763, 763, 761, 762, 708, 709, 710, 711, - 766, 0, 0, 393, 394, 395, 763, 766, 0, 766, - 766, 766, 766, 763, 763, 763, 766, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2017, 769, 766, 0, - 739, 0, 740, 741, 742, 745, 746, 748, 2018, 2019, - 1463, 1464, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, - 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, - 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, - 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, - 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, - 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, - 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, - 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, - 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, - 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, - 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, - 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, - 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, - 1619, 2017, 2017, 752, 756, 1436, 778, 790, 793, 808, - 48, 1716, 800, 825, 826, 831, 0, 0, 0, 0, - 837, 838, 839, 0, 0, 842, 843, 844, 0, 0, - 0, 0, 0, 973, 0, 0, 1090, 1091, 1092, 1093, - 1094, 1095, 1096, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 992, 993, 0, 0, 0, 1015, 1016, 1017, 1018, 1021, - 0, 1033, 0, 1035, 1306, -2, 0, 0, 0, 1026, - 1027, 0, 0, 0, 0, 0, 0, 0, 1298, 0, - 0, 1114, 0, 1115, 1117, 1118, 0, 1119, 860, 860, - 860, 860, 860, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 860, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1456, 131, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 870, 0, 0, 870, 870, 0, 0, + 1365, 0, 0, 505, 0, -2, 0, 696, 0, 0, + 0, 1447, 1447, 0, 703, 0, 705, 706, 0, 0, + 707, 0, 764, 764, 762, 763, 709, 710, 711, 712, + 767, 0, 0, 393, 394, 395, 764, 767, 0, 767, + 767, 767, 767, 764, 764, 764, 767, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2018, 770, 767, 0, + 740, 0, 741, 742, 743, 746, 747, 749, 2019, 2020, + 1464, 1465, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, + 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, + 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, + 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, + 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, + 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, + 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, + 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, + 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, + 1620, 2018, 2018, 753, 757, 1437, 779, 791, 794, 809, + 48, 1717, 801, 826, 827, 832, 0, 0, 0, 0, + 838, 839, 840, 0, 0, 843, 844, 845, 0, 0, + 0, 0, 0, 974, 0, 0, 1091, 1092, 1093, 1094, + 1095, 1096, 1097, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 993, 994, 0, 0, 0, 1016, 1017, 1018, 1019, 1022, + 0, 1034, 0, 1036, 1307, -2, 0, 0, 0, 1027, + 1028, 0, 0, 0, 0, 0, 0, 0, 1299, 0, + 0, 1115, 0, 1116, 1118, 1119, 0, 1120, 861, 861, + 861, 861, 861, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 861, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1457, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 871, 0, 0, 871, 871, 0, 0, 210, 211, 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, - 230, 231, 232, 233, 234, 287, 235, 236, 237, 1100, - 0, 0, 0, 45, 815, 816, 0, 936, 1456, 0, - 0, 866, 0, 56, 65, 67, 1333, 60, 1333, 0, - 872, 0, 0, -2, -2, 873, 879, 880, 881, 882, - 883, 53, 2015, 54, 0, 73, 0, 47, 0, 0, - 0, 0, 357, 1376, 0, 0, 1326, 1327, 1330, 0, - 887, 1810, 891, 0, 893, 894, 0, 0, 99, 0, - 952, 0, 0, 0, 0, 1434, 103, 104, 0, 0, - 0, 368, 1439, 1440, 1441, -2, 391, 0, 368, 352, + 230, 231, 232, 233, 234, 287, 235, 236, 237, 1101, + 0, 0, 0, 45, 816, 817, 0, 937, 1457, 0, + 0, 867, 0, 56, 65, 67, 1334, 60, 1334, 0, + 873, 0, 0, -2, -2, 874, 880, 881, 882, 883, + 884, 53, 2016, 54, 0, 73, 0, 47, 0, 0, + 0, 0, 357, 1377, 0, 0, 1327, 1328, 1331, 0, + 888, 1811, 892, 0, 894, 895, 0, 0, 99, 0, + 953, 0, 0, 0, 0, 1435, 103, 104, 0, 0, + 0, 368, 1440, 1441, 1442, -2, 391, 0, 368, 352, 295, 296, 297, 345, 299, 345, 345, 345, 345, 357, 357, 357, 357, 328, 329, 330, 331, 332, 0, 0, 314, 345, 345, 345, 345, 335, 336, 337, 338, 339, 340, 341, 342, 300, 301, 302, 303, 304, 305, 306, 307, 308, 347, 347, 347, 349, 349, 0, 41, 0, - 372, 0, 1330, 0, 0, 1364, 1448, 1458, 0, 0, - 0, 1448, 122, 0, 0, 0, 560, 601, 511, 548, - 561, 0, 514, 515, -2, 0, 0, 494, 0, 496, + 372, 0, 1331, 0, 0, 1365, 1449, 1459, 0, 0, + 0, 1449, 122, 0, 0, 0, 561, 602, 512, 549, + 562, 0, 515, 516, -2, 0, 0, 494, 0, 496, 0, 392, 0, -2, 0, 402, 0, 398, 402, 399, - 402, 390, 403, 538, 539, 540, 0, 542, 543, 631, - 922, 0, 0, 0, 0, 0, 637, 638, 639, 0, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 549, 550, 551, 552, 553, 554, 555, 556, 0, 0, - 0, 0, 496, 0, 545, 0, 0, 448, 449, 450, + 402, 390, 403, 539, 540, 541, 0, 543, 544, 632, + 923, 0, 0, 0, 0, 0, 638, 639, 640, 0, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 550, 551, 552, 553, 554, 555, 556, 557, 0, 0, + 0, 0, 496, 0, 546, 0, 0, 448, 449, 450, 0, 0, 453, 454, 455, 456, 0, 0, 459, 460, - 461, 939, 940, 462, 463, 488, 489, 490, 464, 465, + 461, 940, 941, 462, 463, 488, 489, 490, 464, 465, 466, 467, 468, 469, 470, 482, 483, 484, 485, 486, 487, 471, 472, 473, 474, 475, 476, 479, 0, 137, - 1355, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 587, 588, 589, 0, 0, 0, 0, 0, - 1446, 0, 0, 0, 0, 869, 954, 1469, 1470, 767, - 768, 0, 396, 397, 766, 766, 712, 753, 0, 766, - 716, 754, 717, 719, 718, 720, 733, 734, 766, 723, - 764, 765, 724, 725, 726, 727, 728, 729, 730, 749, - 735, 736, 737, 770, 0, 774, 775, 750, 751, 0, - 791, 811, 809, 810, 812, 804, 805, 806, 807, 0, - 0, 0, 828, 95, 833, 834, 835, 836, 848, 841, - 1102, 970, 971, 972, 0, 974, 977, 0, 1086, 1088, - 979, 981, 1097, 1098, 1099, 0, 0, 0, 0, 0, - 985, 989, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1011, 1274, 1275, 1276, 1030, 288, - 289, 0, 1031, 0, 0, 0, 0, 0, 0, 0, - 1101, 1032, 0, 884, 0, 0, 1304, 1301, 0, 0, - 0, 1259, 1261, 0, 0, 0, 0, 861, 862, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1237, 1238, 1239, - 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, - 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1277, 0, - 0, 0, 0, 0, 1297, 0, 1037, 1038, 1039, 0, - 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0, - 1457, 0, 132, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1201, 1202, 1203, 1204, 38, 0, 0, 0, 871, 1308, + 1356, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 588, 589, 590, 0, 0, 0, 0, 0, + 1447, 0, 0, 0, 0, 870, 955, 1470, 1471, 768, + 769, 0, 396, 397, 767, 767, 713, 754, 0, 767, + 717, 755, 718, 720, 719, 721, 734, 735, 767, 724, + 765, 766, 725, 726, 727, 728, 729, 730, 731, 750, + 736, 737, 738, 771, 0, 775, 776, 751, 752, 0, + 792, 812, 810, 811, 813, 805, 806, 807, 808, 0, + 0, 0, 829, 95, 834, 835, 836, 837, 849, 842, + 1103, 971, 972, 973, 0, 975, 978, 0, 1087, 1089, + 980, 982, 1098, 1099, 1100, 0, 0, 0, 0, 0, + 986, 990, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1012, 1275, 1276, 1277, 1031, 288, + 289, 0, 1032, 0, 0, 0, 0, 0, 0, 0, + 1102, 1033, 0, 885, 0, 0, 1305, 1302, 0, 0, + 0, 1260, 1262, 0, 0, 0, 0, 862, 863, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1278, 0, + 0, 0, 0, 0, 1298, 0, 1038, 1039, 1040, 0, + 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0, + 1458, 0, 132, 133, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1202, 1203, 1204, 1205, 38, 0, 0, 0, 872, 1309, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, - 0, 0, 0, 1420, 0, 0, 818, 819, 821, 0, - 956, 0, 937, 0, 0, 824, 0, 865, 0, 868, - 59, 61, 877, 878, 0, 895, 874, 55, 50, 0, - 0, 914, 1374, 357, 1396, 0, 366, 366, 363, 1336, - 1337, 0, 1329, 1331, 1332, 78, 892, 888, 0, 968, - 0, 0, 951, 0, 898, 900, 901, 902, 934, 0, - 905, 0, 0, 0, 0, 0, 97, 953, 1427, 0, - 102, 0, 0, 107, 108, 1428, 1429, 1430, 1431, 0, - 590, -2, 443, 169, 171, 172, 173, 164, -2, 355, + 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, + 0, 0, 0, 1421, 0, 0, 819, 820, 822, 0, + 957, 0, 938, 0, 0, 825, 0, 866, 0, 869, + 59, 61, 878, 879, 0, 896, 875, 55, 50, 0, + 0, 915, 1375, 357, 1397, 0, 366, 366, 363, 1337, + 1338, 0, 1330, 1332, 1333, 78, 893, 889, 0, 969, + 0, 0, 952, 0, 899, 901, 902, 903, 935, 0, + 906, 0, 0, 0, 0, 0, 97, 954, 1428, 0, + 102, 0, 0, 107, 108, 1429, 1430, 1431, 1432, 0, + 591, -2, 443, 169, 171, 172, 173, 164, -2, 355, 353, 354, 298, 357, 357, 322, 323, 324, 325, 326, 327, 0, 0, 315, 316, 317, 318, 309, 0, 310, - 311, 312, 0, 313, 410, 0, 1338, 373, 374, 376, + 311, 312, 0, 313, 410, 0, 1339, 373, 374, 376, 384, 0, 379, 380, 0, 384, 384, 0, 405, 406, - 0, 1330, 1355, 0, 0, 0, 1459, 1458, 1458, 1458, - 0, 157, 158, 159, 160, 161, 162, 626, 0, 0, - 602, 624, 625, 155, 0, 0, 165, 498, 497, 0, - 658, 0, 408, 0, 0, 402, 402, 387, 388, 541, - 0, 0, 633, 634, 635, 636, 0, 0, 0, 527, - 437, 0, 528, 529, 496, 498, 0, 0, 368, 451, + 0, 1331, 1356, 0, 0, 0, 1460, 1459, 1459, 1459, + 0, 157, 158, 159, 160, 161, 162, 627, 0, 0, + 603, 625, 626, 155, 0, 0, 165, 498, 497, 0, + 659, 0, 408, 0, 0, 402, 402, 387, 388, 542, + 0, 0, 634, 635, 636, 637, 0, 0, 0, 528, + 437, 0, 529, 530, 496, 498, 0, 0, 368, 451, 452, 457, 458, 477, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 575, 576, 579, 581, - 500, 585, 578, 580, 582, 500, 586, 506, 1352, 1353, - 1354, 0, 0, 696, 0, 0, 434, 93, 1447, 701, - 763, 722, 755, 763, 714, 721, 743, 787, 795, 796, - 797, 798, 799, 832, 0, 0, 0, 0, 840, 0, - 0, 978, 1087, 1089, 982, 0, 986, 990, 0, 0, - 0, 1036, 1034, 1308, 0, 0, 0, 1083, 0, 0, - 1105, 1106, 0, 0, 0, 1302, 0, 0, 1112, 0, - 1262, 1263, 1120, 0, 0, 0, 0, 0, 1126, 1127, - 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1324, 0, - 0, 0, 0, 0, 1141, 1142, 1143, 1144, 1145, 0, - 1147, 0, 1148, 0, 0, 0, 0, 1155, 1156, 1158, - 0, 0, 1161, 1162, 0, 0, 1163, 0, 0, 0, - 1167, 0, 0, 0, 0, 1176, 1177, 1178, 1179, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1190, - 1191, 0, 1065, 0, 0, 1065, 0, 1103, 870, 0, - 1264, 1265, 1266, 1267, 1268, 0, 0, 0, 0, 0, - 0, 1224, 1225, 1227, 0, 0, 1230, 0, 1232, 0, - 1421, 817, 820, 822, 908, 957, 958, 0, 0, 0, - 0, 938, 1455, 863, 864, 867, 916, 0, 1312, 0, - 0, 895, 968, 896, 0, 875, 52, 911, 0, 1378, - 1377, 1390, 1403, 366, 366, 360, 361, 367, 362, 364, - 365, 1328, 0, 1333, 0, 1414, 0, 0, 1406, 0, - 0, 0, 0, 0, 0, 0, 0, 941, 0, 0, - 944, 0, 0, 0, 0, 935, 0, 0, 0, 0, - 0, 0, -2, 0, 0, 91, 92, 0, 0, 0, - 105, 106, 0, 0, 112, 369, 370, 146, 155, 445, - 170, 418, 0, 0, 294, 356, 319, 320, 321, 0, - 343, 0, 0, 0, 439, 118, 1342, 1341, 384, 384, - 375, 0, 378, 0, 0, 0, 1460, 346, 407, 0, - 136, 0, 0, 0, 0, 0, 142, 596, 0, 0, - 603, 0, 0, 0, 509, 0, 520, 521, 0, 630, - -2, 692, 372, 0, 386, 389, 923, 0, 0, 522, - 0, 525, 526, 438, 498, 531, 532, 546, 533, 480, - 481, 478, 0, 0, 1365, 1366, 1371, 1369, 1370, 123, - 567, 569, 568, 572, 0, 0, 0, 502, 0, 502, - 565, 0, 434, 1338, 0, 700, 435, 436, 766, 766, - 827, 96, 0, 830, 0, 0, 0, 0, 983, 987, - 1269, 1295, 345, 345, 1282, 345, 349, 1285, 345, 1287, - 345, 1290, 345, 1293, 1294, 0, 0, 0, 885, 0, - 0, 1111, 1305, 0, 0, 1121, 1122, 1123, 1124, 1125, - 1299, 0, 0, 0, 1140, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, - 0, 0, 0, 1235, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1060, 1064, 0, 1066, 1067, 0, - 0, 1193, 0, 0, 1205, 0, 1309, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 959, 964, 964, - 964, 0, 0, 0, 1442, 1443, 1313, 1314, 968, 1315, - 897, 876, 915, 1396, 0, 1389, 0, -2, 1398, 0, - 0, 0, 1404, 358, 359, 889, 79, 969, 82, 0, - 1414, 1423, 0, 1405, 1416, 1418, 0, 0, 0, 1410, - 0, 968, 899, 930, 932, 0, 927, 942, 943, 945, - 0, 947, 0, 949, 950, 910, 904, 906, 0, 0, - 0, 99, 0, 968, 968, 98, 0, 955, 109, 110, - 111, 444, 174, 179, 0, 0, 0, 184, 0, 186, - 0, 0, 0, 191, 192, 384, 384, 419, 0, 291, - 293, 0, 0, 177, 357, 0, 357, 0, 350, 0, - 420, 440, 1339, 1340, 0, 0, 377, 381, 382, 383, - 0, 1449, 138, 0, 0, 0, 599, 0, 627, 0, - 0, 0, 0, 0, 0, 166, 499, 659, 660, 661, - 662, 663, 664, 665, 666, 667, 0, 384, 0, 0, - 0, 384, 384, 384, 0, 684, 371, 0, 0, 655, - 652, 523, 0, 215, 216, 218, 0, 0, 0, 0, - 0, 530, 910, 1356, 1357, 1358, 0, 1368, 1372, 126, - 0, 0, 0, 0, 577, 583, 0, 501, 584, 697, - 698, 699, 94, 707, 713, 829, 849, 976, 984, 988, - 0, 0, 0, 0, 1296, 1280, 357, 1283, 1284, 1286, - 1288, 1289, 1291, 1292, 1024, 1025, 1029, 0, 1108, 0, - 1110, 1303, 0, 1333, 0, 0, 0, 1139, 0, 0, - 0, 1150, 1149, 1151, 0, 1153, 1154, 1159, 1160, 1164, - 0, 1166, 1168, 1169, 0, 0, 0, 1180, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 0, 1058, 1061, - 1192, 1068, 1069, 1074, 1195, 0, 0, 1104, 1207, 0, - 1212, 0, 0, 1218, 0, 1222, 0, 1228, 1229, 1231, - 1233, 0, 0, 0, 0, 0, 936, 917, 63, 1315, - 1317, 0, 1383, 1381, 1381, 1391, 1392, 0, 0, 1399, - 0, 0, 0, 0, 83, 0, 0, 0, 1419, 0, - 0, 0, 0, 100, 1324, 924, 931, 0, 0, 925, - 0, 926, 946, 948, 903, -2, 907, 0, 968, 968, - 89, 90, 0, 180, 0, 182, 208, 209, 0, 185, - 187, 188, 189, 195, 196, 197, 190, 0, 0, 290, - 292, 0, 0, 333, 344, 334, 0, 0, 1343, 1344, - 1345, 1346, 1347, 1348, 1349, 1350, 910, 139, 140, 141, - 591, 0, 601, 0, 912, 0, 594, 0, 512, 0, - 0, 0, 384, 384, 384, 0, 0, 0, 0, 669, - 0, 0, 632, 0, 640, 0, 0, 0, 219, 220, - 0, 1367, 566, 0, 124, 125, 0, 0, 571, 503, - 504, 1022, 0, 0, 0, 1023, 1281, 0, 0, 0, - 0, 1300, 0, 0, 0, 0, 1146, 0, 0, 0, - 1172, 0, 0, 0, 621, 622, 0, 1236, 1063, 1324, - 0, 1065, 1075, 1076, 0, 1065, 1206, 0, 0, 0, - 0, 0, 0, 0, 965, 0, 0, 0, 0, 956, - 1317, 1322, 0, 0, 1386, 0, 1379, 1382, 1380, 1393, - 0, 0, 1400, 0, 1402, 0, 1424, 1425, 1417, 0, - 1409, 1412, 1408, 1411, 1333, 928, 0, 933, 0, 1324, - 88, 0, 183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 194, 0, 0, 348, 351, 0, - 0, 0, 592, 0, 913, 604, 595, 0, 682, 0, - 686, 0, 0, 0, 689, 690, 691, 668, 0, 672, - 412, 656, 653, 654, 524, 0, 127, 128, 0, 0, - 0, 1270, 0, 1273, 1107, 1109, 0, 1136, 1137, 1138, - 1278, 1279, 1152, 1165, 1170, 0, 1173, 0, 0, 1174, - 0, 623, 1054, 0, 0, 1072, 1073, 0, 1208, 0, - 1213, 1214, 0, 1219, 0, 1223, 1234, 0, 961, 918, - 919, 966, 967, 0, 0, 909, 1322, 81, 1323, 1320, - 0, 1318, 1316, 1375, 0, 1384, 1385, 1394, 1395, 1401, - 0, 1407, 0, 86, 0, 0, 0, 1333, 181, 0, - 200, 0, 600, 0, 603, 593, 680, 681, 0, 693, - 685, 687, 688, 670, -2, 1359, 0, 0, 0, 573, - 1271, 0, 0, 1175, 0, 619, 620, 1062, 1055, 0, - 1040, 1041, 1059, 1194, 1196, 0, 0, 0, 0, 960, - 962, 963, 80, 0, 1319, 1080, 0, 1387, 1388, 1415, - 1413, 929, 936, 0, 87, 425, 418, 1359, 0, 0, - 0, 673, 674, 675, 676, 677, 678, 679, 563, 1361, - 129, 130, 491, 492, 493, 123, 0, 1113, 1171, 1056, - 0, 0, 0, 0, 1052, 1053, 0, 1209, 0, 1215, - 0, 1220, 0, 920, 921, 1321, 0, 0, 605, 0, - 607, 0, -2, 413, 426, 0, 175, 201, 202, 0, - 0, 205, 206, 207, 198, 199, 119, 0, 0, 694, - 0, 1362, 1363, 126, 0, 0, 1047, 1048, 1049, 1050, - 1051, 0, 0, 0, 1081, 1060, 606, 0, 0, 368, - 0, 616, 414, 415, 0, 421, 422, 423, 424, 203, - 204, 628, 0, 0, 570, 1272, 0, 1210, 0, 1216, - 0, 1221, 0, 608, 609, 617, 0, 416, 0, 417, - 0, 0, 0, 597, 0, 628, 1360, 1057, 0, 0, - 1079, 0, 618, 614, 427, 429, 430, 0, 0, 428, - 629, 598, 1211, 1217, 0, 431, 432, 433, 610, 611, - 612, 613, + 0, 0, 0, 0, 0, 575, 576, 577, 580, 582, + 500, 586, 579, 581, 583, 500, 587, 506, 507, 1353, + 1354, 1355, 0, 0, 697, 0, 0, 434, 93, 1448, + 702, 764, 723, 756, 764, 715, 722, 744, 788, 796, + 797, 798, 799, 800, 833, 0, 0, 0, 0, 841, + 0, 0, 979, 1088, 1090, 983, 0, 987, 991, 0, + 0, 0, 1037, 1035, 1309, 0, 0, 0, 1084, 0, + 0, 1106, 1107, 0, 0, 0, 1303, 0, 0, 1113, + 0, 1263, 1264, 1121, 0, 0, 0, 0, 0, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1325, + 0, 0, 0, 0, 0, 1142, 1143, 1144, 1145, 1146, + 0, 1148, 0, 1149, 0, 0, 0, 0, 1156, 1157, + 1159, 0, 0, 1162, 1163, 0, 0, 1164, 0, 0, + 0, 1168, 0, 0, 0, 0, 1177, 1178, 1179, 1180, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1191, 1192, 0, 1066, 0, 0, 1066, 0, 1104, 871, + 0, 1265, 1266, 1267, 1268, 1269, 0, 0, 0, 0, + 0, 0, 1225, 1226, 1228, 0, 0, 1231, 0, 1233, + 0, 1422, 818, 821, 823, 909, 958, 959, 0, 0, + 0, 0, 939, 1456, 864, 865, 868, 917, 0, 1313, + 0, 0, 896, 969, 897, 0, 876, 52, 912, 0, + 1379, 1378, 1391, 1404, 366, 366, 360, 361, 367, 362, + 364, 365, 1329, 0, 1334, 0, 1415, 0, 0, 1407, + 0, 0, 0, 0, 0, 0, 0, 0, 942, 0, + 0, 945, 0, 0, 0, 0, 936, 0, 0, 0, + 0, 0, 0, -2, 0, 0, 91, 92, 0, 0, + 0, 105, 106, 0, 0, 112, 369, 370, 146, 155, + 445, 170, 418, 0, 0, 294, 356, 319, 320, 321, + 0, 343, 0, 0, 0, 439, 118, 1343, 1342, 384, + 384, 375, 0, 378, 0, 0, 0, 1461, 346, 407, + 0, 136, 0, 0, 0, 0, 0, 142, 597, 0, + 0, 604, 0, 0, 0, 510, 0, 521, 522, 0, + 631, -2, 693, 372, 0, 386, 389, 924, 0, 0, + 523, 0, 526, 527, 438, 498, 532, 533, 547, 534, + 480, 481, 478, 0, 0, 1366, 1367, 1372, 1370, 1371, + 123, 568, 570, 569, 573, 0, 0, 0, 502, 0, + 502, 566, 0, 434, 1339, 0, 701, 435, 436, 767, + 767, 828, 96, 0, 831, 0, 0, 0, 0, 984, + 988, 1270, 1296, 345, 345, 1283, 345, 349, 1286, 345, + 1288, 345, 1291, 345, 1294, 1295, 0, 0, 0, 886, + 0, 0, 1112, 1306, 0, 0, 1122, 1123, 1124, 1125, + 1126, 1300, 0, 0, 0, 1141, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 135, 0, 0, + 0, 0, 0, 0, 1236, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1061, 1065, 0, 1067, 1068, + 0, 0, 1194, 0, 0, 1206, 0, 1310, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 960, 965, + 965, 965, 0, 0, 0, 1443, 1444, 1314, 1315, 969, + 1316, 898, 877, 916, 1397, 0, 1390, 0, -2, 1399, + 0, 0, 0, 1405, 358, 359, 890, 79, 970, 82, + 0, 1415, 1424, 0, 1406, 1417, 1419, 0, 0, 0, + 1411, 0, 969, 900, 931, 933, 0, 928, 943, 944, + 946, 0, 948, 0, 950, 951, 911, 905, 907, 0, + 0, 0, 99, 0, 969, 969, 98, 0, 956, 109, + 110, 111, 444, 174, 179, 0, 0, 0, 184, 0, + 186, 0, 0, 0, 191, 192, 384, 384, 419, 0, + 291, 293, 0, 0, 177, 357, 0, 357, 0, 350, + 0, 420, 440, 1340, 1341, 0, 0, 377, 381, 382, + 383, 0, 1450, 138, 0, 0, 0, 600, 0, 628, + 0, 0, 0, 0, 0, 0, 166, 499, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 0, 384, 0, + 0, 0, 384, 384, 384, 0, 685, 371, 0, 0, + 656, 653, 524, 0, 215, 216, 218, 0, 0, 0, + 0, 0, 531, 911, 1357, 1358, 1359, 0, 1369, 1373, + 126, 0, 0, 0, 0, 578, 584, 0, 501, 585, + 698, 699, 700, 94, 708, 714, 830, 850, 977, 985, + 989, 0, 0, 0, 0, 1297, 1281, 357, 1284, 1285, + 1287, 1289, 1290, 1292, 1293, 1025, 1026, 1030, 0, 1109, + 0, 1111, 1304, 0, 1334, 0, 0, 0, 1140, 0, + 0, 0, 1151, 1150, 1152, 0, 1154, 1155, 1160, 1161, + 1165, 0, 1167, 1169, 1170, 0, 0, 0, 1181, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 0, 1059, + 1062, 1193, 1069, 1070, 1075, 1196, 0, 0, 1105, 1208, + 0, 1213, 0, 0, 1219, 0, 1223, 0, 1229, 1230, + 1232, 1234, 0, 0, 0, 0, 0, 937, 918, 63, + 1316, 1318, 0, 1384, 1382, 1382, 1392, 1393, 0, 0, + 1400, 0, 0, 0, 0, 83, 0, 0, 0, 1420, + 0, 0, 0, 0, 100, 1325, 925, 932, 0, 0, + 926, 0, 927, 947, 949, 904, -2, 908, 0, 969, + 969, 89, 90, 0, 180, 0, 182, 208, 209, 0, + 185, 187, 188, 189, 195, 196, 197, 190, 0, 0, + 290, 292, 0, 0, 333, 344, 334, 0, 0, 1344, + 1345, 1346, 1347, 1348, 1349, 1350, 1351, 911, 139, 140, + 141, 592, 0, 602, 0, 913, 0, 595, 0, 513, + 0, 0, 0, 384, 384, 384, 0, 0, 0, 0, + 670, 0, 0, 633, 0, 641, 0, 0, 0, 219, + 220, 0, 1368, 567, 0, 124, 125, 0, 0, 572, + 503, 504, 1023, 0, 0, 0, 1024, 1282, 0, 0, + 0, 0, 1301, 0, 0, 0, 0, 1147, 0, 0, + 0, 1173, 0, 0, 0, 622, 623, 0, 1237, 1064, + 1325, 0, 1066, 1076, 1077, 0, 1066, 1207, 0, 0, + 0, 0, 0, 0, 0, 966, 0, 0, 0, 0, + 957, 1318, 1323, 0, 0, 1387, 0, 1380, 1383, 1381, + 1394, 0, 0, 1401, 0, 1403, 0, 1425, 1426, 1418, + 0, 1410, 1413, 1409, 1412, 1334, 929, 0, 934, 0, + 1325, 88, 0, 183, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 194, 0, 0, 348, 351, + 0, 0, 0, 593, 0, 914, 605, 596, 0, 683, + 0, 687, 0, 0, 0, 690, 691, 692, 669, 0, + 673, 412, 657, 654, 655, 525, 0, 127, 128, 0, + 0, 0, 1271, 0, 1274, 1108, 1110, 0, 1137, 1138, + 1139, 1279, 1280, 1153, 1166, 1171, 0, 1174, 0, 0, + 1175, 0, 624, 1055, 0, 0, 1073, 1074, 0, 1209, + 0, 1214, 1215, 0, 1220, 0, 1224, 1235, 0, 962, + 919, 920, 967, 968, 0, 0, 910, 1323, 81, 1324, + 1321, 0, 1319, 1317, 1376, 0, 1385, 1386, 1395, 1396, + 1402, 0, 1408, 0, 86, 0, 0, 0, 1334, 181, + 0, 200, 0, 601, 0, 604, 594, 681, 682, 0, + 694, 686, 688, 689, 671, -2, 1360, 0, 0, 0, + 574, 1272, 0, 0, 1176, 0, 620, 621, 1063, 1056, + 0, 1041, 1042, 1060, 1195, 1197, 0, 0, 0, 0, + 961, 963, 964, 80, 0, 1320, 1081, 0, 1388, 1389, + 1416, 1414, 930, 937, 0, 87, 425, 418, 1360, 0, + 0, 0, 674, 675, 676, 677, 678, 679, 680, 564, + 1362, 129, 130, 491, 492, 493, 123, 0, 1114, 1172, + 1057, 0, 0, 0, 0, 1053, 1054, 0, 1210, 0, + 1216, 0, 1221, 0, 921, 922, 1322, 0, 0, 606, + 0, 608, 0, -2, 413, 426, 0, 175, 201, 202, + 0, 0, 205, 206, 207, 198, 199, 119, 0, 0, + 695, 0, 1363, 1364, 126, 0, 0, 1048, 1049, 1050, + 1051, 1052, 0, 0, 0, 1082, 1061, 607, 0, 0, + 368, 0, 617, 414, 415, 0, 421, 422, 423, 424, + 203, 204, 629, 0, 0, 571, 1273, 0, 1211, 0, + 1217, 0, 1222, 0, 609, 610, 618, 0, 416, 0, + 417, 0, 0, 0, 598, 0, 629, 1361, 1058, 0, + 0, 1080, 0, 619, 615, 427, 429, 430, 0, 0, + 428, 630, 599, 1212, 1218, 0, 431, 432, 433, 611, + 612, 613, 614, } var yyTok1 = [...]int{ @@ -12256,77 +12243,82 @@ yydefault: yyVAL.union = yyLOCAL case 505: yyDollar = yyS[yypt-0 : yypt+1] + var yyLOCAL *Literal //line sql.y:2854 { - yyVAL.str = "" + yyLOCAL = nil } + yyVAL.union = yyLOCAL case 506: yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL *Literal //line sql.y:2858 { - yyVAL.str = string(yyDollar[2].str) + yyLOCAL = NewIntLiteral(yyDollar[2].str) } + yyVAL.union = yyLOCAL case 507: + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL *Literal +//line sql.y:2862 + { + yyLOCAL = NewDecimalLiteral(yyDollar[2].str) + } + yyVAL.union = yyLOCAL + case 508: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2863 +//line sql.y:2867 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 508: + case 509: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2867 +//line sql.y:2871 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 509: + case 510: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2871 +//line sql.y:2875 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &OrderByOption{Cols: yyDollar[5].columnsUnion()}) } - case 510: + case 511: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2875 +//line sql.y:2879 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 511: + case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2879 +//line sql.y:2883 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionsUnion()...) } - case 512: + case 513: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2883 +//line sql.y:2887 { yyLOCAL = append(append(yyDollar[1].alterOptionsUnion(), yyDollar[3].alterOptionsUnion()...), &OrderByOption{Cols: yyDollar[7].columnsUnion()}) } yyVAL.union = yyLOCAL - case 513: + case 514: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2889 +//line sql.y:2893 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 514: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 - { - yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) - *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) - } case 515: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2897 @@ -12335,19 +12327,18 @@ yydefault: *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } case 516: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL AlterOption -//line sql.y:2903 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2901 { - yyLOCAL = yyDollar[1].tableOptionsUnion() + yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) + *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - yyVAL.union = yyLOCAL case 517: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption //line sql.y:2907 { - yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} + yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL case 518: @@ -12363,15 +12354,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2915 { - yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()} + yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL case 520: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption //line sql.y:2919 { - yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()} + yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()} } yyVAL.union = yyLOCAL case 521: @@ -12379,7 +12370,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2923 { - yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} + yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()} } yyVAL.union = yyLOCAL case 522: @@ -12387,49 +12378,49 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2927 { - yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true} + yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL case 523: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption //line sql.y:2931 { - yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion()} + yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true} } yyVAL.union = yyLOCAL case 524: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption //line sql.y:2935 { - yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[7].exprUnion()} + yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL case 525: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL AlterOption //line sql.y:2939 { - val := false - yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} + yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 526: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2944 +//line sql.y:2943 { - val := true + val := false yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL case 527: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2949 +//line sql.y:2948 { - yyLOCAL = &AlterCheck{Name: yyDollar[3].identifierCI, Enforced: yyDollar[4].booleanUnion()} + val := true + yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL case 528: @@ -12437,7 +12428,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2953 { - yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: false} + yyLOCAL = &AlterCheck{Name: yyDollar[3].identifierCI, Enforced: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL case 529: @@ -12445,23 +12436,23 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2957 { - yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: true} + yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: false} } yyVAL.union = yyLOCAL case 530: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption //line sql.y:2961 { - yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].booleanUnion(), After: yyDollar[6].colNameUnion()} + yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: true} } yyVAL.union = yyLOCAL case 531: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption //line sql.y:2965 { - yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} + yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].booleanUnion(), After: yyDollar[6].colNameUnion()} } yyVAL.union = yyLOCAL case 532: @@ -12469,7 +12460,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2969 { - yyLOCAL = &RenameColumn{OldName: yyDollar[3].colNameUnion(), NewName: yyDollar[5].colNameUnion()} + yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL case 533: @@ -12477,15 +12468,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2973 { - yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} + yyLOCAL = &RenameColumn{OldName: yyDollar[3].colNameUnion(), NewName: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL case 534: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption //line sql.y:2977 { - yyLOCAL = &KeyState{Enable: false} + yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } yyVAL.union = yyLOCAL case 535: @@ -12493,7 +12484,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2981 { - yyLOCAL = &KeyState{Enable: true} + yyLOCAL = &KeyState{Enable: false} } yyVAL.union = yyLOCAL case 536: @@ -12501,7 +12492,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2985 { - yyLOCAL = &TablespaceOperation{Import: false} + yyLOCAL = &KeyState{Enable: true} } yyVAL.union = yyLOCAL case 537: @@ -12509,15 +12500,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2989 { - yyLOCAL = &TablespaceOperation{Import: true} + yyLOCAL = &TablespaceOperation{Import: false} } yyVAL.union = yyLOCAL case 538: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption //line sql.y:2993 { - yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()} + yyLOCAL = &TablespaceOperation{Import: true} } yyVAL.union = yyLOCAL case 539: @@ -12525,7 +12516,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:2997 { - yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].identifierCI} + yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL case 540: @@ -12533,23 +12524,23 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3001 { - yyLOCAL = &DropKey{Type: PrimaryKeyType} + yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL case 541: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption //line sql.y:3005 { - yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].identifierCI} + yyLOCAL = &DropKey{Type: PrimaryKeyType} } yyVAL.union = yyLOCAL case 542: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption //line sql.y:3009 { - yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} + yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL case 543: @@ -12561,52 +12552,52 @@ yydefault: } yyVAL.union = yyLOCAL case 544: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption //line sql.y:3017 { - yyLOCAL = &Force{} + yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL case 545: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption //line sql.y:3021 { - yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName} + yyLOCAL = &Force{} } yyVAL.union = yyLOCAL case 546: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption //line sql.y:3025 { - yyLOCAL = &RenameIndex{OldName: yyDollar[3].identifierCI, NewName: yyDollar[5].identifierCI} + yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL case 547: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL []AlterOption -//line sql.y:3031 + yyDollar = yyS[yypt-5 : yypt+1] + var yyLOCAL AlterOption +//line sql.y:3029 { - yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} + yyLOCAL = &RenameIndex{OldName: yyDollar[3].identifierCI, NewName: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL case 548: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL []AlterOption //line sql.y:3035 { - yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) - *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) + yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } + yyVAL.union = yyLOCAL case 549: yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL AlterOption -//line sql.y:3041 +//line sql.y:3039 { - yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) + yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) + *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - yyVAL.union = yyLOCAL case 550: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption @@ -12636,7 +12627,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3057 { - yyLOCAL = &LockOption{Type: DefaultType} + yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL case 554: @@ -12644,7 +12635,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3061 { - yyLOCAL = &LockOption{Type: NoneType} + yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL case 555: @@ -12652,7 +12643,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3065 { - yyLOCAL = &LockOption{Type: SharedType} + yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL case 556: @@ -12660,15 +12651,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3069 { - yyLOCAL = &LockOption{Type: ExclusiveType} + yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL case 557: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption //line sql.y:3073 { - yyLOCAL = &Validation{With: true} + yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL case 558: @@ -12676,13 +12667,21 @@ yydefault: var yyLOCAL AlterOption //line sql.y:3077 { - yyLOCAL = &Validation{With: false} + yyLOCAL = &Validation{With: true} } yyVAL.union = yyLOCAL case 559: + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL AlterOption +//line sql.y:3081 + { + yyLOCAL = &Validation{With: false} + } + yyVAL.union = yyLOCAL + case 560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3083 +//line sql.y:3087 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12690,10 +12689,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 560: + case 561: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3090 +//line sql.y:3094 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12701,10 +12700,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 561: + case 562: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3097 +//line sql.y:3101 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12712,28 +12711,28 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 562: + case 563: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3104 +//line sql.y:3108 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[2].partSpecUnion() yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 563: + case 564: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:3110 +//line sql.y:3114 { yyLOCAL = &AlterView{ViewName: yyDollar[7].tableName.ToViewName(), Comments: Comments(yyDollar[2].strs).Parsed(), Algorithm: yyDollar[3].str, Definer: yyDollar[4].definerUnion(), Security: yyDollar[5].str, Columns: yyDollar[8].columnsUnion(), Select: yyDollar[10].selStmtUnion(), CheckOption: yyDollar[11].str} } yyVAL.union = yyLOCAL - case 564: + case 565: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3120 +//line sql.y:3124 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12741,10 +12740,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 565: + case 566: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3127 +//line sql.y:3131 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12752,10 +12751,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 566: + case 567: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3134 +//line sql.y:3138 { yyLOCAL = &AlterVschema{ Action: CreateVindexDDLAction, @@ -12768,10 +12767,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 567: + case 568: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3146 +//line sql.y:3150 { yyLOCAL = &AlterVschema{ Action: DropVindexDDLAction, @@ -12782,26 +12781,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 568: + case 569: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3156 +//line sql.y:3160 { yyLOCAL = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 569: + case 570: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3160 +//line sql.y:3164 { yyLOCAL = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 570: + case 571: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL Statement -//line sql.y:3164 +//line sql.y:3168 { yyLOCAL = &AlterVschema{ Action: AddColVindexDDLAction, @@ -12815,10 +12814,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 571: + case 572: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3177 +//line sql.y:3181 { yyLOCAL = &AlterVschema{ Action: DropColVindexDDLAction, @@ -12829,18 +12828,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 572: + case 573: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3187 +//line sql.y:3191 { yyLOCAL = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 573: + case 574: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:3191 +//line sql.y:3195 { yyLOCAL = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -12852,10 +12851,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 574: + case 575: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3202 +//line sql.y:3206 { yyLOCAL = &AlterMigration{ Type: RetryMigrationType, @@ -12863,10 +12862,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 575: + case 576: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3209 +//line sql.y:3213 { yyLOCAL = &AlterMigration{ Type: CleanupMigrationType, @@ -12874,10 +12873,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 576: + case 577: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3216 +//line sql.y:3220 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12885,10 +12884,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 577: + case 578: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3223 +//line sql.y:3227 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12897,20 +12896,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 578: + case 579: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3231 +//line sql.y:3235 { yyLOCAL = &AlterMigration{ Type: LaunchAllMigrationType, } } yyVAL.union = yyLOCAL - case 579: + case 580: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3237 +//line sql.y:3241 { yyLOCAL = &AlterMigration{ Type: CompleteMigrationType, @@ -12918,20 +12917,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 580: + case 581: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3244 +//line sql.y:3248 { yyLOCAL = &AlterMigration{ Type: CompleteAllMigrationType, } } yyVAL.union = yyLOCAL - case 581: + case 582: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3250 +//line sql.y:3254 { yyLOCAL = &AlterMigration{ Type: CancelMigrationType, @@ -12939,20 +12938,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 582: + case 583: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3257 +//line sql.y:3261 { yyLOCAL = &AlterMigration{ Type: CancelAllMigrationType, } } yyVAL.union = yyLOCAL - case 583: + case 584: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3263 +//line sql.y:3267 { yyLOCAL = &AlterMigration{ Type: ThrottleMigrationType, @@ -12962,10 +12961,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 584: + case 585: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3272 +//line sql.y:3276 { yyLOCAL = &AlterMigration{ Type: ThrottleAllMigrationType, @@ -12974,10 +12973,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 585: + case 586: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3280 +//line sql.y:3284 { yyLOCAL = &AlterMigration{ Type: UnthrottleMigrationType, @@ -12985,20 +12984,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 586: + case 587: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3287 +//line sql.y:3291 { yyLOCAL = &AlterMigration{ Type: UnthrottleAllMigrationType, } } yyVAL.union = yyLOCAL - case 587: + case 588: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3293 +//line sql.y:3297 { yyLOCAL = &AlterThrottler{ Type: AlterThrottlerDisableType, @@ -13006,10 +13005,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 588: + case 589: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3300 +//line sql.y:3304 { yyLOCAL = &AlterThrottler{ Type: AlterThrottlerEnableType, @@ -13017,30 +13016,30 @@ yydefault: } } yyVAL.union = yyLOCAL - case 589: + case 590: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3307 +//line sql.y:3311 { yyLOCAL = &AlterThrottler{ Type: AlterThrottlerParamsType, - Threshold: yyDollar[4].str, + Threshold: yyDollar[4].literalUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), } } yyVAL.union = yyLOCAL - case 590: + case 591: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3317 +//line sql.y:3321 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 591: + case 592: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3321 +//line sql.y:3325 { yyDollar[3].partitionOptionUnion().Partitions = yyDollar[4].integerUnion() yyDollar[3].partitionOptionUnion().SubPartition = yyDollar[5].subPartitionUnion() @@ -13048,10 +13047,10 @@ yydefault: yyLOCAL = yyDollar[3].partitionOptionUnion() } yyVAL.union = yyLOCAL - case 592: + case 593: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3330 +//line sql.y:3334 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13060,10 +13059,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 593: + case 594: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3338 +//line sql.y:3342 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13073,10 +13072,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 594: + case 595: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3347 +//line sql.y:3351 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13084,10 +13083,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 595: + case 596: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3354 +//line sql.y:3358 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13095,18 +13094,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 596: + case 597: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3362 +//line sql.y:3366 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 597: + case 598: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3366 +//line sql.y:3370 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13116,10 +13115,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 598: + case 599: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3375 +//line sql.y:3379 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13130,292 +13129,284 @@ yydefault: } } yyVAL.union = yyLOCAL - case 599: + case 600: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3386 +//line sql.y:3390 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 600: + case 601: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3390 +//line sql.y:3394 { yyLOCAL = yyDollar[2].partDefsUnion() } yyVAL.union = yyLOCAL - case 601: + case 602: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3395 +//line sql.y:3399 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 602: + case 603: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3399 +//line sql.y:3403 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 603: + case 604: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3404 +//line sql.y:3408 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 604: + case 605: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3408 +//line sql.y:3412 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 605: + case 606: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL TableExpr -//line sql.y:3414 +//line sql.y:3418 { yyLOCAL = &JSONTableExpr{Expr: yyDollar[3].exprUnion(), Filter: yyDollar[5].exprUnion(), Columns: yyDollar[6].jtColumnListUnion(), Alias: yyDollar[8].identifierCS} } yyVAL.union = yyLOCAL - case 606: + case 607: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3420 +//line sql.y:3424 { yyLOCAL = yyDollar[3].jtColumnListUnion() } yyVAL.union = yyLOCAL - case 607: + case 608: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3426 +//line sql.y:3430 { yyLOCAL = []*JtColumnDefinition{yyDollar[1].jtColumnDefinitionUnion()} } yyVAL.union = yyLOCAL - case 608: + case 609: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3430 +//line sql.y:3434 { yySLICE := (*[]*JtColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jtColumnDefinitionUnion()) } - case 609: + case 610: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3436 +//line sql.y:3440 { yyLOCAL = &JtColumnDefinition{JtOrdinal: &JtOrdinalColDef{Name: yyDollar[1].identifierCI}} } yyVAL.union = yyLOCAL - case 610: + case 611: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3440 +//line sql.y:3444 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 611: + case 612: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3446 +//line sql.y:3450 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 612: + case 613: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3452 +//line sql.y:3456 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 613: + case 614: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3458 +//line sql.y:3462 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 614: + case 615: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3464 +//line sql.y:3468 { jtNestedPath := &JtNestedPathColDef{Path: yyDollar[3].exprUnion(), Columns: yyDollar[4].jtColumnListUnion()} yyLOCAL = &JtColumnDefinition{JtNestedPath: jtNestedPath} } yyVAL.union = yyLOCAL - case 615: + case 616: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3470 +//line sql.y:3474 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 616: + case 617: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3474 +//line sql.y:3478 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 617: + case 618: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3478 +//line sql.y:3482 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 618: + case 619: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3482 +//line sql.y:3486 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 619: + case 620: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3488 +//line sql.y:3492 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 620: + case 621: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3494 +//line sql.y:3498 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 621: + case 622: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3500 +//line sql.y:3504 { yyLOCAL = &JtOnResponse{ResponseType: ErrorJSONType} } yyVAL.union = yyLOCAL - case 622: + case 623: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3504 +//line sql.y:3508 { yyLOCAL = &JtOnResponse{ResponseType: NullJSONType} } yyVAL.union = yyLOCAL - case 623: + case 624: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3508 +//line sql.y:3512 { yyLOCAL = &JtOnResponse{ResponseType: DefaultJSONType, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 624: + case 625: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3514 +//line sql.y:3518 { yyLOCAL = RangeType } yyVAL.union = yyLOCAL - case 625: + case 626: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3518 +//line sql.y:3522 { yyLOCAL = ListType } yyVAL.union = yyLOCAL - case 626: + case 627: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3523 +//line sql.y:3527 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 627: + case 628: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3527 +//line sql.y:3531 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 628: + case 629: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3532 +//line sql.y:3536 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 629: + case 630: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3536 +//line sql.y:3540 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 630: - yyDollar = yyS[yypt-5 : yypt+1] - var yyLOCAL *PartitionSpec -//line sql.y:3542 - { - yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}} - } - yyVAL.union = yyLOCAL case 631: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3546 { - yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}} } yyVAL.union = yyLOCAL case 632: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3550 { - yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()} + yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 633: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3554 { - yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()} } yyVAL.union = yyLOCAL case 634: @@ -13423,7 +13414,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3558 { - yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 635: @@ -13431,7 +13422,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3562 { - yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true} } yyVAL.union = yyLOCAL case 636: @@ -13439,15 +13430,15 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3566 { - yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 637: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3570 { - yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true} } yyVAL.union = yyLOCAL case 638: @@ -13455,7 +13446,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3574 { - yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 639: @@ -13463,23 +13454,23 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3578 { - yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} + yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true} } yyVAL.union = yyLOCAL case 640: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3582 { - yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].identifierCI}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()} + yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL case 641: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3586 { - yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].identifierCI}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()} } yyVAL.union = yyLOCAL case 642: @@ -13487,7 +13478,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3590 { - yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 643: @@ -13495,7 +13486,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3594 { - yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } yyVAL.union = yyLOCAL case 644: @@ -13503,7 +13494,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3598 { - yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 645: @@ -13511,7 +13502,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3602 { - yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true} } yyVAL.union = yyLOCAL case 646: @@ -13519,7 +13510,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3606 { - yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 647: @@ -13527,7 +13518,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3610 { - yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true} } yyVAL.union = yyLOCAL case 648: @@ -13535,7 +13526,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3614 { - yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 649: @@ -13543,7 +13534,7 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3618 { - yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()} + yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true} } yyVAL.union = yyLOCAL case 650: @@ -13551,27 +13542,27 @@ yydefault: var yyLOCAL *PartitionSpec //line sql.y:3622 { - yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true} + yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL case 651: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec //line sql.y:3626 { - yyLOCAL = &PartitionSpec{Action: UpgradeAction} + yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true} } yyVAL.union = yyLOCAL case 652: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL bool -//line sql.y:3631 + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL *PartitionSpec +//line sql.y:3630 { - yyLOCAL = false + yyLOCAL = &PartitionSpec{Action: UpgradeAction} } yyVAL.union = yyLOCAL case 653: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool //line sql.y:3635 { @@ -13583,229 +13574,237 @@ yydefault: var yyLOCAL bool //line sql.y:3639 { - yyLOCAL = true + yyLOCAL = false } yyVAL.union = yyLOCAL case 655: + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL bool +//line sql.y:3643 + { + yyLOCAL = true + } + yyVAL.union = yyLOCAL + case 656: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3645 +//line sql.y:3649 { yyLOCAL = []*PartitionDefinition{yyDollar[1].partDefUnion()} } yyVAL.union = yyLOCAL - case 656: + case 657: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3649 +//line sql.y:3653 { yySLICE := (*[]*PartitionDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].partDefUnion()) } - case 657: + case 658: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3655 +//line sql.y:3659 { yyVAL.partDefUnion().Options = yyDollar[2].partitionDefinitionOptionsUnion() } - case 658: + case 659: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3660 +//line sql.y:3664 { yyLOCAL = &PartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 659: + case 660: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3664 +//line sql.y:3668 { yyDollar[1].partitionDefinitionOptionsUnion().ValueRange = yyDollar[2].partitionValueRangeUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 660: + case 661: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3669 +//line sql.y:3673 { yyDollar[1].partitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 661: + case 662: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3674 +//line sql.y:3678 { yyDollar[1].partitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 662: + case 663: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3679 +//line sql.y:3683 { yyDollar[1].partitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 663: + case 664: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3684 +//line sql.y:3688 { yyDollar[1].partitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 664: + case 665: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3689 +//line sql.y:3693 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 665: + case 666: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3695 +//line sql.y:3699 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 666: + case 667: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3701 +//line sql.y:3705 { yyDollar[1].partitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 667: + case 668: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3706 +//line sql.y:3710 { yyDollar[1].partitionDefinitionOptionsUnion().SubPartitionDefinitions = yyDollar[2].subPartitionDefinitionsUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 668: + case 669: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3712 +//line sql.y:3716 { yyLOCAL = yyDollar[2].subPartitionDefinitionsUnion() } yyVAL.union = yyLOCAL - case 669: + case 670: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3718 +//line sql.y:3722 { yyLOCAL = SubPartitionDefinitions{yyDollar[1].subPartitionDefinitionUnion()} } yyVAL.union = yyLOCAL - case 670: + case 671: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3722 +//line sql.y:3726 { yySLICE := (*SubPartitionDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].subPartitionDefinitionUnion()) } - case 671: + case 672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SubPartitionDefinition -//line sql.y:3728 +//line sql.y:3732 { yyLOCAL = &SubPartitionDefinition{Name: yyDollar[2].identifierCI, Options: yyDollar[3].subPartitionDefinitionOptionsUnion()} } yyVAL.union = yyLOCAL - case 672: + case 673: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3733 +//line sql.y:3737 { yyLOCAL = &SubPartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 673: + case 674: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3737 +//line sql.y:3741 { yyDollar[1].subPartitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 674: + case 675: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3742 +//line sql.y:3746 { yyDollar[1].subPartitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 675: + case 676: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3747 +//line sql.y:3751 { yyDollar[1].subPartitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 676: + case 677: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3752 +//line sql.y:3756 { yyDollar[1].subPartitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 677: + case 678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3757 +//line sql.y:3761 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 678: + case 679: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3763 +//line sql.y:3767 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 679: + case 680: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3769 +//line sql.y:3773 { yyDollar[1].subPartitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 680: + case 681: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3776 +//line sql.y:3780 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13813,10 +13812,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 681: + case 682: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3783 +//line sql.y:3787 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13824,10 +13823,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 682: + case 683: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3790 +//line sql.y:3794 { yyLOCAL = &PartitionValueRange{ Type: InType, @@ -13835,131 +13834,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 683: + case 684: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3798 +//line sql.y:3802 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 684: + case 685: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3802 +//line sql.y:3806 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 685: + case 686: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionEngine -//line sql.y:3808 +//line sql.y:3812 { yyLOCAL = &PartitionEngine{Storage: yyDollar[1].booleanUnion(), Name: yyDollar[4].identifierCS.String()} } yyVAL.union = yyLOCAL - case 686: + case 687: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:3814 +//line sql.y:3818 { yyLOCAL = NewStrLiteral(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 687: + case 688: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3820 +//line sql.y:3824 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 688: + case 689: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3826 +//line sql.y:3830 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 689: + case 690: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3832 +//line sql.y:3836 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 690: + case 691: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3838 +//line sql.y:3842 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 691: + case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3844 +//line sql.y:3848 { yyVAL.str = yyDollar[3].identifierCS.String() } - case 692: + case 693: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinition -//line sql.y:3850 +//line sql.y:3854 { yyLOCAL = &PartitionDefinition{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 693: + case 694: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3856 +//line sql.y:3860 { yyVAL.str = "" } - case 694: + case 695: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3860 +//line sql.y:3864 { yyVAL.str = "" } - case 695: + case 696: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3866 +//line sql.y:3870 { yyLOCAL = &RenameTable{TablePairs: yyDollar[3].renameTablePairsUnion()} } yyVAL.union = yyLOCAL - case 696: + case 697: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*RenameTablePair -//line sql.y:3872 +//line sql.y:3876 { yyLOCAL = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } yyVAL.union = yyLOCAL - case 697: + case 698: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3876 +//line sql.y:3880 { yySLICE := (*[]*RenameTablePair)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 698: + case 699: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3882 +//line sql.y:3886 { yyLOCAL = &DropTable{FromTables: yyDollar[6].tableNamesUnion(), IfExists: yyDollar[5].booleanUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), Temp: yyDollar[3].booleanUnion()} } yyVAL.union = yyLOCAL - case 699: + case 700: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3886 +//line sql.y:3890 { // Change this to an alter statement if yyDollar[4].identifierCI.Lowered() == "primary" { @@ -13969,52 +13968,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 700: + case 701: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3895 +//line sql.y:3899 { yyLOCAL = &DropView{FromTables: yyDollar[5].tableNamesUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 701: + case 702: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3899 +//line sql.y:3903 { yyLOCAL = &DropDatabase{Comments: Comments(yyDollar[2].strs).Parsed(), DBName: yyDollar[5].identifierCS, IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 702: + case 703: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3905 +//line sql.y:3909 { yyLOCAL = &TruncateTable{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 703: + case 704: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3909 +//line sql.y:3913 { yyLOCAL = &TruncateTable{Table: yyDollar[2].tableName} } yyVAL.union = yyLOCAL - case 704: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL Statement -//line sql.y:3915 - { - yyLOCAL = &OtherRead{} - } - yyVAL.union = yyLOCAL case 705: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3921 +//line sql.y:3919 { - yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &OtherRead{} } yyVAL.union = yyLOCAL case 706: @@ -14022,23 +14013,23 @@ yydefault: var yyLOCAL Statement //line sql.y:3925 { - yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 707: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:3929 { - yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 708: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement //line sql.y:3933 { - yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL case 709: @@ -14054,7 +14045,7 @@ yydefault: var yyLOCAL Statement //line sql.y:3941 { - yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 711: @@ -14066,43 +14057,43 @@ yydefault: } yyVAL.union = yyLOCAL case 712: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:3949 { - yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 713: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:3953 { - yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 714: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement //line sql.y:3957 { - yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL case 715: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:3961 { - yyLOCAL = &Show{&ShowBasic{Command: Privilege}} + yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL case 716: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:3965 { - yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Privilege}} } yyVAL.union = yyLOCAL case 717: @@ -14110,7 +14101,7 @@ yydefault: var yyLOCAL Statement //line sql.y:3969 { - yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 718: @@ -14118,7 +14109,7 @@ yydefault: var yyLOCAL Statement //line sql.y:3973 { - yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 719: @@ -14126,7 +14117,7 @@ yydefault: var yyLOCAL Statement //line sql.y:3977 { - yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 720: @@ -14134,15 +14125,15 @@ yydefault: var yyLOCAL Statement //line sql.y:3981 { - yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 721: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:3985 { - yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 722: @@ -14150,15 +14141,15 @@ yydefault: var yyLOCAL Statement //line sql.y:3989 { - yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL case 723: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:3993 { - yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].identifierCS, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL case 724: @@ -14166,7 +14157,7 @@ yydefault: var yyLOCAL Statement //line sql.y:3997 { - yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].identifierCS, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 725: @@ -14174,7 +14165,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4001 { - yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 726: @@ -14182,7 +14173,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4005 { - yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 727: @@ -14190,7 +14181,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4009 { - yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 728: @@ -14198,7 +14189,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4013 { - yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 729: @@ -14206,7 +14197,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4017 { - yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 730: @@ -14214,15 +14205,15 @@ yydefault: var yyLOCAL Statement //line sql.y:4021 { - yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} + yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 731: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4025 { - yyLOCAL = &Show{&ShowBasic{Command: Engines}} + yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL case 732: @@ -14230,15 +14221,15 @@ yydefault: var yyLOCAL Statement //line sql.y:4029 { - yyLOCAL = &Show{&ShowBasic{Command: Plugins}} + yyLOCAL = &Show{&ShowBasic{Command: Engines}} } yyVAL.union = yyLOCAL case 733: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:4033 { - yyLOCAL = &Show{&ShowBasic{Command: GtidExecGlobal, DbName: yyDollar[4].identifierCS}} + yyLOCAL = &Show{&ShowBasic{Command: Plugins}} } yyVAL.union = yyLOCAL case 734: @@ -14246,7 +14237,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4037 { - yyLOCAL = &Show{&ShowBasic{Command: VGtidExecGlobal, DbName: yyDollar[4].identifierCS}} + yyLOCAL = &Show{&ShowBasic{Command: GtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL case 735: @@ -14254,7 +14245,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4041 { - yyLOCAL = &Show{&ShowBasic{Command: VitessVariables, Filter: yyDollar[4].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: VGtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL case 736: @@ -14262,7 +14253,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4045 { - yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].identifierCS}} + yyLOCAL = &Show{&ShowBasic{Command: VitessVariables, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL case 737: @@ -14270,23 +14261,23 @@ yydefault: var yyLOCAL Statement //line sql.y:4049 { - yyLOCAL = &ShowMigrationLogs{UUID: string(yyDollar[3].str)} + yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL case 738: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4053 { - yyLOCAL = &ShowThrottledApps{} + yyLOCAL = &ShowMigrationLogs{UUID: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL case 739: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:4057 { - yyLOCAL = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &ShowThrottledApps{} } yyVAL.union = yyLOCAL case 740: @@ -14294,7 +14285,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4061 { - yyLOCAL = &ShowThrottlerStatus{} + yyLOCAL = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 741: @@ -14302,7 +14293,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4065 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} + yyLOCAL = &ShowThrottlerStatus{} } yyVAL.union = yyLOCAL case 742: @@ -14310,31 +14301,31 @@ yydefault: var yyLOCAL Statement //line sql.y:4069 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} } yyVAL.union = yyLOCAL case 743: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4073 { - yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} } yyVAL.union = yyLOCAL case 744: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:4077 { - yyLOCAL = &Show{&ShowBasic{Command: Warnings}} + yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} } yyVAL.union = yyLOCAL case 745: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:4081 { - yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: Warnings}} } yyVAL.union = yyLOCAL case 746: @@ -14342,31 +14333,31 @@ yydefault: var yyLOCAL Statement //line sql.y:4085 { - yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} + yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 747: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4089 { - yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} + yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL case 748: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4096 +//line sql.y:4093 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} + yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} } yyVAL.union = yyLOCAL case 749: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4100 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} } yyVAL.union = yyLOCAL case 750: @@ -14374,7 +14365,7 @@ yydefault: var yyLOCAL Statement //line sql.y:4104 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 751: @@ -14382,23 +14373,23 @@ yydefault: var yyLOCAL Statement //line sql.y:4108 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} } yyVAL.union = yyLOCAL case 752: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4112 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 753: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement //line sql.y:4116 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL case 754: @@ -14410,55 +14401,57 @@ yydefault: } yyVAL.union = yyLOCAL case 755: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement //line sql.y:4124 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL case 756: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement //line sql.y:4128 { - yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL case 757: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL Statement +//line sql.y:4132 + { + yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} + } + yyVAL.union = yyLOCAL + case 758: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4134 +//line sql.y:4138 { yyVAL.str = "" } - case 758: + case 759: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4138 +//line sql.y:4142 { yyVAL.str = "extended " } - case 759: + case 760: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4144 +//line sql.y:4148 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 760: + case 761: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4148 +//line sql.y:4152 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 761: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4154 - { - yyVAL.str = string(yyDollar[1].str) - } case 762: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4158 @@ -14466,16 +14459,16 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 763: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4164 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4162 { - yyVAL.identifierCS = NewIdentifierCS("") + yyVAL.str = string(yyDollar[1].str) } case 764: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4168 { - yyVAL.identifierCS = yyDollar[2].identifierCS + yyVAL.identifierCS = NewIdentifierCS("") } case 765: yyDollar = yyS[yypt-2 : yypt+1] @@ -14484,53 +14477,53 @@ yydefault: yyVAL.identifierCS = yyDollar[2].identifierCS } case 766: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4176 + { + yyVAL.identifierCS = yyDollar[2].identifierCS + } + case 767: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4178 +//line sql.y:4182 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 767: + case 768: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4182 +//line sql.y:4186 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 768: + case 769: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4186 +//line sql.y:4190 { yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 769: + case 770: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4192 +//line sql.y:4196 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 770: + case 771: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4196 +//line sql.y:4200 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 771: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4202 - { - yyVAL.empty = struct{}{} - } case 772: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4206 { yyVAL.empty = struct{}{} @@ -14543,9 +14536,9 @@ yydefault: } case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4216 +//line sql.y:4214 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.empty = struct{}{} } case 775: yyDollar = yyS[yypt-1 : yypt+1] @@ -14554,147 +14547,145 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 776: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL Statement -//line sql.y:4226 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4224 { - yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} + yyVAL.str = string(yyDollar[1].str) } - yyVAL.union = yyLOCAL case 777: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement //line sql.y:4230 { - yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} + yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL case 778: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement //line sql.y:4234 { - yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} + yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} } yyVAL.union = yyLOCAL case 779: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4241 + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL Statement +//line sql.y:4238 { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} } + yyVAL.union = yyLOCAL case 780: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4245 { - yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } case 781: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4249 { - yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) } case 782: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4253 { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) } case 783: yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4257 + { + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + } + case 784: + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4260 +//line sql.y:4264 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 784: + case 785: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4264 +//line sql.y:4268 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 785: + case 786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4270 +//line sql.y:4274 { yyLOCAL = &Commit{} } yyVAL.union = yyLOCAL - case 786: + case 787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4276 +//line sql.y:4280 { yyLOCAL = &Rollback{} } yyVAL.union = yyLOCAL - case 787: + case 788: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4280 +//line sql.y:4284 { yyLOCAL = &SRollback{Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 788: + case 789: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4285 +//line sql.y:4289 { yyVAL.empty = struct{}{} } - case 789: + case 790: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4287 +//line sql.y:4291 { yyVAL.empty = struct{}{} } - case 790: + case 791: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4290 +//line sql.y:4294 { yyVAL.empty = struct{}{} } - case 791: + case 792: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4292 +//line sql.y:4296 { yyVAL.empty = struct{}{} } - case 792: + case 793: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4296 +//line sql.y:4300 { yyLOCAL = &Savepoint{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 793: + case 794: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4302 +//line sql.y:4306 { yyLOCAL = &Release{Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 794: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL ExplainType -//line sql.y:4307 - { - yyLOCAL = EmptyType - } - yyVAL.union = yyLOCAL case 795: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL ExplainType //line sql.y:4311 { - yyLOCAL = JSONType + yyLOCAL = EmptyType } yyVAL.union = yyLOCAL case 796: @@ -14702,7 +14693,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4315 { - yyLOCAL = TreeType + yyLOCAL = JSONType } yyVAL.union = yyLOCAL case 797: @@ -14710,7 +14701,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4319 { - yyLOCAL = VitessType + yyLOCAL = TreeType } yyVAL.union = yyLOCAL case 798: @@ -14718,7 +14709,7 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4323 { - yyLOCAL = VTExplainType + yyLOCAL = VitessType } yyVAL.union = yyLOCAL case 799: @@ -14726,23 +14717,25 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4327 { - yyLOCAL = TraditionalType + yyLOCAL = VTExplainType } yyVAL.union = yyLOCAL case 800: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType //line sql.y:4331 { - yyLOCAL = AnalyzeType + yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4337 + var yyLOCAL ExplainType +//line sql.y:4335 { - yyVAL.str = yyDollar[1].str + yyLOCAL = AnalyzeType } + yyVAL.union = yyLOCAL case 802: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4341 @@ -14757,18 +14750,16 @@ yydefault: } case 804: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Statement -//line sql.y:4351 +//line sql.y:4349 { - yyLOCAL = yyDollar[1].selStmtUnion() + yyVAL.str = yyDollar[1].str } - yyVAL.union = yyLOCAL case 805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement //line sql.y:4355 { - yyLOCAL = yyDollar[1].statementUnion() + yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL case 806: @@ -14788,200 +14779,202 @@ yydefault: } yyVAL.union = yyLOCAL case 808: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4368 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Statement +//line sql.y:4367 { - yyVAL.str = "" + yyLOCAL = yyDollar[1].statementUnion() } + yyVAL.union = yyLOCAL case 809: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4372 { - yyVAL.str = yyDollar[1].identifierCI.val + yyVAL.str = "" } case 810: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4376 { - yyVAL.str = encodeSQLString(yyDollar[1].str) + yyVAL.str = yyDollar[1].identifierCI.val } case 811: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4380 + { + yyVAL.str = encodeSQLString(yyDollar[1].str) + } + case 812: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4382 +//line sql.y:4386 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 812: + case 813: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4386 +//line sql.y:4390 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 813: + case 814: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4392 +//line sql.y:4396 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 814: + case 815: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4396 +//line sql.y:4400 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 815: + case 816: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4402 +//line sql.y:4406 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 816: + case 817: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4408 +//line sql.y:4412 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 817: + case 818: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4412 +//line sql.y:4416 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 818: + case 819: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4418 +//line sql.y:4422 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 819: + case 820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4424 +//line sql.y:4428 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 820: + case 821: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4428 +//line sql.y:4432 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 821: + case 822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4432 +//line sql.y:4436 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 822: + case 823: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4436 +//line sql.y:4440 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 823: + case 824: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4442 +//line sql.y:4446 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 824: + case 825: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4448 +//line sql.y:4452 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 825: + case 826: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4454 +//line sql.y:4458 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 826: + case 827: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4458 +//line sql.y:4462 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 827: + case 828: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4462 +//line sql.y:4466 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 828: + case 829: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4466 +//line sql.y:4470 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 829: + case 830: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4470 +//line sql.y:4474 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 830: + case 831: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4474 +//line sql.y:4478 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 831: + case 832: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4480 +//line sql.y:4484 { yyVAL.strs = []string{yyDollar[1].str} } - case 832: + case 833: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4484 +//line sql.y:4488 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 833: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4490 - { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) - } case 834: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4494 @@ -15001,10 +14994,10 @@ yydefault: yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 837: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4506 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 838: yyDollar = yyS[yypt-1 : yypt+1] @@ -15019,22 +15012,22 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 840: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4518 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str + yyVAL.str = string(yyDollar[1].str) } case 841: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4522 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } case 842: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4526 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 843: yyDollar = yyS[yypt-1 : yypt+1] @@ -15049,144 +15042,150 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 845: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4538 + { + yyVAL.str = string(yyDollar[1].str) + } + case 846: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4539 +//line sql.y:4543 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 846: + case 847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4543 +//line sql.y:4547 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 847: + case 848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4547 +//line sql.y:4551 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 848: + case 849: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4552 +//line sql.y:4556 { yyVAL.str = "" } - case 849: + case 850: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4556 +//line sql.y:4560 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 850: + case 851: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4561 +//line sql.y:4565 { setAllowComments(yylex, true) } - case 851: + case 852: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4565 +//line sql.y:4569 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 852: + case 853: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4571 +//line sql.y:4575 { yyVAL.strs = nil } - case 853: + case 854: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4575 +//line sql.y:4579 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 854: + case 855: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4581 +//line sql.y:4585 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 855: + case 856: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4585 +//line sql.y:4589 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 856: + case 857: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4589 +//line sql.y:4593 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 857: + case 858: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4594 +//line sql.y:4598 { yyVAL.str = "" } - case 858: + case 859: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4598 +//line sql.y:4602 { yyVAL.str = SQLNoCacheStr } - case 859: + case 860: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4602 +//line sql.y:4606 { yyVAL.str = SQLCacheStr } - case 860: + case 861: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4607 +//line sql.y:4611 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 861: + case 862: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4611 +//line sql.y:4615 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 862: + case 863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4615 +//line sql.y:4619 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 863: + case 864: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4621 +//line sql.y:4625 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 864: + case 865: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4625 +//line sql.y:4629 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -15195,109 +15194,103 @@ yydefault: } } yyVAL.union = yyLOCAL - case 865: + case 866: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4635 +//line sql.y:4639 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 866: + case 867: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4640 +//line sql.y:4644 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 867: + case 868: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4644 +//line sql.y:4648 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 868: + case 869: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4650 +//line sql.y:4654 { yyLOCAL = &DeallocateStmt{Type: DeallocateType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 869: + case 870: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4654 +//line sql.y:4658 { yyLOCAL = &DeallocateStmt{Type: DropType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 870: + case 871: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4659 +//line sql.y:4663 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 871: + case 872: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4663 +//line sql.y:4667 { yyLOCAL = yyDollar[1].selectExprsUnion() } yyVAL.union = yyLOCAL - case 872: + case 873: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4668 +//line sql.y:4672 { yyVAL.strs = nil } - case 873: + case 874: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4672 +//line sql.y:4676 { yyVAL.strs = []string{yyDollar[1].str} } - case 874: + case 875: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4676 +//line sql.y:4680 { // 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 875: + case 876: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4680 +//line sql.y:4684 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 876: + case 877: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4684 +//line sql.y:4688 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 877: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4690 - { - yyVAL.str = SQLNoCacheStr - } case 878: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4694 { - yyVAL.str = SQLCacheStr + yyVAL.str = SQLNoCacheStr } case 879: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4698 { - yyVAL.str = DistinctStr + yyVAL.str = SQLCacheStr } case 880: yyDollar = yyS[yypt-1 : yypt+1] @@ -15309,481 +15302,487 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4706 { - yyVAL.str = StraightJoinHint + yyVAL.str = DistinctStr } case 882: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4710 { - yyVAL.str = SQLCalcFoundRowsStr + yyVAL.str = StraightJoinHint } case 883: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4714 { - yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway + yyVAL.str = SQLCalcFoundRowsStr } case 884: yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4718 + { + yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway + } + case 885: + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4720 +//line sql.y:4724 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 885: + case 886: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4724 +//line sql.y:4728 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 886: + case 887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4730 +//line sql.y:4734 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 887: + case 888: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4734 +//line sql.y:4738 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 888: + case 889: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4738 +//line sql.y:4742 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 889: + case 890: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4742 +//line sql.y:4746 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 890: + case 891: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4747 +//line sql.y:4751 { yyVAL.identifierCI = IdentifierCI{} } - case 891: + case 892: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4751 +//line sql.y:4755 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 892: + case 893: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4755 +//line sql.y:4759 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 894: + case 895: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4762 +//line sql.y:4766 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 895: + case 896: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4767 +//line sql.y:4771 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 896: + case 897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4771 +//line sql.y:4775 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 897: + case 898: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4777 +//line sql.y:4781 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 898: + case 899: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4783 +//line sql.y:4787 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 899: + case 900: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4787 +//line sql.y:4791 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 902: + case 903: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4797 +//line sql.y:4801 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 903: + case 904: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4801 +//line sql.y:4805 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 904: + case 905: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4805 +//line sql.y:4809 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 905: + case 906: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4809 +//line sql.y:4813 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 906: + case 907: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4815 +//line sql.y:4819 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 907: + case 908: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4819 +//line sql.y:4823 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[3].selStmtUnion()} } yyVAL.union = yyLOCAL - case 908: + case 909: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4825 +//line sql.y:4829 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 909: + case 910: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4829 +//line sql.y:4833 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 910: + case 911: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4834 +//line sql.y:4838 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 911: + case 912: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4838 +//line sql.y:4842 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 912: + case 913: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4843 +//line sql.y:4847 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 913: + case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4847 +//line sql.y:4851 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 914: + case 915: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4853 +//line sql.y:4857 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 915: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4857 +//line sql.y:4861 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 916: + case 917: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4863 +//line sql.y:4867 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 917: + case 918: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4867 +//line sql.y:4871 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 918: + case 919: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4873 +//line sql.y:4877 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 919: + case 920: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4877 +//line sql.y:4881 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 920: + case 921: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4881 +//line sql.y:4885 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 921: + case 922: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4885 +//line sql.y:4889 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 922: + case 923: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:4891 +//line sql.y:4895 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 923: + case 924: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4895 +//line sql.y:4899 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 924: + case 925: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4908 +//line sql.y:4912 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 925: + case 926: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4912 +//line sql.y:4916 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 926: + case 927: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4916 +//line sql.y:4920 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 927: + case 928: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4920 +//line sql.y:4924 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 928: + case 929: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4926 +//line sql.y:4930 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 929: + case 930: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4928 +//line sql.y:4932 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 930: + case 931: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4932 +//line sql.y:4936 { yyVAL.joinCondition = &JoinCondition{} } - case 931: + case 932: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4934 +//line sql.y:4938 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 932: + case 933: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4938 +//line sql.y:4942 { yyVAL.joinCondition = &JoinCondition{} } - case 933: + case 934: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4940 +//line sql.y:4944 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 934: + case 935: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4943 +//line sql.y:4947 { yyVAL.empty = struct{}{} } - case 935: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4945 +//line sql.y:4949 { yyVAL.empty = struct{}{} } - case 936: + case 937: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4948 +//line sql.y:4952 { yyVAL.identifierCS = NewIdentifierCS("") } - case 937: + case 938: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4952 +//line sql.y:4956 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 938: + case 939: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4956 +//line sql.y:4960 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 940: + case 941: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4963 +//line sql.y:4967 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 941: + case 942: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4969 +//line sql.y:4973 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 942: + case 943: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4973 +//line sql.y:4977 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 943: + case 944: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4977 +//line sql.y:4981 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 944: + case 945: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4983 +//line sql.y:4987 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 945: + case 946: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4989 +//line sql.y:4993 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 946: + case 947: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4993 +//line sql.y:4997 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 947: + case 948: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4997 +//line sql.y:5001 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 948: + case 949: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5001 +//line sql.y:5005 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 949: + case 950: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5007 +//line sql.y:5011 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 950: + case 951: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5011 +//line sql.y:5015 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -15792,347 +15791,339 @@ yydefault: } } yyVAL.union = yyLOCAL - case 951: + case 952: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5021 +//line sql.y:5025 { yyVAL.tableName = yyDollar[2].tableName } - case 952: + case 953: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5025 +//line sql.y:5029 { yyVAL.tableName = yyDollar[1].tableName } - case 953: + case 954: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5031 +//line sql.y:5035 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 954: + case 955: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5035 +//line sql.y:5039 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 955: + case 956: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5041 +//line sql.y:5045 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 956: + case 957: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5046 +//line sql.y:5050 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 957: + case 958: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5050 +//line sql.y:5054 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 958: + case 959: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5056 +//line sql.y:5060 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 959: + case 960: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5060 +//line sql.y:5064 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 960: + case 961: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5066 +//line sql.y:5070 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 961: + case 962: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5070 +//line sql.y:5074 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 962: + case 963: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5074 +//line sql.y:5078 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 963: + case 964: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5078 +//line sql.y:5082 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 964: + case 965: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5083 +//line sql.y:5087 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 965: + case 966: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5087 +//line sql.y:5091 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 966: + case 967: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5091 +//line sql.y:5095 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 967: + case 968: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5095 +//line sql.y:5099 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 968: + case 969: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5101 +//line sql.y:5105 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 969: + case 970: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5105 +//line sql.y:5109 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 970: + case 971: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5112 +//line sql.y:5116 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 971: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5116 +//line sql.y:5120 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 972: + case 973: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5120 +//line sql.y:5124 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 973: + case 974: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5124 +//line sql.y:5128 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 974: + case 975: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5128 +//line sql.y:5132 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 975: + case 976: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5132 +//line sql.y:5136 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 976: + case 977: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5136 +//line sql.y:5140 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 977: + case 978: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5142 +//line sql.y:5146 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 978: + case 979: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5146 +//line sql.y:5150 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 979: + case 980: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5150 +//line sql.y:5154 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 980: + case 981: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5154 +//line sql.y:5158 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 981: + case 982: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5160 +//line sql.y:5164 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 982: + case 983: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5164 +//line sql.y:5168 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 983: + case 984: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5168 +//line sql.y:5172 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 984: + case 985: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5172 +//line sql.y:5176 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 985: + case 986: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5176 +//line sql.y:5180 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 986: + case 987: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5180 +//line sql.y:5184 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 987: + case 988: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5184 +//line sql.y:5188 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 988: + case 989: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5188 +//line sql.y:5192 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 989: + case 990: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5192 +//line sql.y:5196 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 990: + case 991: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5196 +//line sql.y:5200 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 991: + case 992: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5200 +//line sql.y:5204 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 992: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5206 - { - } case 993: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5209 +//line sql.y:5210 { } case 994: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL Expr -//line sql.y:5215 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:5213 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } - yyVAL.union = yyLOCAL case 995: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5219 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 996: @@ -16140,7 +16131,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5223 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 997: @@ -16148,7 +16139,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5227 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 998: @@ -16156,7 +16147,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5231 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 999: @@ -16164,7 +16155,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5235 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1000: @@ -16172,7 +16163,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5239 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1001: @@ -16180,7 +16171,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5243 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1002: @@ -16188,7 +16179,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5247 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1003: @@ -16196,7 +16187,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5251 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1004: @@ -16204,7 +16195,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5255 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1005: @@ -16212,21 +16203,21 @@ yydefault: var yyLOCAL Expr //line sql.y:5259 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1006: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5263 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1007: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5269 +//line sql.y:5267 { yyLOCAL = yyDollar[1].exprUnion() } @@ -16256,19 +16247,19 @@ yydefault: } yyVAL.union = yyLOCAL case 1011: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5285 { - yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1012: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5289 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL case 1013: @@ -16284,15 +16275,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5297 { - yyLOCAL = yyDollar[1].variableUnion() + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1015: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5301 { - yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? + yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL case 1016: @@ -16300,7 +16291,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5305 { - yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL case 1017: @@ -16308,7 +16299,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5309 { - yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1018: @@ -16316,15 +16307,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5313 { - yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} + yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1019: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5317 { - yyLOCAL = yyDollar[1].subqueryUnion() + yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1020: @@ -16332,23 +16323,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5321 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL case 1021: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5325 { - yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1022: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5329 { - yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} + yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL case 1023: @@ -16356,15 +16347,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5333 { - yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} + yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL case 1024: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:5337 { - yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} + yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL case 1025: @@ -16372,13 +16363,21 @@ yydefault: var yyLOCAL Expr //line sql.y:5341 { - yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} + yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1026: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5345 + { + yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} + } + yyVAL.union = yyLOCAL + case 1027: + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL Expr +//line sql.y:5349 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -16387,18 +16386,18 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1027: + case 1028: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5353 +//line sql.y:5357 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1028: + case 1029: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5357 +//line sql.y:5361 { // INTERVAL can trigger a shift / reduce conflict. We want // to shift here for the interval rule. In case we do have @@ -16407,83 +16406,75 @@ yydefault: yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1029: + case 1030: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5365 +//line sql.y:5369 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1031: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5369 +//line sql.y:5373 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1032: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5373 +//line sql.y:5377 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1032: + case 1033: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5379 +//line sql.y:5383 { yyLOCAL = &IntervalExpr{Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].identifierCI.String()} } yyVAL.union = yyLOCAL - case 1033: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5385 +//line sql.y:5389 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1034: + case 1035: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5389 +//line sql.y:5393 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1035: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5395 +//line sql.y:5399 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1036: + case 1037: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5399 +//line sql.y:5403 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1037: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL TrimType -//line sql.y:5405 - { - yyLOCAL = BothTrimType - } - yyVAL.union = yyLOCAL case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType //line sql.y:5409 { - yyLOCAL = LeadingTrimType + yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL case 1039: @@ -16491,15 +16482,15 @@ yydefault: var yyLOCAL TrimType //line sql.y:5413 { - yyLOCAL = TrailingTrimType + yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL case 1040: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL FrameUnitType -//line sql.y:5419 + var yyLOCAL TrimType +//line sql.y:5417 { - yyLOCAL = FrameRowsType + yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL case 1041: @@ -16507,15 +16498,15 @@ yydefault: var yyLOCAL FrameUnitType //line sql.y:5423 { - yyLOCAL = FrameRangeType + yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL case 1042: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5430 + var yyLOCAL FrameUnitType +//line sql.y:5427 { - yyLOCAL = CumeDistExprType + yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL case 1043: @@ -16523,7 +16514,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5434 { - yyLOCAL = DenseRankExprType + yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL case 1044: @@ -16531,7 +16522,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5438 { - yyLOCAL = PercentRankExprType + yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL case 1045: @@ -16539,7 +16530,7 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5442 { - yyLOCAL = RankExprType + yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL case 1046: @@ -16547,15 +16538,15 @@ yydefault: var yyLOCAL ArgumentLessWindowExprType //line sql.y:5446 { - yyLOCAL = RowNumberExprType + yyLOCAL = RankExprType } yyVAL.union = yyLOCAL case 1047: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL *FramePoint -//line sql.y:5452 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL ArgumentLessWindowExprType +//line sql.y:5450 { - yyLOCAL = &FramePoint{Type: CurrentRowType} + yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL case 1048: @@ -16563,7 +16554,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5456 { - yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} + yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL case 1049: @@ -16571,7 +16562,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5460 { - yyLOCAL = &FramePoint{Type: UnboundedFollowingType} + yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL case 1050: @@ -16579,7 +16570,7 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5464 { - yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} + yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL case 1051: @@ -16587,15 +16578,15 @@ yydefault: var yyLOCAL *FramePoint //line sql.y:5468 { - yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} + yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL case 1052: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Expr -//line sql.y:5474 + yyDollar = yyS[yypt-2 : yypt+1] + var yyLOCAL *FramePoint +//line sql.y:5472 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL case 1053: @@ -16607,281 +16598,281 @@ yydefault: } yyVAL.union = yyLOCAL case 1054: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Expr +//line sql.y:5482 + { + yyLOCAL = yyDollar[1].exprUnion() + } + yyVAL.union = yyLOCAL + case 1055: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5483 +//line sql.y:5487 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1055: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5487 +//line sql.y:5491 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1056: + case 1057: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5493 +//line sql.y:5497 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1058: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5497 +//line sql.y:5501 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1059: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5502 +//line sql.y:5506 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1059: + case 1060: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5506 +//line sql.y:5510 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1060: + case 1061: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5511 +//line sql.y:5515 { } - case 1061: + case 1062: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5514 +//line sql.y:5518 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1062: + case 1063: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5520 +//line sql.y:5524 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1063: + case 1064: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5526 +//line sql.y:5530 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1064: + case 1065: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5530 +//line sql.y:5534 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1065: + case 1066: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5535 +//line sql.y:5539 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1067: + case 1068: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5542 +//line sql.y:5546 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1068: + case 1069: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5548 +//line sql.y:5552 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1069: + case 1070: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5552 +//line sql.y:5556 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1070: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5558 +//line sql.y:5562 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1071: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5562 +//line sql.y:5566 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1072: + case 1073: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5568 +//line sql.y:5572 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1073: + case 1074: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5572 +//line sql.y:5576 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1074: + case 1075: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5577 +//line sql.y:5581 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1076: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5584 +//line sql.y:5588 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1077: + case 1078: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5590 +//line sql.y:5594 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1078: + case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5594 +//line sql.y:5598 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1079: + case 1080: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5600 +//line sql.y:5604 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1080: + case 1081: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5606 +//line sql.y:5610 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1081: + case 1082: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5610 +//line sql.y:5614 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1082: + case 1083: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5616 +//line sql.y:5620 { yyVAL.str = "" } - case 1083: + case 1084: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5620 +//line sql.y:5624 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1084: + case 1085: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5626 +//line sql.y:5630 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1085: + case 1086: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5630 +//line sql.y:5634 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1086: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5637 +//line sql.y:5641 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1087: + case 1088: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5641 +//line sql.y:5645 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1088: + case 1089: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5645 +//line sql.y:5649 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1089: + case 1090: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5649 +//line sql.y:5653 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1090: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ComparisonExprOperator -//line sql.y:5655 - { - yyLOCAL = EqualOp - } - yyVAL.union = yyLOCAL case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator //line sql.y:5659 { - yyLOCAL = LessThanOp + yyLOCAL = EqualOp } yyVAL.union = yyLOCAL case 1092: @@ -16889,7 +16880,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5663 { - yyLOCAL = GreaterThanOp + yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL case 1093: @@ -16897,7 +16888,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5667 { - yyLOCAL = LessEqualOp + yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL case 1094: @@ -16905,7 +16896,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5671 { - yyLOCAL = GreaterEqualOp + yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL case 1095: @@ -16913,7 +16904,7 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5675 { - yyLOCAL = NotEqualOp + yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL case 1096: @@ -16921,15 +16912,15 @@ yydefault: var yyLOCAL ComparisonExprOperator //line sql.y:5679 { - yyLOCAL = NullSafeEqualOp + yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL case 1097: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ColTuple -//line sql.y:5685 + var yyLOCAL ComparisonExprOperator +//line sql.y:5683 { - yyLOCAL = yyDollar[1].valTupleUnion() + yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL case 1098: @@ -16937,159 +16928,159 @@ yydefault: var yyLOCAL ColTuple //line sql.y:5689 { - yyLOCAL = yyDollar[1].subqueryUnion() + yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL case 1099: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple //line sql.y:5693 + { + yyLOCAL = yyDollar[1].subqueryUnion() + } + yyVAL.union = yyLOCAL + case 1100: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL ColTuple +//line sql.y:5697 { yyLOCAL = ListArg(yyDollar[1].str[2:]) bindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1100: + case 1101: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5700 +//line sql.y:5704 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1101: + case 1102: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5706 +//line sql.y:5710 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1102: + case 1103: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5710 +//line sql.y:5714 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1103: + case 1104: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5720 +//line sql.y:5724 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1104: + case 1105: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5724 +//line sql.y:5728 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1105: - yyDollar = yyS[yypt-4 : yypt+1] - var yyLOCAL Expr -//line sql.y:5734 - { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} - } - yyVAL.union = yyLOCAL case 1106: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5738 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1107: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5742 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1108: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5746 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1109: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5750 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1110: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5754 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1111: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5758 { - yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1112: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5762 { - yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} + yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1113: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5766 { - yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} + yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL case 1114: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:5770 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} + yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL case 1115: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5781 +//line sql.y:5774 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1116: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5785 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL case 1117: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5791 +//line sql.y:5789 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1118: @@ -17097,31 +17088,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5795 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL case 1119: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5800 +//line sql.y:5799 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1120: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5804 { - yyLOCAL = &CountStar{} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1121: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5808 { - yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} + yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL case 1122: @@ -17129,7 +17120,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5812 { - yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL case 1123: @@ -17137,7 +17128,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5816 { - yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1124: @@ -17145,7 +17136,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5820 { - yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1125: @@ -17153,15 +17144,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5824 { - yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1126: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5828 { - yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1127: @@ -17169,7 +17160,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5832 { - yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1128: @@ -17177,7 +17168,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5836 { - yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1129: @@ -17185,7 +17176,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5840 { - yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1130: @@ -17193,7 +17184,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5844 { - yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1131: @@ -17201,7 +17192,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5848 { - yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1132: @@ -17209,7 +17200,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5852 { - yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1133: @@ -17217,7 +17208,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5856 { - yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1134: @@ -17225,7 +17216,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5860 { - yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1135: @@ -17233,15 +17224,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5864 { - yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1136: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5868 { - yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} + yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1137: @@ -17249,7 +17240,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5872 { - yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} + yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL case 1138: @@ -17257,31 +17248,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5876 { - yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} + yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1139: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5880 { - yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} + yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1140: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5884 { - yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} + yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1141: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5888 { - yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1142: @@ -17289,7 +17280,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5892 { - yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1143: @@ -17297,7 +17288,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5896 { - yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1144: @@ -17305,7 +17296,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5900 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1145: @@ -17313,23 +17304,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5904 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1146: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5908 { - yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1147: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:5912 { - yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL case 1148: @@ -17337,15 +17328,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5916 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} + yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1149: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5920 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1150: @@ -17353,7 +17344,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5924 { - yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL case 1151: @@ -17361,23 +17352,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5928 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1152: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5932 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1153: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5936 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1154: @@ -17385,15 +17376,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5940 { - yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1155: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5944 { - yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1156: @@ -17401,31 +17392,31 @@ yydefault: var yyLOCAL Expr //line sql.y:5948 { - yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1157: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5952 { - yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} + yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1158: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5956 { - yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL case 1159: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5960 { - yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1160: @@ -17433,15 +17424,15 @@ yydefault: var yyLOCAL Expr //line sql.y:5964 { - yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1161: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5968 { - yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} + yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1162: @@ -17449,7 +17440,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5972 { - yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} + yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1163: @@ -17457,47 +17448,47 @@ yydefault: var yyLOCAL Expr //line sql.y:5976 { - yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1164: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5980 { - yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} + yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1165: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5984 { - yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} + yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL case 1166: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:5988 { - yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL case 1167: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:5992 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1168: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5996 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1169: @@ -17505,39 +17496,39 @@ yydefault: var yyLOCAL Expr //line sql.y:6000 { - yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1170: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6004 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} + yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1171: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6008 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} + yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1172: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:6012 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} + yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL case 1173: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:6016 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1174: @@ -17545,23 +17536,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6020 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1175: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6024 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1176: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6028 { - yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1177: @@ -17569,7 +17560,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6032 { - yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1178: @@ -17577,7 +17568,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6036 { - yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1179: @@ -17585,15 +17576,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6040 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1180: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6044 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1181: @@ -17601,7 +17592,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6048 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1182: @@ -17609,7 +17600,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6052 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1183: @@ -17617,7 +17608,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6056 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1184: @@ -17625,7 +17616,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6060 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1185: @@ -17633,7 +17624,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6064 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1186: @@ -17641,7 +17632,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6068 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1187: @@ -17649,7 +17640,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6072 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1188: @@ -17657,7 +17648,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6076 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1189: @@ -17665,15 +17656,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6080 { - yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1190: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6084 { - yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} + yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1191: @@ -17681,55 +17672,55 @@ yydefault: var yyLOCAL Expr //line sql.y:6088 { - yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} + yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1192: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6092 { - yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL case 1193: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6096 { - yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} + yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL case 1194: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:6100 { - yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} + yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL case 1195: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6104 { - yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL case 1196: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6108 { - yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} + yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1201: - yyDollar = yyS[yypt-1 : yypt+1] + case 1197: + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6118 +//line sql.y:6112 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL case 1202: @@ -17737,7 +17728,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6122 { - yyLOCAL = NewIntLiteral(yyDollar[1].str) + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1203: @@ -17745,296 +17736,296 @@ yydefault: var yyLOCAL Expr //line sql.y:6126 { - yyLOCAL = yyDollar[1].variableUnion() + yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL case 1204: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:6130 + { + yyLOCAL = yyDollar[1].variableUnion() + } + yyVAL.union = yyLOCAL + case 1205: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Expr +//line sql.y:6134 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1205: + case 1206: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6136 +//line sql.y:6140 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1206: + case 1207: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6140 +//line sql.y:6144 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1207: + case 1208: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6146 +//line sql.y:6150 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1208: + case 1209: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6150 +//line sql.y:6154 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1210: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6154 +//line sql.y:6158 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1211: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6158 +//line sql.y:6162 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1211: + case 1212: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6162 +//line sql.y:6166 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1213: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6167 +//line sql.y:6171 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1214: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6171 +//line sql.y:6175 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1215: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6175 +//line sql.y:6179 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1216: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6179 +//line sql.y:6183 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1217: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6183 +//line sql.y:6187 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1218: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6187 +//line sql.y:6191 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1219: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6192 +//line sql.y:6196 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1219: + case 1220: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6196 +//line sql.y:6200 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1221: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6200 +//line sql.y:6204 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1221: + case 1222: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6204 +//line sql.y:6208 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1223: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6211 +//line sql.y:6215 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1224: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6215 +//line sql.y:6219 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1225: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6221 +//line sql.y:6225 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1226: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6225 +//line sql.y:6229 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1226: + case 1227: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6229 +//line sql.y:6233 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1227: + case 1228: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6233 +//line sql.y:6237 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1228: + case 1229: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6239 +//line sql.y:6243 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1230: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6243 +//line sql.y:6247 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1230: + case 1231: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6247 +//line sql.y:6251 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1231: + case 1232: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6251 +//line sql.y:6255 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1232: + case 1233: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6255 +//line sql.y:6259 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1234: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6259 +//line sql.y:6263 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1234: + case 1235: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6263 +//line sql.y:6267 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1235: + case 1236: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6268 +//line sql.y:6272 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1236: + case 1237: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6272 +//line sql.y:6276 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1237: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6278 - { - } case 1238: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL IntervalTypes -//line sql.y:6280 +//line sql.y:6282 { - yyLOCAL = IntervalDayHour } - yyVAL.union = yyLOCAL case 1239: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes //line sql.y:6284 { - yyLOCAL = IntervalDayMicrosecond + yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL case 1240: @@ -18042,7 +18033,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6288 { - yyLOCAL = IntervalDayMinute + yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL case 1241: @@ -18050,7 +18041,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6292 { - yyLOCAL = IntervalDaySecond + yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL case 1242: @@ -18058,7 +18049,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6296 { - yyLOCAL = IntervalHourMicrosecond + yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL case 1243: @@ -18066,7 +18057,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6300 { - yyLOCAL = IntervalHourMinute + yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL case 1244: @@ -18074,7 +18065,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6304 { - yyLOCAL = IntervalHourSecond + yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL case 1245: @@ -18082,7 +18073,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6308 { - yyLOCAL = IntervalMinuteMicrosecond + yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL case 1246: @@ -18090,7 +18081,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6312 { - yyLOCAL = IntervalMinuteSecond + yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL case 1247: @@ -18098,7 +18089,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6316 { - yyLOCAL = IntervalSecondMicrosecond + yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL case 1248: @@ -18106,15 +18097,15 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6320 { - yyLOCAL = IntervalYearMonth + yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6326 +//line sql.y:6324 { - yyLOCAL = IntervalDay + yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL case 1250: @@ -18122,7 +18113,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6330 { - yyLOCAL = IntervalWeek + yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL case 1251: @@ -18130,7 +18121,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6334 { - yyLOCAL = IntervalHour + yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL case 1252: @@ -18138,7 +18129,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6338 { - yyLOCAL = IntervalMinute + yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL case 1253: @@ -18146,7 +18137,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6342 { - yyLOCAL = IntervalMonth + yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL case 1254: @@ -18154,7 +18145,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6346 { - yyLOCAL = IntervalQuarter + yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL case 1255: @@ -18162,7 +18153,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6350 { - yyLOCAL = IntervalSecond + yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL case 1256: @@ -18170,7 +18161,7 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6354 { - yyLOCAL = IntervalMicrosecond + yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL case 1257: @@ -18178,19 +18169,19 @@ yydefault: var yyLOCAL IntervalTypes //line sql.y:6358 { - yyLOCAL = IntervalYear + yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1260: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL Expr -//line sql.y:6368 + case 1258: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL IntervalTypes +//line sql.y:6362 { - yyLOCAL = nil + yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL case 1261: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr //line sql.y:6372 { @@ -18198,11 +18189,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1262: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:6376 { - yyLOCAL = NewIntLiteral(yyDollar[2].str) + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1263: @@ -18210,16 +18201,16 @@ yydefault: var yyLOCAL Expr //line sql.y:6380 { - yyLOCAL = NewArgument(yyDollar[2].str[1:]) - bindVariable(yylex, yyDollar[2].str[1:]) + yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 1264: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6391 +//line sql.y:6384 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = NewArgument(yyDollar[2].str[1:]) + bindVariable(yylex, yyDollar[2].str[1:]) } yyVAL.union = yyLOCAL case 1265: @@ -18227,7 +18218,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6395 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1266: @@ -18235,7 +18226,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6399 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1267: @@ -18243,7 +18234,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6403 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1268: @@ -18251,60 +18242,62 @@ yydefault: var yyLOCAL Expr //line sql.y:6407 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1269: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL MatchExprOption -//line sql.y:6413 + yyDollar = yyS[yypt-4 : yypt+1] + var yyLOCAL Expr +//line sql.y:6411 { - yyLOCAL = NoOption + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL case 1270: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6417 { - yyLOCAL = BooleanModeOpt + yyLOCAL = NoOption } yyVAL.union = yyLOCAL case 1271: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6421 { - yyLOCAL = NaturalLanguageModeOpt + yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL case 1272: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6425 { - yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt + yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL case 1273: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption //line sql.y:6429 { - yyLOCAL = QueryExpansionOpt + yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL case 1274: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6435 + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL MatchExprOption +//line sql.y:6433 { - yyVAL.str = string(yyDollar[1].identifierCI.String()) + yyLOCAL = QueryExpansionOpt } + yyVAL.union = yyLOCAL case 1275: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:6439 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].identifierCI.String()) } case 1276: yyDollar = yyS[yypt-1 : yypt+1] @@ -18313,19 +18306,17 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1277: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL *ConvertType -//line sql.y:6449 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6447 { - yyLOCAL = nil + yyVAL.str = string(yyDollar[1].str) } - yyVAL.union = yyLOCAL case 1278: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6453 { - yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1279: @@ -18337,35 +18328,35 @@ yydefault: } yyVAL.union = yyLOCAL case 1280: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6463 +//line sql.y:6461 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL case 1281: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6467 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1282: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6471 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL case 1283: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6475 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1284: @@ -18373,37 +18364,37 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6479 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} - yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length - yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1285: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6485 +//line sql.y:6483 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length + yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL case 1286: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6489 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1287: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6493 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1288: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6497 { @@ -18415,19 +18406,19 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6501 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1290: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6505 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1291: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6509 { @@ -18439,15 +18430,15 @@ yydefault: var yyLOCAL *ConvertType //line sql.y:6513 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1293: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType //line sql.y:6517 { - yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL case 1294: @@ -18459,140 +18450,148 @@ yydefault: } yyVAL.union = yyLOCAL case 1295: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL *ConvertType +//line sql.y:6525 + { + yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} + } + yyVAL.union = yyLOCAL + case 1296: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:6527 +//line sql.y:6531 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1296: + case 1297: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:6531 +//line sql.y:6535 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1297: + case 1298: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6536 +//line sql.y:6540 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1298: + case 1299: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6540 +//line sql.y:6544 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1299: + case 1300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6545 +//line sql.y:6549 { yyVAL.str = string("") } - case 1300: + case 1301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6549 +//line sql.y:6553 { yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str) } - case 1301: + case 1302: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:6555 +//line sql.y:6559 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1302: + case 1303: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6559 +//line sql.y:6563 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1303: + case 1304: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:6565 +//line sql.y:6569 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1304: + case 1305: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6570 +//line sql.y:6574 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1305: + case 1306: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6574 +//line sql.y:6578 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1306: + case 1307: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6580 +//line sql.y:6584 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1307: + case 1308: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6584 +//line sql.y:6588 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1308: + case 1309: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:6588 +//line sql.y:6592 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1309: + case 1310: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:6592 +//line sql.y:6596 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1310: + case 1311: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6598 +//line sql.y:6602 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1311: + case 1312: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6602 +//line sql.y:6606 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1312: + case 1313: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6608 +//line sql.y:6612 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -18602,219 +18601,211 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1313: + case 1314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6617 +//line sql.y:6621 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1314: + case 1315: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6621 +//line sql.y:6625 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1315: + case 1316: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:6627 +//line sql.y:6631 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1316: + case 1317: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:6631 +//line sql.y:6635 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1317: + case 1318: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6636 +//line sql.y:6640 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1318: + case 1319: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6640 +//line sql.y:6644 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1319: + case 1320: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:6646 +//line sql.y:6650 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1320: + case 1321: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6652 +//line sql.y:6656 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1321: + case 1322: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6656 +//line sql.y:6660 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1322: + case 1323: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6661 +//line sql.y:6665 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1323: + case 1324: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6665 +//line sql.y:6669 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1324: + case 1325: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6670 +//line sql.y:6674 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1325: + case 1326: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6674 +//line sql.y:6678 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1326: + case 1327: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6680 +//line sql.y:6684 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1327: + case 1328: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6686 +//line sql.y:6690 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1328: + case 1329: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6690 +//line sql.y:6694 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1329: + case 1330: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:6696 +//line sql.y:6700 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1330: + case 1331: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6701 +//line sql.y:6705 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1331: + case 1332: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6705 +//line sql.y:6709 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1332: + case 1333: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6709 +//line sql.y:6713 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1333: + case 1334: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:6714 +//line sql.y:6718 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1334: + case 1335: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:6718 +//line sql.y:6722 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1335: + case 1336: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:6724 +//line sql.y:6728 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1336: + case 1337: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6728 +//line sql.y:6732 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1337: + case 1338: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6732 +//line sql.y:6736 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1338: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL []AlterOption -//line sql.y:6737 - { - yyLOCAL = nil - } - yyVAL.union = yyLOCAL case 1339: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption //line sql.y:6741 { - yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} + yyLOCAL = nil } yyVAL.union = yyLOCAL case 1340: @@ -18826,11 +18817,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1341: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption //line sql.y:6749 { - yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} + yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL case 1342: @@ -18842,11 +18833,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1343: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL AlterOption -//line sql.y:6760 + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL []AlterOption +//line sql.y:6757 { - yyLOCAL = &LockOption{Type: DefaultType} + yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL case 1344: @@ -18854,7 +18845,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6764 { - yyLOCAL = &LockOption{Type: NoneType} + yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL case 1345: @@ -18862,7 +18853,7 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6768 { - yyLOCAL = &LockOption{Type: SharedType} + yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL case 1346: @@ -18870,15 +18861,15 @@ yydefault: var yyLOCAL AlterOption //line sql.y:6772 { - yyLOCAL = &LockOption{Type: ExclusiveType} + yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL case 1347: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6778 +//line sql.y:6776 { - yyLOCAL = AlgorithmValue(yyDollar[3].str) + yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL case 1348: @@ -18906,16 +18897,18 @@ yydefault: } yyVAL.union = yyLOCAL case 1351: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6795 + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL AlterOption +//line sql.y:6794 { - yyVAL.str = "" + yyLOCAL = AlgorithmValue(yyDollar[3].str) } + yyVAL.union = yyLOCAL case 1352: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6799 { - yyVAL.str = string(yyDollar[3].str) + yyVAL.str = "" } case 1353: yyDollar = yyS[yypt-3 : yypt+1] @@ -18930,22 +18923,22 @@ yydefault: yyVAL.str = string(yyDollar[3].str) } case 1355: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6812 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:6811 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[3].str) } case 1356: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6816 { - yyVAL.str = yyDollar[3].str + yyVAL.str = "" } case 1357: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6822 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:6820 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = yyDollar[3].str } case 1358: yyDollar = yyS[yypt-1 : yypt+1] @@ -18954,28 +18947,28 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1359: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6831 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6830 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].str) } case 1360: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6835 { - yyVAL.str = yyDollar[2].str + yyVAL.str = "" } case 1361: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6840 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:6839 { - yyVAL.str = "cascaded" + yyVAL.str = yyDollar[2].str } case 1362: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:6844 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = "cascaded" } case 1363: yyDollar = yyS[yypt-1 : yypt+1] @@ -18984,45 +18977,51 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 1364: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:6852 + { + yyVAL.str = string(yyDollar[1].str) + } + case 1365: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:6853 +//line sql.y:6857 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1365: + case 1366: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6857 +//line sql.y:6861 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1366: + case 1367: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:6863 +//line sql.y:6867 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1367: + case 1368: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6869 +//line sql.y:6873 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1368: + case 1369: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:6875 +//line sql.y:6879 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -19030,369 +19029,369 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1369: + case 1370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6884 +//line sql.y:6888 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1370: + case 1371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6888 +//line sql.y:6892 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1371: + case 1372: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6893 +//line sql.y:6897 { yyVAL.str = "" } - case 1372: + case 1373: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6897 +//line sql.y:6901 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1373: + case 1374: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:6903 +//line sql.y:6907 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1374: + case 1375: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:6907 +//line sql.y:6911 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1375: + case 1376: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6913 +//line sql.y:6917 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1376: + case 1377: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6917 +//line sql.y:6921 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1377: + case 1378: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6921 +//line sql.y:6925 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1378: + case 1379: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6926 +//line sql.y:6930 { yyVAL.str = "" } - case 1379: + case 1380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6930 +//line sql.y:6934 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1380: + case 1381: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6934 +//line sql.y:6938 { yyVAL.str = " format text" + yyDollar[3].str } - case 1381: + case 1382: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6939 +//line sql.y:6943 { yyVAL.str = "" } - case 1382: + case 1383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6943 +//line sql.y:6947 { yyVAL.str = " header" } - case 1383: + case 1384: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6948 +//line sql.y:6952 { yyVAL.str = "" } - case 1384: + case 1385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6952 +//line sql.y:6956 { yyVAL.str = " manifest on" } - case 1385: + case 1386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6956 +//line sql.y:6960 { yyVAL.str = " manifest off" } - case 1386: + case 1387: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6961 +//line sql.y:6965 { yyVAL.str = "" } - case 1387: + case 1388: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6965 +//line sql.y:6969 { yyVAL.str = " overwrite on" } - case 1388: + case 1389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6969 +//line sql.y:6973 { yyVAL.str = " overwrite off" } - case 1389: + case 1390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6975 +//line sql.y:6979 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1390: + case 1391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6980 +//line sql.y:6984 { yyVAL.str = "" } - case 1391: + case 1392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6984 +//line sql.y:6988 { yyVAL.str = " lines" + yyDollar[2].str } - case 1392: + case 1393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6990 +//line sql.y:6994 { yyVAL.str = yyDollar[1].str } - case 1393: + case 1394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6994 +//line sql.y:6998 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1394: + case 1395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7000 +//line sql.y:7004 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1395: + case 1396: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7004 +//line sql.y:7008 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1396: + case 1397: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7009 +//line sql.y:7013 { yyVAL.str = "" } - case 1397: + case 1398: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7013 +//line sql.y:7017 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1398: + case 1399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7019 +//line sql.y:7023 { yyVAL.str = yyDollar[1].str } - case 1399: + case 1400: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7023 +//line sql.y:7027 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1400: + case 1401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7029 +//line sql.y:7033 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1401: + case 1402: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7033 +//line sql.y:7037 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1402: + case 1403: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7037 +//line sql.y:7041 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1403: + case 1404: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7042 +//line sql.y:7046 { yyVAL.str = "" } - case 1404: + case 1405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7046 +//line sql.y:7050 { yyVAL.str = " optionally" } - case 1405: + case 1406: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7059 +//line sql.y:7063 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1406: + case 1407: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7063 +//line sql.y:7067 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1407: + case 1408: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7067 +//line sql.y:7071 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1408: + case 1409: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7071 +//line sql.y:7075 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1409: + case 1410: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7075 +//line sql.y:7079 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1410: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7081 +//line sql.y:7085 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1411: + case 1412: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7085 +//line sql.y:7089 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1412: + case 1413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7089 +//line sql.y:7093 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1413: + case 1414: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7093 +//line sql.y:7097 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1414: + case 1415: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7098 +//line sql.y:7102 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1415: + case 1416: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7102 +//line sql.y:7106 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1416: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7108 +//line sql.y:7112 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1417: + case 1418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7112 +//line sql.y:7116 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1418: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7118 +//line sql.y:7122 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1419: + case 1420: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7122 +//line sql.y:7126 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1420: + case 1421: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7128 +//line sql.y:7132 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1421: + case 1422: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7132 +//line sql.y:7136 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1422: + case 1423: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7137 +//line sql.y:7141 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -19401,283 +19400,277 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1423: + case 1424: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7147 +//line sql.y:7151 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1424: + case 1425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7151 +//line sql.y:7155 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1425: + case 1426: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7157 +//line sql.y:7161 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1426: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SetExprs -//line sql.y:7163 +//line sql.y:7167 { yyLOCAL = SetExprs{yyDollar[1].setExprUnion()} } yyVAL.union = yyLOCAL - case 1427: + case 1428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7167 +//line sql.y:7171 { yySLICE := (*SetExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].setExprUnion()) } - case 1428: + case 1429: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7173 +//line sql.y:7177 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("on")} } yyVAL.union = yyLOCAL - case 1429: + case 1430: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7177 +//line sql.y:7181 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("off")} } yyVAL.union = yyLOCAL - case 1430: + case 1431: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7181 +//line sql.y:7185 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1431: + case 1432: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7185 +//line sql.y:7189 { yyLOCAL = &SetExpr{Var: NewSetVariable(string(yyDollar[1].str), SessionScope), Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1432: + case 1433: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7191 +//line sql.y:7195 { yyLOCAL = NewSetVariable(string(yyDollar[1].str), SessionScope) } yyVAL.union = yyLOCAL - case 1433: + case 1434: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7195 +//line sql.y:7199 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1434: + case 1435: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Variable -//line sql.y:7199 +//line sql.y:7203 { yyLOCAL = NewSetVariable(string(yyDollar[2].str), yyDollar[1].scopeUnion()) } yyVAL.union = yyLOCAL - case 1436: + case 1437: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7206 +//line sql.y:7210 { yyVAL.str = "charset" } - case 1439: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7216 +//line sql.y:7220 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1440: + case 1441: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7220 +//line sql.y:7224 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1441: + case 1442: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7224 +//line sql.y:7228 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1444: + case 1445: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7233 +//line sql.y:7237 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1445: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7235 +//line sql.y:7239 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1446: + case 1447: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7238 +//line sql.y:7242 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1447: + case 1448: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7240 +//line sql.y:7244 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1448: + case 1449: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7243 +//line sql.y:7247 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1449: + case 1450: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7245 +//line sql.y:7249 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1450: + case 1451: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7248 +//line sql.y:7252 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1451: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7250 +//line sql.y:7254 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1452: + case 1453: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7253 +//line sql.y:7257 { yyVAL.empty = struct{}{} } - case 1453: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7255 +//line sql.y:7259 { yyVAL.empty = struct{}{} } - case 1454: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7257 +//line sql.y:7261 { yyVAL.empty = struct{}{} } - case 1455: + case 1456: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7261 +//line sql.y:7265 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1456: + case 1457: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7266 +//line sql.y:7270 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1457: + case 1458: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7270 +//line sql.y:7274 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1458: + case 1459: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7275 +//line sql.y:7279 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1459: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7277 +//line sql.y:7281 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1460: + case 1461: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7281 +//line sql.y:7285 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1461: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7287 - { - yyVAL.identifierCI = yyDollar[1].identifierCI - } case 1462: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:7291 { - yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) + yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1464: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7298 +//line sql.y:7295 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 1465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7304 +//line sql.y:7302 { - yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 1466: yyDollar = yyS[yypt-1 : yypt+1] @@ -19686,52 +19679,52 @@ yydefault: yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } case 1467: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:7312 + { + yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) + } + case 1468: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7314 +//line sql.y:7318 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1468: + case 1469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7318 +//line sql.y:7322 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1470: + case 1471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7325 +//line sql.y:7329 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 2014: + case 2015: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7895 +//line sql.y:7899 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 2015: + case 2016: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7904 +//line sql.y:7908 { decNesting(yylex) } - case 2016: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7909 - { - skipToEnd(yylex) - } case 2017: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7914 +//line sql.y:7913 { skipToEnd(yylex) } case 2018: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:7918 { skipToEnd(yylex) @@ -19742,6 +19735,12 @@ yydefault: { skipToEnd(yylex) } + case 2020: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:7926 + { + skipToEnd(yylex) + } } goto yystack /* stack new state and value */ } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index b1600544b13..b47316b5f17 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -591,7 +591,7 @@ func bindVariable(yylex yyLexer, bvar string) { %type underscore_charsets %type expire_opt %type ratio_opt -%type threshold_opt +%type threshold_opt %start any_command %% @@ -2852,11 +2852,15 @@ ratio_opt: threshold_opt: { - $$ = "" + $$ = nil } -| THRESHOLD STRING +| THRESHOLD INTEGRAL { - $$ = string($2) + $$ = NewIntLiteral($2) + } +| THRESHOLD DECIMAL + { + $$ = NewDecimalLiteral($2) } alter_commands_list: From b62bf4d78b89efaed4937a4b66180aa9b2827164 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 12 Oct 2022 14:00:02 +0300 Subject: [PATCH 15/78] experimental, accessing topo for config Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/query_executor.go | 12 +- .../tabletserver/repltracker/writer.go | 2 +- .../vttablet/tabletserver/throttle/schema.go | 154 ++++++++++++++++++ .../tabletserver/throttle/throttler.go | 84 +++++++--- proto/topodata.proto | 11 ++ 5 files changed, 236 insertions(+), 27 deletions(-) create mode 100644 go/vt/vttablet/tabletserver/throttle/schema.go diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 0eb2d350b01..db576d326c9 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -965,12 +965,20 @@ func (qre *QueryExecutor) execAlterThrottler() (*sqltypes.Result, error) { // return nil, err // } // alterThrottler, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) - _, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) + alterThrottler, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) if !ok { return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "Expecting ALTER VITESS_THROTTLER plan") } + ctx := context.Background() + var affected bool + switch alterThrottler.Type { + case sqlparser.AlterThrottlerEnableType: + affected = qre.tsv.lagThrottler.Enable(ctx) + case sqlparser.AlterThrottlerDisableType: + affected = qre.tsv.lagThrottler.Disable(ctx) + } result := &sqltypes.Result{} - if err := qre.tsv.lagThrottler.CheckIsReady(); err == nil { + if affected { result.RowsAffected = 1 } return result, nil diff --git a/go/vt/vttablet/tabletserver/repltracker/writer.go b/go/vt/vttablet/tabletserver/repltracker/writer.go index b0211b8dbe5..9675961acdf 100644 --- a/go/vt/vttablet/tabletserver/repltracker/writer.go +++ b/go/vt/vttablet/tabletserver/repltracker/writer.go @@ -86,7 +86,7 @@ func newHeartbeatWriter(env tabletenv.Env, alias *topodatapb.TabletAlias) *heart config := env.Config() // config.EnableLagThrottler is a feature flag for the throttler; if throttler runs, then heartbeat must also run - if config.ReplicationTracker.Mode != tabletenv.Heartbeat && !config.EnableLagThrottler { + if config.ReplicationTracker.Mode != tabletenv.Heartbeat && !config.EnableLagThrottler && config.ReplicationTracker.HeartbeatOnDemandSeconds.Get() == 0 { return &heartbeatWriter{} } heartbeatInterval := config.ReplicationTracker.HeartbeatIntervalSeconds.Get() diff --git a/go/vt/vttablet/tabletserver/throttle/schema.go b/go/vt/vttablet/tabletserver/throttle/schema.go new file mode 100644 index 00000000000..dd329e12bce --- /dev/null +++ b/go/vt/vttablet/tabletserver/throttle/schema.go @@ -0,0 +1,154 @@ +/* +Copyright 2022 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package throttle + +// import ( +// "context" +// "fmt" +// "math" + +// "vitess.io/vitess/go/sqltypes" +// "vitess.io/vitess/go/vt/sqlparser" +// ) + +// const ( +// // SchemaMigrationsTableName is used by VExec interceptor to call the correct handler +// sqlCreateSidecarDB = "create database if not exists _vt" +// sqlCreateThrottlerConfigTable = `CREATE TABLE IF NOT EXISTS _vt.throttler_config ( +// anchor int unsigned NOT NULL, +// last_updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, +// enable tinyint unsigned NOT NULL DEFAULT 0, +// threshold float NOT NULL DEFAULT 0, +// PRIMARY KEY (anchor) +// ) engine=InnoDB DEFAULT CHARSET=utf8mb4 +// ` +// sqlInsertConfigIgnore = `INSERT IGNORE INTO _vt.throttler_config ( +// anchor, +// last_updated, +// enable, +// threshold +// ) VALUES ( +// 1, +// NOW(), +// %a, +// %a +// ) +// ` +// sqlReadConfig = `SELECT enable, threshold FROM _vt.throttler_config WHERE anchor=1` +// sqlUpdateEnabled = `UPDATE _vt.throttler_config SET enable=%a WHERE anchor=1` +// sqlUpdateThreshold = `UPDATE _vt.throttler_config SET threshold=%a WHERE anchor=1` +// sqlUpdateConfig = `INSERT INTO _vt.throttler_config ( +// anchor, +// last_updated, +// enable, +// threshold +// ) VALUES ( +// 1, +// NOW(), +// %a, +// %a +// ) +// ON DUPLICATE KEY UPDATE +// last_updated=VALUES(last_updated), +// enable=VALUES(enable), +// threshold=VALUES(threshold) +// ` +// ) + +// var ApplyDDL = []string{ +// sqlCreateSidecarDB, +// sqlCreateThrottlerConfigTable, +// } + +// func (throttler *Throttler) execQuery(ctx context.Context, query string) (result *sqltypes.Result, err error) { +// defer throttler.env.LogError() + +// conn, err := throttler.pool.Get(ctx, nil) +// if err != nil { +// return result, err +// } +// defer conn.Recycle() +// return conn.Exec(ctx, query, math.MaxInt32, true) +// } + +// func (throttler *Throttler) submitInitialConfig(ctx context.Context, enabled bool, threshold float64) error { +// query, err := sqlparser.ParseAndBind(sqlInsertConfigIgnore, +// sqltypes.BoolBindVariable(enabled), +// sqltypes.Float64BindVariable(threshold), +// ) +// fmt.Printf("=========== ZZZ ParseAndBind: err=%v\n", err) +// if err != nil { +// return err +// } +// fmt.Printf("=========== ZZZ submitting: %v\n", query) +// _, err = throttler.execQuery(ctx, query) +// fmt.Printf("=========== ZZZ submitted: err=%v\n", err) +// return err +// } + +// func (throttler *Throttler) updateConfig(ctx context.Context, enabled bool, threshold float64) error { +// query, err := sqlparser.ParseAndBind(sqlUpdateConfig, +// sqltypes.BoolBindVariable(enabled), +// sqltypes.Float64BindVariable(threshold), +// ) +// fmt.Printf("=========== ZZZ ParseAndBind: err=%v\n", err) +// if err != nil { +// return err +// } +// fmt.Printf("=========== ZZZ submitting: %v\n", query) +// _, err = throttler.execQuery(ctx, query) +// fmt.Printf("=========== ZZZ submitted: err=%v\n", err) +// return err +// } + +// func (throttler *Throttler) updateEnabled(ctx context.Context, enabled bool) error { +// query, err := sqlparser.ParseAndBind(sqlUpdateEnabled, +// sqltypes.BoolBindVariable(enabled), +// ) +// if err != nil { +// return err +// } +// _, err = throttler.execQuery(ctx, query) +// return err +// } + +// func (throttler *Throttler) updateThreshold(ctx context.Context, threshold float64) error { +// query, err := sqlparser.ParseAndBind(sqlUpdateThreshold, +// sqltypes.Float64BindVariable(threshold), +// ) +// if err != nil { +// return err +// } +// _, err = throttler.execQuery(ctx, query) +// return err +// } + +// func (throttler *Throttler) readConfig(ctx context.Context) (*ThrottlerConfig, error) { +// rs, err := throttler.execQuery(ctx, sqlReadConfig) +// if err != nil { +// return nil, err +// } +// row := rs.Named().Row() +// if row == nil { +// return nil, nil +// } +// config := &ThrottlerConfig{ +// enabled: row.AsBool("enable", false), +// threshold: row.AsFloat64("threshold", 0), +// } +// return config, nil +// } diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 80547dda5de..9e4c78149c5 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -102,6 +102,11 @@ func init() { rand.Seed(time.Now().UnixNano()) } +type ThrottlerConfig struct { + enabled bool + // threshold float64 // TODO(shlomi) +} + // Throttler is the main entity in the throttling mechanism. This service runs, probes, collects data, // aggregates, reads inventory, provides information, etc. type Throttler struct { @@ -109,7 +114,7 @@ type Throttler struct { shard string check *ThrottlerCheck - isEnabled bool + isEnabled int64 isLeader int64 isOpen int64 @@ -125,6 +130,8 @@ type Throttler struct { mysqlInventoryChan chan *mysql.Inventory mysqlClusterProbesChan chan *mysql.ClusterProbes + // applyConfig *ThrottlerConfig // TODO(shlomi) + mysqlInventory *mysql.Inventory metricsQuery string @@ -191,10 +198,8 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat. throttler.httpClient = base.SetupHTTPClient(2 * mysqlCollectInterval) throttler.initThrottleTabletTypes() - throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) throttler.check = NewThrottlerCheck(throttler) - // TODO(shlomi): Read from database throttler.metricsQuery = replicationLagQuery throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) @@ -265,24 +270,36 @@ func (throttler *Throttler) initConfig() { } } +func (throttler *Throttler) readConfig(ctx context.Context) error { + srvKeyspace, err := throttler.ts.GetSrvKeyspace(ctx, topo.GlobalCell, throttler.keyspace) + if err != nil { + return err + } + cfg := &srvKeyspace.ThrottlerConfig + fmt.Printf("============ ZZZ cfg=%v\n", cfg) + return nil +} + func (throttler *Throttler) IsEnabled() bool { - throttler.enableMutex.Lock() - defer throttler.enableMutex.Unlock() - return throttler.isEnabled + return atomic.LoadInt64(&throttler.isEnabled) > 0 } -func (throttler *Throttler) enable(ctx context.Context) error { +func (throttler *Throttler) Enable(ctx context.Context) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() - if throttler.isEnabled { - return nil + if throttler.isEnabled > 0 { + return false } - throttler.isEnabled = true + atomic.StoreInt64(&throttler.isEnabled, 1) // TODO(shlomi): Read from database + if err := throttler.readConfig(ctx); err != nil { + fmt.Printf("======== ZZZ err: %v\n", err) + } throttler.metricsQuery = replicationLagQuery throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) + // _ = throttler.updateConfig(ctx, true, throttler.MetricsThreshold.Get()) // TODO(shlomi) ctx, throttler.cancelEnableContext = context.WithCancel(ctx) throttler.check.SelfChecks(ctx) @@ -291,32 +308,49 @@ func (throttler *Throttler) enable(ctx context.Context) error { // Make a one-time request for a lease of heartbeats go throttler.heartbeatWriter.RequestHeartbeats() - return nil + return true } -func (throttler *Throttler) maybeEnable(ctx context.Context) { - // TODO(shlomi): read from database - if throttler.env.Config().EnableLagThrottler { - throttler.enable(ctx) +func (throttler *Throttler) maybeEnable(ctx context.Context) error { + if err := throttler.readConfig(ctx); err != nil { + fmt.Printf("======== ZZZ err: %v\n", err) } + // throttlerConfig, err := throttler.readConfig(ctx) + // if err != nil { + // return err + // } + var throttlerConfig *ThrottlerConfig + enable := false + switch throttlerConfig { + case nil: + enable = throttler.env.Config().EnableLagThrottler + default: + enable = throttlerConfig.enabled + } + if enable { + throttler.Enable(ctx) + } + return nil } -func (throttler *Throttler) disable() { +func (throttler *Throttler) Disable(ctx context.Context) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() - if !throttler.isEnabled { - return + if throttler.isEnabled == 0 { + return false } - throttler.isEnabled = false + // _ = throttler.updateConfig(ctx, false, throttler.MetricsThreshold.Get()) // TODO(shlomi) + atomic.StoreInt64(&throttler.isEnabled, 0) - throttler.throttledApps.Flush() throttler.aggregatedMetrics.Flush() throttler.recentApps.Flush() throttler.nonLowPriorityAppRequestsThrottled.Flush() throttler.nonLowPriorityAppRequestsThrottled.Flush() + // we do not flush throttler.throttledApps because this is data submitted by the user; the user expects the data to survive a disable+enable throttler.cancelEnableContext() + return true } // Open opens database pool and initializes the schema @@ -327,11 +361,12 @@ func (throttler *Throttler) Open() error { // already open return nil } - + ctx := context.Background() throttler.pool.Open(throttler.env.Config().DB.AppWithDB(), throttler.env.Config().DB.DbaWithDB(), throttler.env.Config().DB.AppDebugWithDB()) atomic.StoreInt64(&throttler.isOpen, 1) - throttler.maybeEnable(context.Background()) + throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) + throttler.maybeEnable(ctx) return nil } @@ -345,7 +380,8 @@ func (throttler *Throttler) Close() { log.Infof("Throttler: throttler is not open") return } - throttler.disable() + ctx := context.Background() + throttler.Disable(ctx) atomic.StoreInt64(&throttler.isLeader, 0) log.Infof("Throttler: closing pool") @@ -861,7 +897,7 @@ func (throttler *Throttler) AppRequestMetricResult(ctx context.Context, appName // checkStore checks the aggregated value of given MySQL store func (throttler *Throttler) checkStore(ctx context.Context, appName string, storeName string, remoteAddr string, flags *CheckFlags) (checkResult *CheckResult) { - if !throttler.env.Config().EnableLagThrottler { + if !throttler.IsEnabled() { return okMetricCheckResult } return throttler.check.Check(ctx, appName, "mysql", storeName, remoteAddr, flags) diff --git a/proto/topodata.proto b/proto/topodata.proto index 622b383ba92..991de5608c8 100644 --- a/proto/topodata.proto +++ b/proto/topodata.proto @@ -395,6 +395,17 @@ message SrvKeyspace { // OBSOLETE int32 split_shard_count = 5; reserved 5; + + message ThrottlerConfig { + // Enabled indicates that the throttler is actually checking state for requests. When disabled, it automatically returns 200 OK for all checks + bool enabled = 1; + + // DefaultCheckThreshold is the threshold for the default check - heartbeat lag + double default_check_threshold = 2; + } + + // ThrottlerConfig has the configuration for the tablet server's lag throttler, and applies to the entire keyspace, across all shards and tablets + ThrottlerConfig throttler_config = 6; } // CellInfo contains information about a cell. CellInfo objects are From 907cd9b6274c92acbcbcf97893d0213e2be8ed14 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 12 Oct 2022 14:01:52 +0300 Subject: [PATCH 16/78] make proto Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/proto/topodata/topodata.pb.go | 260 +++++++++++++------- go/vt/proto/topodata/topodata_vtproto.pb.go | 201 +++++++++++++++ 2 files changed, 377 insertions(+), 84 deletions(-) diff --git a/go/vt/proto/topodata/topodata.pb.go b/go/vt/proto/topodata/topodata.pb.go index a9797c58282..81125dbfeab 100644 --- a/go/vt/proto/topodata/topodata.pb.go +++ b/go/vt/proto/topodata/topodata.pb.go @@ -995,6 +995,8 @@ type SrvKeyspace struct { // The partitions this keyspace is serving, per tablet type. Partitions []*SrvKeyspace_KeyspacePartition `protobuf:"bytes,1,rep,name=partitions,proto3" json:"partitions,omitempty"` ServedFrom []*SrvKeyspace_ServedFrom `protobuf:"bytes,4,rep,name=served_from,json=servedFrom,proto3" json:"served_from,omitempty"` + // ThrottlerConfig has the configuration for the tablet server's lag throttler, and applies to the entire keyspace, across all shards and tablets + ThrottlerConfig *SrvKeyspace_ThrottlerConfig `protobuf:"bytes,6,opt,name=throttler_config,json=throttlerConfig,proto3" json:"throttler_config,omitempty"` } func (x *SrvKeyspace) Reset() { @@ -1043,6 +1045,13 @@ func (x *SrvKeyspace) GetServedFrom() []*SrvKeyspace_ServedFrom { return nil } +func (x *SrvKeyspace) GetThrottlerConfig() *SrvKeyspace_ThrottlerConfig { + if x != nil { + return x.ThrottlerConfig + } + return nil +} + // CellInfo contains information about a cell. CellInfo objects are // stored in the global topology server, and describe how to reach // local topology servers. @@ -1717,6 +1726,63 @@ func (x *SrvKeyspace_ServedFrom) GetKeyspace() string { return "" } +type SrvKeyspace_ThrottlerConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Enabled indicates that the throttler is actually checking state for requests. When disabled, it automatically returns 200 OK for all checks + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // DefaultCheckThreshold is the threshold for the default check - heartbeat lag + DefaultCheckThreshold float64 `protobuf:"fixed64,2,opt,name=default_check_threshold,json=defaultCheckThreshold,proto3" json:"default_check_threshold,omitempty"` +} + +func (x *SrvKeyspace_ThrottlerConfig) Reset() { + *x = SrvKeyspace_ThrottlerConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_topodata_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SrvKeyspace_ThrottlerConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SrvKeyspace_ThrottlerConfig) ProtoMessage() {} + +func (x *SrvKeyspace_ThrottlerConfig) ProtoReflect() protoreflect.Message { + mi := &file_topodata_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SrvKeyspace_ThrottlerConfig.ProtoReflect.Descriptor instead. +func (*SrvKeyspace_ThrottlerConfig) Descriptor() ([]byte, []int) { + return file_topodata_proto_rawDescGZIP(), []int{9, 2} +} + +func (x *SrvKeyspace_ThrottlerConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *SrvKeyspace_ThrottlerConfig) GetDefaultCheckThreshold() float64 { + if x != nil { + return x.DefaultCheckThreshold + } + return 0 +} + var File_topodata_proto protoreflect.FileDescriptor var file_topodata_proto_rawDesc = []byte{ @@ -1880,7 +1946,7 @@ var file_topodata_proto_rawDesc = []byte{ 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xf0, 0x03, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa7, 0x05, 0x0a, 0x0b, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, @@ -1890,68 +1956,80 @@ var file_topodata_proto_rawDesc = []byte{ 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x0a, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x1a, 0xe1, 0x01, 0x0a, 0x11, 0x4b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x35, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x15, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x6f, 0x70, - 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x13, 0x73, 0x68, 0x61, 0x72, 0x64, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x1a, 0x5f, 0x0a, - 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, 0x0a, 0x0b, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4a, 0x04, - 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, - 0x22, 0x4b, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x22, 0x0a, - 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, - 0x73, 0x22, 0x55, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x4e, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x74, 0x6f, - 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5a, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0e, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2a, 0x28, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, - 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x01, 0x2a, 0x9d, - 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, - 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, - 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, - 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x45, - 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, - 0x41, 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x06, - 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, - 0x07, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x38, - 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x5a, 0x25, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, - 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x50, 0x0a, 0x10, 0x74, 0x68, 0x72, + 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74, + 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x74, 0x68, 0x72, 0x6f, + 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xe1, 0x01, 0x0a, 0x11, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x35, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x50, 0x0a, + 0x15, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x13, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x1a, + 0x5f, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, 0x0a, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x1a, 0x63, 0x0a, 0x0f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, + 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x4b, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x4a, 0x04, + 0x08, 0x03, 0x10, 0x04, 0x22, 0x22, 0x0a, 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x55, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x6f, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, + 0x4e, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, + 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x6f, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x5a, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x69, + 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2a, 0x28, 0x0a, 0x0c, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, + 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, + 0x48, 0x4f, 0x54, 0x10, 0x01, 0x2a, 0x9d, 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x44, 0x4f, 0x4e, 0x4c, + 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x12, 0x09, + 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x45, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, + 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x4f, + 0x52, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, + 0x08, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x38, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x76, 0x69, 0x74, 0x65, + 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x25, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, + 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1967,7 +2045,7 @@ func file_topodata_proto_rawDescGZIP() []byte { } var file_topodata_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_topodata_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_topodata_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_topodata_proto_goTypes = []interface{}{ (KeyspaceType)(0), // 0: topodata.KeyspaceType (TabletType)(0), // 1: topodata.TabletType @@ -1995,7 +2073,8 @@ var file_topodata_proto_goTypes = []interface{}{ (*ShardReplication_Node)(nil), // 23: topodata.ShardReplication.Node (*SrvKeyspace_KeyspacePartition)(nil), // 24: topodata.SrvKeyspace.KeyspacePartition (*SrvKeyspace_ServedFrom)(nil), // 25: topodata.SrvKeyspace.ServedFrom - (*vttime.Time)(nil), // 26: vttime.Time + (*SrvKeyspace_ThrottlerConfig)(nil), // 26: topodata.SrvKeyspace.ThrottlerConfig + (*vttime.Time)(nil), // 27: vttime.Time } var file_topodata_proto_depIdxs = []int32{ 4, // 0: topodata.Tablet.alias:type_name -> topodata.TabletAlias @@ -2003,15 +2082,15 @@ var file_topodata_proto_depIdxs = []int32{ 3, // 2: topodata.Tablet.key_range:type_name -> topodata.KeyRange 1, // 3: topodata.Tablet.type:type_name -> topodata.TabletType 19, // 4: topodata.Tablet.tags:type_name -> topodata.Tablet.TagsEntry - 26, // 5: topodata.Tablet.primary_term_start_time:type_name -> vttime.Time + 27, // 5: topodata.Tablet.primary_term_start_time:type_name -> vttime.Time 4, // 6: topodata.Shard.primary_alias:type_name -> topodata.TabletAlias - 26, // 7: topodata.Shard.primary_term_start_time:type_name -> vttime.Time + 27, // 7: topodata.Shard.primary_term_start_time:type_name -> vttime.Time 3, // 8: topodata.Shard.key_range:type_name -> topodata.KeyRange 20, // 9: topodata.Shard.source_shards:type_name -> topodata.Shard.SourceShard 21, // 10: topodata.Shard.tablet_controls:type_name -> topodata.Shard.TabletControl 22, // 11: topodata.Keyspace.served_froms:type_name -> topodata.Keyspace.ServedFrom 0, // 12: topodata.Keyspace.keyspace_type:type_name -> topodata.KeyspaceType - 26, // 13: topodata.Keyspace.snapshot_time:type_name -> vttime.Time + 27, // 13: topodata.Keyspace.snapshot_time:type_name -> vttime.Time 23, // 14: topodata.ShardReplication.nodes:type_name -> topodata.ShardReplication.Node 2, // 15: topodata.ShardReplicationError.type:type_name -> topodata.ShardReplicationError.Type 4, // 16: topodata.ShardReplicationError.tablet_alias:type_name -> topodata.TabletAlias @@ -2019,21 +2098,22 @@ var file_topodata_proto_depIdxs = []int32{ 3, // 18: topodata.ShardTabletControl.key_range:type_name -> topodata.KeyRange 24, // 19: topodata.SrvKeyspace.partitions:type_name -> topodata.SrvKeyspace.KeyspacePartition 25, // 20: topodata.SrvKeyspace.served_from:type_name -> topodata.SrvKeyspace.ServedFrom - 15, // 21: topodata.ExternalVitessCluster.topo_config:type_name -> topodata.TopoConfig - 16, // 22: topodata.ExternalClusters.vitess_cluster:type_name -> topodata.ExternalVitessCluster - 3, // 23: topodata.Shard.SourceShard.key_range:type_name -> topodata.KeyRange - 1, // 24: topodata.Shard.TabletControl.tablet_type:type_name -> topodata.TabletType - 1, // 25: topodata.Keyspace.ServedFrom.tablet_type:type_name -> topodata.TabletType - 4, // 26: topodata.ShardReplication.Node.tablet_alias:type_name -> topodata.TabletAlias - 1, // 27: topodata.SrvKeyspace.KeyspacePartition.served_type:type_name -> topodata.TabletType - 10, // 28: topodata.SrvKeyspace.KeyspacePartition.shard_references:type_name -> topodata.ShardReference - 11, // 29: topodata.SrvKeyspace.KeyspacePartition.shard_tablet_controls:type_name -> topodata.ShardTabletControl - 1, // 30: topodata.SrvKeyspace.ServedFrom.tablet_type:type_name -> topodata.TabletType - 31, // [31:31] is the sub-list for method output_type - 31, // [31:31] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 26, // 21: topodata.SrvKeyspace.throttler_config:type_name -> topodata.SrvKeyspace.ThrottlerConfig + 15, // 22: topodata.ExternalVitessCluster.topo_config:type_name -> topodata.TopoConfig + 16, // 23: topodata.ExternalClusters.vitess_cluster:type_name -> topodata.ExternalVitessCluster + 3, // 24: topodata.Shard.SourceShard.key_range:type_name -> topodata.KeyRange + 1, // 25: topodata.Shard.TabletControl.tablet_type:type_name -> topodata.TabletType + 1, // 26: topodata.Keyspace.ServedFrom.tablet_type:type_name -> topodata.TabletType + 4, // 27: topodata.ShardReplication.Node.tablet_alias:type_name -> topodata.TabletAlias + 1, // 28: topodata.SrvKeyspace.KeyspacePartition.served_type:type_name -> topodata.TabletType + 10, // 29: topodata.SrvKeyspace.KeyspacePartition.shard_references:type_name -> topodata.ShardReference + 11, // 30: topodata.SrvKeyspace.KeyspacePartition.shard_tablet_controls:type_name -> topodata.ShardTabletControl + 1, // 31: topodata.SrvKeyspace.ServedFrom.tablet_type:type_name -> topodata.TabletType + 32, // [32:32] is the sub-list for method output_type + 32, // [32:32] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_topodata_proto_init() } @@ -2294,6 +2374,18 @@ func file_topodata_proto_init() { return nil } } + file_topodata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SrvKeyspace_ThrottlerConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2301,7 +2393,7 @@ func file_topodata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_topodata_proto_rawDesc, NumEnums: 3, - NumMessages: 23, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/go/vt/proto/topodata/topodata_vtproto.pb.go b/go/vt/proto/topodata/topodata_vtproto.pb.go index 4b989d5021b..ac68503b060 100644 --- a/go/vt/proto/topodata/topodata_vtproto.pb.go +++ b/go/vt/proto/topodata/topodata_vtproto.pb.go @@ -5,9 +5,11 @@ package topodata import ( + binary "encoding/binary" fmt "fmt" protoimpl "google.golang.org/protobuf/runtime/protoimpl" io "io" + math "math" bits "math/bits" vttime "vitess.io/vitess/go/vt/proto/vttime" ) @@ -984,6 +986,55 @@ func (m *SrvKeyspace_ServedFrom) MarshalToSizedBufferVT(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *SrvKeyspace_ThrottlerConfig) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SrvKeyspace_ThrottlerConfig) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *SrvKeyspace_ThrottlerConfig) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.DefaultCheckThreshold != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DefaultCheckThreshold)))) + i-- + dAtA[i] = 0x11 + } + if m.Enabled { + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *SrvKeyspace) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -1014,6 +1065,16 @@ func (m *SrvKeyspace) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.ThrottlerConfig != nil { + size, err := m.ThrottlerConfig.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x32 + } if len(m.ServedFrom) > 0 { for iNdEx := len(m.ServedFrom) - 1; iNdEx >= 0; iNdEx-- { size, err := m.ServedFrom[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) @@ -1697,6 +1758,24 @@ func (m *SrvKeyspace_ServedFrom) SizeVT() (n int) { return n } +func (m *SrvKeyspace_ThrottlerConfig) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Enabled { + n += 2 + } + if m.DefaultCheckThreshold != 0 { + n += 9 + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + func (m *SrvKeyspace) SizeVT() (n int) { if m == nil { return 0 @@ -1715,6 +1794,10 @@ func (m *SrvKeyspace) SizeVT() (n int) { n += 1 + l + sov(uint64(l)) } } + if m.ThrottlerConfig != nil { + l = m.ThrottlerConfig.SizeVT() + n += 1 + l + sov(uint64(l)) + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -4409,6 +4492,88 @@ func (m *SrvKeyspace_ServedFrom) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *SrvKeyspace_ThrottlerConfig) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SrvKeyspace_ThrottlerConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SrvKeyspace_ThrottlerConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultCheckThreshold", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.DefaultCheckThreshold = float64(math.Float64frombits(v)) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SrvKeyspace) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4506,6 +4671,42 @@ func (m *SrvKeyspace) UnmarshalVT(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ThrottlerConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ThrottlerConfig == nil { + m.ThrottlerConfig = &SrvKeyspace_ThrottlerConfig{} + } + if err := m.ThrottlerConfig.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) From f4fe865009859f621d4a08111462dfeb090f5f41 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 20 Oct 2022 12:07:26 +0300 Subject: [PATCH 17/78] store throttler config is SrvKeyspace in all cells Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/topo/srv_keyspace.go | 43 ++++++++++++++ go/vt/vtctl/vtctl.go | 56 +++++++++++++++++++ go/vt/vttablet/tabletserver/tabletserver.go | 2 +- .../tabletserver/throttle/throttler.go | 41 ++++++++------ 4 files changed, 124 insertions(+), 18 deletions(-) diff --git a/go/vt/topo/srv_keyspace.go b/go/vt/topo/srv_keyspace.go index ee1db1100e1..5a0e8c1f4c6 100644 --- a/go/vt/topo/srv_keyspace.go +++ b/go/vt/topo/srv_keyspace.go @@ -396,6 +396,49 @@ func (ts *Server) DeleteSrvKeyspacePartitions(ctx context.Context, keyspace stri return nil } +// UpdateSrvKeyspaceThrottlerConfig updates existing throttler configuration +func (ts *Server) UpdateSrvKeyspaceThrottlerConfig(ctx context.Context, keyspace string, cells []string, update func(throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig) (updatedCells []string, err error) { + if err = CheckKeyspaceLocked(ctx, keyspace); err != nil { + return cells, err + } + + // The caller intents to update all cells in this case + if len(cells) == 0 { + cells, err = ts.GetCellInfoNames(ctx) + if err != nil { + return cells, err + } + } + + wg := sync.WaitGroup{} + rec := concurrency.AllErrorRecorder{} + for _, cell := range cells { + wg.Add(1) + go func(cell string) { + defer wg.Done() + srvKeyspace, err := ts.GetSrvKeyspace(ctx, cell, keyspace) + switch { + case err == nil: + srvKeyspace.ThrottlerConfig = update(srvKeyspace.ThrottlerConfig) + if err := ts.UpdateSrvKeyspace(ctx, cell, keyspace, srvKeyspace); err != nil { + rec.RecordError(err) + return + } + case IsErrType(err, NoNode): + // NOOP + default: + rec.RecordError(err) + return + } + }(cell) + } + wg.Wait() + if rec.HasErrors() { + return cells, NewError(PartialResult, rec.Error().Error()) + } + return cells, nil +} + // UpdateDisableQueryService will make sure the disableQueryService is // set appropriately in tablet controls in srvKeyspace. func (ts *Server) UpdateDisableQueryService(ctx context.Context, keyspace string, shards []*ShardInfo, tabletType topodatapb.TabletType, cells []string, disableQueryService bool) (err error) { diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 143740267a5..0ef52a58bcc 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -708,6 +708,12 @@ var commands = []commandGroup{ params: " ", help: "Outputs a JSON structure that contains information about the SrvKeyspace.", }, + { + name: "UpdateThrottlerConfig", + method: commandUpdateThrottlerConfig, + params: "[--enable] [--disable] [--default_threshold=] ", + help: "Update the table throttler configuration for all cells and tablets of a given keyspace", + }, { name: "GetSrvVSchema", method: commandGetSrvVSchema, @@ -3644,6 +3650,56 @@ func commandGetSrvKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags return printJSON(wr.Logger(), cellKs) } +func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) (err error) { + enable := subFlags.Bool("enable", false, "Enable the throttler") + disable := subFlags.Bool("disable", false, "Disable the throttler") + defaultThreshold := subFlags.Float64("default_threshold", 0, "threshold for the default throttler check") + + if err := subFlags.Parse(args); err != nil { + return err + } + if subFlags.NArg() != 1 { + return fmt.Errorf("the arguments are required for the SetThrottlerConfig command") + } + if *enable && *disable { + return fmt.Errorf("--enable and --disable are mutually exclusive") + } + + keyspace := subFlags.Arg(0) + + update := func(throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig { + if throttlerConfig == nil { + throttlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} + } + if throttlerConfig.DefaultCheckThreshold == 0 { + throttlerConfig.DefaultCheckThreshold = 1.0 + } + if *defaultThreshold > 0 { + throttlerConfig.DefaultCheckThreshold = *defaultThreshold + } + if *enable { + throttlerConfig.Enabled = true + } + if *disable { + throttlerConfig.Enabled = false + } + return throttlerConfig + } + + ctx, unlock, lockErr := wr.TopoServer().LockKeyspace(ctx, keyspace, "UpdateThrottlerConfig") + if lockErr != nil { + return lockErr + } + defer unlock(&err) + + updatedCells, err := wr.TopoServer().UpdateSrvKeyspaceThrottlerConfig(ctx, keyspace, []string{}, update) + if err != nil { + return err + } + + return printJSON(wr.Logger(), updatedCells) +} + func commandGetSrvVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) error { if err := subFlags.Parse(args); err != nil { return err diff --git a/go/vt/vttablet/tabletserver/tabletserver.go b/go/vt/vttablet/tabletserver/tabletserver.go index bf1bf878d0a..e3149191906 100644 --- a/go/vt/vttablet/tabletserver/tabletserver.go +++ b/go/vt/vttablet/tabletserver/tabletserver.go @@ -174,7 +174,7 @@ func NewTabletServer(name string, config *tabletenv.TabletConfig, topoServer *to tsv.hs = newHealthStreamer(tsv, alias) tsv.se = schema.NewEngine(tsv) tsv.rt = repltracker.NewReplTracker(tsv, alias) - tsv.lagThrottler = throttle.NewThrottler(tsv, topoServer, tsv.rt.HeartbeatWriter(), tabletTypeFunc) + tsv.lagThrottler = throttle.NewThrottler(tsv, topoServer, alias.Cell, tsv.rt.HeartbeatWriter(), tabletTypeFunc) tsv.vstreamer = vstreamer.NewEngine(tsv, srvTopoServer, tsv.se, tsv.lagThrottler, alias.Cell) tsv.tracker = schema.NewTracker(tsv, tsv.vstreamer, tsv.se) tsv.watcher = NewBinlogWatcher(tsv, tsv.vstreamer, tsv.config) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 9e4c78149c5..160102a2d29 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -103,8 +103,8 @@ func init() { } type ThrottlerConfig struct { - enabled bool - // threshold float64 // TODO(shlomi) + enabled bool + threshold float64 } // Throttler is the main entity in the throttling mechanism. This service runs, probes, collects data, @@ -112,6 +112,7 @@ type ThrottlerConfig struct { type Throttler struct { keyspace string shard string + cell string check *ThrottlerCheck isEnabled int64 @@ -130,7 +131,7 @@ type Throttler struct { mysqlInventoryChan chan *mysql.Inventory mysqlClusterProbesChan chan *mysql.ClusterProbes - // applyConfig *ThrottlerConfig // TODO(shlomi) + applyConfig *ThrottlerConfig mysqlInventory *mysql.Inventory @@ -169,11 +170,12 @@ type ThrottlerStatus struct { } // NewThrottler creates a Throttler -func NewThrottler(env tabletenv.Env, ts *topo.Server, heartbeatWriter heartbeat.HeartbeatWriter, tabletTypeFunc func() topodatapb.TabletType) *Throttler { +func NewThrottler(env tabletenv.Env, ts *topo.Server, cell string, heartbeatWriter heartbeat.HeartbeatWriter, tabletTypeFunc func() topodatapb.TabletType) *Throttler { throttler := &Throttler{ isLeader: 0, isOpen: 0, + cell: cell, env: env, tabletTypeFunc: tabletTypeFunc, ts: ts, @@ -270,14 +272,21 @@ func (throttler *Throttler) initConfig() { } } -func (throttler *Throttler) readConfig(ctx context.Context) error { - srvKeyspace, err := throttler.ts.GetSrvKeyspace(ctx, topo.GlobalCell, throttler.keyspace) +func (throttler *Throttler) readConfig(ctx context.Context) (*ThrottlerConfig, error) { + srvKeyspace, err := throttler.ts.GetSrvKeyspace(ctx, throttler.cell, throttler.keyspace) if err != nil { - return err + return nil, err } - cfg := &srvKeyspace.ThrottlerConfig - fmt.Printf("============ ZZZ cfg=%v\n", cfg) - return nil + if cfg := srvKeyspace.ThrottlerConfig; cfg != nil { + return &ThrottlerConfig{ + enabled: cfg.GetEnabled(), + threshold: cfg.GetDefaultCheckThreshold(), + }, nil + } + return &ThrottlerConfig{ + enabled: throttler.env.Config().EnableLagThrottler, + threshold: throttleThreshold.Seconds(), + }, nil } func (throttler *Throttler) IsEnabled() bool { @@ -293,10 +302,10 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { } atomic.StoreInt64(&throttler.isEnabled, 1) - // TODO(shlomi): Read from database - if err := throttler.readConfig(ctx); err != nil { - fmt.Printf("======== ZZZ err: %v\n", err) - } + // // TODO(shlomi): Read from database + // if err := throttler.readConfig(ctx); err != nil { + // fmt.Printf("======== ZZZ err: %v\n", err) + // } throttler.metricsQuery = replicationLagQuery throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) // _ = throttler.updateConfig(ctx, true, throttler.MetricsThreshold.Get()) // TODO(shlomi) @@ -312,9 +321,7 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { } func (throttler *Throttler) maybeEnable(ctx context.Context) error { - if err := throttler.readConfig(ctx); err != nil { - fmt.Printf("======== ZZZ err: %v\n", err) - } + // // TODO(shlomi): Read from database // throttlerConfig, err := throttler.readConfig(ctx) // if err != nil { // return err From da4158342a6ea9101e4e24c7bc9799b8f32079f0 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 20 Oct 2022 17:12:37 +0300 Subject: [PATCH 18/78] apply throttler config Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/proto/topodata/topodata.pb.go | 127 +++++++------ go/vt/proto/topodata/topodata_vtproto.pb.go | 86 ++++++++- go/vt/vtctl/vtctl.go | 26 ++- go/vt/vttablet/tabletserver/tabletserver.go | 2 +- .../tabletserver/throttle/throttler.go | 177 +++++++++++------- proto/topodata.proto | 10 +- 6 files changed, 295 insertions(+), 133 deletions(-) diff --git a/go/vt/proto/topodata/topodata.pb.go b/go/vt/proto/topodata/topodata.pb.go index 81125dbfeab..3e4662ac309 100644 --- a/go/vt/proto/topodata/topodata.pb.go +++ b/go/vt/proto/topodata/topodata.pb.go @@ -1733,8 +1733,12 @@ type SrvKeyspace_ThrottlerConfig struct { // Enabled indicates that the throttler is actually checking state for requests. When disabled, it automatically returns 200 OK for all checks Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - // DefaultCheckThreshold is the threshold for the default check - heartbeat lag - DefaultCheckThreshold float64 `protobuf:"fixed64,2,opt,name=default_check_threshold,json=defaultCheckThreshold,proto3" json:"default_check_threshold,omitempty"` + // Threshold is the threshold for either the default check (heartbeat lag) or custom check + Threshold float64 `protobuf:"fixed64,2,opt,name=threshold,proto3" json:"threshold,omitempty"` + // CustomQuery is an optional query that overrides the default check query + CustomQuery string `protobuf:"bytes,3,opt,name=custom_query,json=customQuery,proto3" json:"custom_query,omitempty"` + // CheckAsCheckSelf indicates whether a throttler /check request should behave like a /check-self + CheckAsCheckSelf bool `protobuf:"varint,4,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` } func (x *SrvKeyspace_ThrottlerConfig) Reset() { @@ -1776,13 +1780,27 @@ func (x *SrvKeyspace_ThrottlerConfig) GetEnabled() bool { return false } -func (x *SrvKeyspace_ThrottlerConfig) GetDefaultCheckThreshold() float64 { +func (x *SrvKeyspace_ThrottlerConfig) GetThreshold() float64 { if x != nil { - return x.DefaultCheckThreshold + return x.Threshold } return 0 } +func (x *SrvKeyspace_ThrottlerConfig) GetCustomQuery() string { + if x != nil { + return x.CustomQuery + } + return "" +} + +func (x *SrvKeyspace_ThrottlerConfig) GetCheckAsCheckSelf() bool { + if x != nil { + return x.CheckAsCheckSelf + } + return false +} + var File_topodata_proto protoreflect.FileDescriptor var file_topodata_proto_rawDesc = []byte{ @@ -1946,7 +1964,7 @@ var file_topodata_proto_rawDesc = []byte{ 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa7, 0x05, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xe0, 0x05, 0x0a, 0x0b, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, @@ -1982,54 +2000,57 @@ var file_topodata_proto_rawDesc = []byte{ 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x1a, 0x63, 0x0a, 0x0f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, - 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, - 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x4b, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x22, 0x22, 0x0a, 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x55, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x6f, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, - 0x4e, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, - 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x6f, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x5a, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, - 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x69, - 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2a, 0x28, 0x0a, 0x0c, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, - 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, - 0x48, 0x4f, 0x54, 0x10, 0x01, 0x2a, 0x9d, 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, - 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x44, 0x4f, 0x4e, 0x4c, - 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x12, 0x09, - 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x45, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, - 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x4f, - 0x52, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, - 0x08, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x38, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x76, 0x69, 0x74, 0x65, - 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x25, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x9b, 0x01, 0x0a, 0x0f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6c, 0x66, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, + 0x22, 0x4b, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x22, 0x0a, + 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x22, 0x55, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x4e, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x74, 0x6f, + 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5a, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0e, + 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2a, 0x28, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x01, 0x2a, 0x9d, + 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, + 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, + 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, + 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x45, + 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, + 0x41, 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x06, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, + 0x07, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x38, + 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x5a, 0x25, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/go/vt/proto/topodata/topodata_vtproto.pb.go b/go/vt/proto/topodata/topodata_vtproto.pb.go index ac68503b060..f51bd224ca0 100644 --- a/go/vt/proto/topodata/topodata_vtproto.pb.go +++ b/go/vt/proto/topodata/topodata_vtproto.pb.go @@ -1016,9 +1016,26 @@ func (m *SrvKeyspace_ThrottlerConfig) MarshalToSizedBufferVT(dAtA []byte) (int, i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } - if m.DefaultCheckThreshold != 0 { + if m.CheckAsCheckSelf { + i-- + if m.CheckAsCheckSelf { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.CustomQuery) > 0 { + i -= len(m.CustomQuery) + copy(dAtA[i:], m.CustomQuery) + i = encodeVarint(dAtA, i, uint64(len(m.CustomQuery))) + i-- + dAtA[i] = 0x1a + } + if m.Threshold != 0 { i -= 8 - binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DefaultCheckThreshold)))) + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Threshold)))) i-- dAtA[i] = 0x11 } @@ -1767,9 +1784,16 @@ func (m *SrvKeyspace_ThrottlerConfig) SizeVT() (n int) { if m.Enabled { n += 2 } - if m.DefaultCheckThreshold != 0 { + if m.Threshold != 0 { n += 9 } + l = len(m.CustomQuery) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.CheckAsCheckSelf { + n += 2 + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -4543,7 +4567,7 @@ func (m *SrvKeyspace_ThrottlerConfig) UnmarshalVT(dAtA []byte) error { m.Enabled = bool(v != 0) case 2: if wireType != 1 { - return fmt.Errorf("proto: wrong wireType = %d for field DefaultCheckThreshold", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Threshold", wireType) } var v uint64 if (iNdEx + 8) > l { @@ -4551,7 +4575,59 @@ func (m *SrvKeyspace_ThrottlerConfig) UnmarshalVT(dAtA []byte) error { } v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 - m.DefaultCheckThreshold = float64(math.Float64frombits(v)) + m.Threshold = float64(math.Float64frombits(v)) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomQuery", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomQuery = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckSelf", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CheckAsCheckSelf = bool(v != 0) default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 0ef52a58bcc..8975a841402 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -3651,9 +3651,13 @@ func commandGetSrvKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags } func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) (err error) { + noValueIndicator := "~" enable := subFlags.Bool("enable", false, "Enable the throttler") disable := subFlags.Bool("disable", false, "Disable the throttler") - defaultThreshold := subFlags.Float64("default_threshold", 0, "threshold for the default throttler check") + threshold := subFlags.Float64("threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") + customQuery := subFlags.String("custom_query", noValueIndicator, "custom throttler check query") + checkAsCheckSelf := subFlags.Bool("check_as_check_self", false, "/throttler/check requests behave as is /throttler/check-self was called") + checkAsCheckShard := subFlags.Bool("check_as_check_shard", false, "use standard behavior for /throttler/check requests") if err := subFlags.Parse(args); err != nil { return err @@ -3671,11 +3675,15 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su if throttlerConfig == nil { throttlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} } - if throttlerConfig.DefaultCheckThreshold == 0 { - throttlerConfig.DefaultCheckThreshold = 1.0 - } - if *defaultThreshold > 0 { - throttlerConfig.DefaultCheckThreshold = *defaultThreshold + if *customQuery != noValueIndicator { + // custom query provided + throttlerConfig.CustomQuery = *customQuery + throttlerConfig.Threshold = *threshold // allowed to be zero/negative because who knows what kind of custom query this is + } else { + // no custom query, throttler works by querying replication lag. We only allow positive values + if *threshold > 0 { + throttlerConfig.Threshold = *threshold + } } if *enable { throttlerConfig.Enabled = true @@ -3683,6 +3691,12 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su if *disable { throttlerConfig.Enabled = false } + if *checkAsCheckSelf { + throttlerConfig.CheckAsCheckSelf = true + } + if *checkAsCheckShard { + throttlerConfig.CheckAsCheckSelf = false + } return throttlerConfig } diff --git a/go/vt/vttablet/tabletserver/tabletserver.go b/go/vt/vttablet/tabletserver/tabletserver.go index e3149191906..6cf26962cc8 100644 --- a/go/vt/vttablet/tabletserver/tabletserver.go +++ b/go/vt/vttablet/tabletserver/tabletserver.go @@ -174,7 +174,7 @@ func NewTabletServer(name string, config *tabletenv.TabletConfig, topoServer *to tsv.hs = newHealthStreamer(tsv, alias) tsv.se = schema.NewEngine(tsv) tsv.rt = repltracker.NewReplTracker(tsv, alias) - tsv.lagThrottler = throttle.NewThrottler(tsv, topoServer, alias.Cell, tsv.rt.HeartbeatWriter(), tabletTypeFunc) + tsv.lagThrottler = throttle.NewThrottler(tsv, srvTopoServer, topoServer, alias.Cell, tsv.rt.HeartbeatWriter(), tabletTypeFunc) tsv.vstreamer = vstreamer.NewEngine(tsv, srvTopoServer, tsv.se, tsv.lagThrottler, alias.Cell) tsv.tracker = schema.NewTracker(tsv, tsv.vstreamer, tsv.se) tsv.watcher = NewBinlogWatcher(tsv, tsv.vstreamer, tsv.config) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 160102a2d29..2c6edfee0c0 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -30,6 +30,7 @@ import ( "vitess.io/vitess/go/vt/log" topodatapb "vitess.io/vitess/go/vt/proto/topodata" "vitess.io/vitess/go/vt/servenv" + "vitess.io/vitess/go/vt/srvtopo" "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/vttablet/tabletserver/connpool" "vitess.io/vitess/go/vt/vttablet/tabletserver/heartbeat" @@ -62,11 +63,12 @@ const ( var ( // flag vars - throttleThreshold = 1 * time.Second + throttleThreshold = 5 * time.Second throttleTabletTypes = "replica" throttleMetricQuery string throttleMetricThreshold = math.MaxFloat64 throttlerCheckAsCheckSelf = false + throttlerConfigViaTopo = false ) func init() { @@ -75,11 +77,13 @@ func init() { } func registerThrottlerFlags(fs *pflag.FlagSet) { - fs.DurationVar(&throttleThreshold, "throttle_threshold", throttleThreshold, "Replication lag threshold for default lag throttling") fs.StringVar(&throttleTabletTypes, "throttle_tablet_types", throttleTabletTypes, "Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included") + + fs.DurationVar(&throttleThreshold, "throttle_threshold", throttleThreshold, "Replication lag threshold for default lag throttling") fs.StringVar(&throttleMetricQuery, "throttle_metrics_query", throttleMetricQuery, "Override default heartbeat/lag metric. Use either `SELECT` (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively.") fs.Float64Var(&throttleMetricThreshold, "throttle_metrics_threshold", throttleMetricThreshold, "Override default throttle threshold, respective to -throttle_metrics_query") fs.BoolVar(&throttlerCheckAsCheckSelf, "throttle_check_as_check_self", throttlerCheckAsCheckSelf, "Should throttler/check return a throttler/check-self result (changes throttler behavior for writes)") + fs.BoolVar(&throttlerConfigViaTopo, "throttle_config_via_topo", throttlerConfigViaTopo, "When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self") } var ( @@ -102,11 +106,6 @@ func init() { rand.Seed(time.Now().UnixNano()) } -type ThrottlerConfig struct { - enabled bool - threshold float64 -} - // Throttler is the main entity in the throttling mechanism. This service runs, probes, collects data, // aggregates, reads inventory, provides information, etc. type Throttler struct { @@ -123,6 +122,7 @@ type Throttler struct { pool *connpool.Pool tabletTypeFunc func() topodatapb.TabletType ts *topo.Server + srvTopoServer srvtopo.Server heartbeatWriter heartbeat.HeartbeatWriter throttleTabletTypesMap map[topodatapb.TabletType]bool @@ -130,14 +130,12 @@ type Throttler struct { mysqlThrottleMetricChan chan *mysql.MySQLThrottleMetric mysqlInventoryChan chan *mysql.Inventory mysqlClusterProbesChan chan *mysql.ClusterProbes - - applyConfig *ThrottlerConfig + throttlerConfigChan chan *topodatapb.SrvKeyspace_ThrottlerConfig mysqlInventory *mysql.Inventory metricsQuery string MetricsThreshold sync2.AtomicFloat64 - metricsQueryType mysql.MetricsQueryType mysqlClusterThresholds *cache.Cache aggregatedMetrics *cache.Cache @@ -170,7 +168,7 @@ type ThrottlerStatus struct { } // NewThrottler creates a Throttler -func NewThrottler(env tabletenv.Env, ts *topo.Server, cell string, heartbeatWriter heartbeat.HeartbeatWriter, tabletTypeFunc func() topodatapb.TabletType) *Throttler { +func NewThrottler(env tabletenv.Env, srvTopoServer srvtopo.Server, ts *topo.Server, cell string, heartbeatWriter heartbeat.HeartbeatWriter, tabletTypeFunc func() topodatapb.TabletType) *Throttler { throttler := &Throttler{ isLeader: 0, isOpen: 0, @@ -178,6 +176,7 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, cell string, heartbeatWrit cell: cell, env: env, tabletTypeFunc: tabletTypeFunc, + srvTopoServer: srvTopoServer, ts: ts, heartbeatWriter: heartbeatWriter, pool: connpool.NewPool(env, "ThrottlerPool", tabletenv.ConnPoolConfig{ @@ -189,6 +188,7 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, cell string, heartbeatWrit throttler.mysqlThrottleMetricChan = make(chan *mysql.MySQLThrottleMetric) throttler.mysqlInventoryChan = make(chan *mysql.Inventory, 1) throttler.mysqlClusterProbesChan = make(chan *mysql.ClusterProbes) + throttler.throttlerConfigChan = make(chan *topodatapb.SrvKeyspace_ThrottlerConfig) throttler.mysqlInventory = mysql.NewInventory() throttler.throttledApps = cache.New(cache.NoExpiration, 0) @@ -202,8 +202,14 @@ func NewThrottler(env tabletenv.Env, ts *topo.Server, cell string, heartbeatWrit throttler.initThrottleTabletTypes() throttler.check = NewThrottlerCheck(throttler) - throttler.metricsQuery = replicationLagQuery - throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) + throttler.metricsQuery = replicationLagQuery // default + if throttleMetricQuery != "" { + throttler.metricsQuery = throttleMetricQuery // override + } + throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) //default + if throttleMetricThreshold != math.MaxFloat64 { + throttler.MetricsThreshold.Set(throttleMetricThreshold) // override + } throttler.initConfig() @@ -239,11 +245,14 @@ func (throttler *Throttler) initThrottleTabletTypes() { func (throttler *Throttler) InitDBConfig(keyspace, shard string) { throttler.keyspace = keyspace throttler.shard = shard + + throttler.srvTopoServer.WatchSrvKeyspace(context.Background(), throttler.cell, throttler.keyspace, throttler.WatchSrvKeyspaceCallback) } // initThrottler initializes config func (throttler *Throttler) initConfig() { log.Infof("Throttler: initializing config") + config.Instance = &config.ConfigurationSettings{ Stores: config.StoresSettings{ MySQL: config.MySQLConfigurationSettings{ @@ -252,14 +261,6 @@ func (throttler *Throttler) initConfig() { }, }, } - if throttleMetricQuery != "" { - throttler.metricsQuery = throttleMetricQuery - } - if throttleMetricThreshold != math.MaxFloat64 { - throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleMetricThreshold) - } - throttler.metricsQueryType = mysql.GetMetricsQueryType(throttler.metricsQuery) - config.Instance.Stores.MySQL.Clusters[selfStoreName] = &config.MySQLClusterConfigurationSettings{ MetricQuery: throttler.metricsQuery, ThrottleThreshold: &throttler.MetricsThreshold, @@ -272,21 +273,68 @@ func (throttler *Throttler) initConfig() { } } -func (throttler *Throttler) readConfig(ctx context.Context) (*ThrottlerConfig, error) { - srvKeyspace, err := throttler.ts.GetSrvKeyspace(ctx, throttler.cell, throttler.keyspace) +func (throttler *Throttler) readThrottlerConfig(ctx context.Context) (*topodatapb.SrvKeyspace_ThrottlerConfig, error) { + srvks, err := throttler.ts.GetSrvKeyspace(ctx, throttler.cell, throttler.keyspace) if err != nil { return nil, err } - if cfg := srvKeyspace.ThrottlerConfig; cfg != nil { - return &ThrottlerConfig{ - enabled: cfg.GetEnabled(), - threshold: cfg.GetDefaultCheckThreshold(), - }, nil + return throttler.normalizeThrottlerConfig(srvks.ThrottlerConfig), nil +} + +func (throttler *Throttler) normalizeThrottlerConfig(thottlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig { + if thottlerConfig == nil { + thottlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} + } + if thottlerConfig.CustomQuery == "" { + // no custom query; we check replication lag + if thottlerConfig.Threshold == 0 { + thottlerConfig.Threshold = throttleThreshold.Seconds() + } + } + return thottlerConfig +} + +func (throttler *Throttler) WatchSrvKeyspaceCallback(srvks *topodatapb.SrvKeyspace, err error) bool { + throttler.enableMutex.Lock() + defer throttler.enableMutex.Unlock() + + if err != nil { + log.Errorf("WatchSrvKeyspaceCallback error: %v", err) + return false + } + throttlerConfig := throttler.normalizeThrottlerConfig(srvks.ThrottlerConfig) + fmt.Printf("============ ZZZ WatchSrvKeyspaceCallback: %v\n", throttlerConfig) + + if throttler.isEnabled > 0 { + // throttler is running and we should apply the config change through Operate() or else we get into race conditions + go func() { + throttler.throttlerConfigChan <- throttlerConfig + }() + } else { + // throttler is not running, we should apply directly + throttler.applyThrottlerConfig(context.Background(), throttlerConfig) + } + + return true +} + +func (throttler *Throttler) applyThrottlerConfig(ctx context.Context, throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) { + if !throttlerConfigViaTopo { + return + } + fmt.Printf("============ ZZZ applyThrottlerConfig: %v\n", throttlerConfig) + if throttlerConfig.CustomQuery == "" { + throttler.metricsQuery = replicationLagQuery + } else { + throttler.metricsQuery = throttlerConfig.CustomQuery + } + throttler.MetricsThreshold.Set(throttlerConfig.Threshold) + throttlerCheckAsCheckSelf = throttlerConfig.CheckAsCheckSelf + if throttlerConfig.Enabled { + go throttler.Enable(ctx) + } else { + go throttler.Disable(ctx) } - return &ThrottlerConfig{ - enabled: throttler.env.Config().EnableLagThrottler, - threshold: throttleThreshold.Seconds(), - }, nil } func (throttler *Throttler) IsEnabled() bool { @@ -301,14 +349,7 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { return false } atomic.StoreInt64(&throttler.isEnabled, 1) - - // // TODO(shlomi): Read from database - // if err := throttler.readConfig(ctx); err != nil { - // fmt.Printf("======== ZZZ err: %v\n", err) - // } - throttler.metricsQuery = replicationLagQuery - throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) - // _ = throttler.updateConfig(ctx, true, throttler.MetricsThreshold.Get()) // TODO(shlomi) + fmt.Printf("============ ZZZ Enabling\n") ctx, throttler.cancelEnableContext = context.WithCancel(ctx) throttler.check.SelfChecks(ctx) @@ -320,26 +361,6 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { return true } -func (throttler *Throttler) maybeEnable(ctx context.Context) error { - // // TODO(shlomi): Read from database - // throttlerConfig, err := throttler.readConfig(ctx) - // if err != nil { - // return err - // } - var throttlerConfig *ThrottlerConfig - enable := false - switch throttlerConfig { - case nil: - enable = throttler.env.Config().EnableLagThrottler - default: - enable = throttlerConfig.enabled - } - if enable { - throttler.Enable(ctx) - } - return nil -} - func (throttler *Throttler) Disable(ctx context.Context) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() @@ -349,6 +370,7 @@ func (throttler *Throttler) Disable(ctx context.Context) bool { } // _ = throttler.updateConfig(ctx, false, throttler.MetricsThreshold.Get()) // TODO(shlomi) atomic.StoreInt64(&throttler.isEnabled, 0) + fmt.Printf("============ ZZZ Disabling\n") throttler.aggregatedMetrics.Flush() throttler.recentApps.Flush() @@ -368,12 +390,18 @@ func (throttler *Throttler) Open() error { // already open return nil } + fmt.Printf("============ ZZZ Opening\n") ctx := context.Background() throttler.pool.Open(throttler.env.Config().DB.AppWithDB(), throttler.env.Config().DB.DbaWithDB(), throttler.env.Config().DB.AppDebugWithDB()) atomic.StoreInt64(&throttler.isOpen, 1) throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) - throttler.maybeEnable(ctx) + + throttlerConfig, err := throttler.readThrottlerConfig(ctx) + if err != nil { + return err + } + throttler.applyThrottlerConfig(ctx, throttlerConfig) // may issue an Enable return nil } @@ -397,15 +425,21 @@ func (throttler *Throttler) Close() { log.Infof("Throttler: finished execution of Close") } +func (throttler *Throttler) generateSelfMySQLThrottleMetricFunc(ctx context.Context, probe *mysql.Probe) func() *mysql.MySQLThrottleMetric { + f := func() *mysql.MySQLThrottleMetric { + return throttler.readSelfMySQLThrottleMetric(ctx, probe) + } + return f +} + // readSelfMySQLThrottleMetric reads the mysql metric from thi very tablet's backend mysql. -func (throttler *Throttler) readSelfMySQLThrottleMetric() *mysql.MySQLThrottleMetric { +func (throttler *Throttler) readSelfMySQLThrottleMetric(ctx context.Context, probe *mysql.Probe) *mysql.MySQLThrottleMetric { metric := &mysql.MySQLThrottleMetric{ ClusterName: selfStoreName, Key: *mysql.SelfInstanceKey, Value: 0, Err: nil, } - ctx := context.Background() conn, err := throttler.pool.Get(ctx, nil) if err != nil { metric.Err = err @@ -413,7 +447,7 @@ func (throttler *Throttler) readSelfMySQLThrottleMetric() *mysql.MySQLThrottleMe } defer conn.Recycle() - tm, err := conn.Exec(ctx, throttler.metricsQuery, 1, true) + tm, err := conn.Exec(ctx, probe.MetricQuery, 1, true) if err != nil { metric.Err = err return metric @@ -424,7 +458,8 @@ func (throttler *Throttler) readSelfMySQLThrottleMetric() *mysql.MySQLThrottleMe return metric } - switch throttler.metricsQueryType { + metricsQueryType := mysql.GetMetricsQueryType(throttler.metricsQuery) + switch metricsQueryType { case mysql.MetricsQueryTypeSelect: // We expect a single row, single column result. // The "for" iteration below is just a way to get first result without knowning column name @@ -568,6 +603,8 @@ func (throttler *Throttler) Operate(ctx context.Context) { go throttler.expireThrottledApps() } } + case throttlerConfig := <-throttler.throttlerConfigChan: + throttler.applyThrottlerConfig(ctx, throttlerConfig) } } }() @@ -625,7 +662,7 @@ func (throttler *Throttler) collectMySQLMetrics(ctx context.Context) error { var throttleMetricFunc func() *mysql.MySQLThrottleMetric if clusterName == selfStoreName { - throttleMetricFunc = throttler.readSelfMySQLThrottleMetric + throttleMetricFunc = throttler.generateSelfMySQLThrottleMetricFunc(ctx, probe) } else { throttleMetricFunc = throttler.generateTabletHTTPProbeFunction(ctx, clusterName, probe) } @@ -641,6 +678,10 @@ func (throttler *Throttler) collectMySQLMetrics(ctx context.Context) error { // refreshMySQLInventory will re-structure the inventory based on reading config settings func (throttler *Throttler) refreshMySQLInventory(ctx context.Context) error { + // distribute the query/threshold from the throttler down to the cluster settings and from there to the probes + metricsQuery := throttler.metricsQuery + metricsThreshold := throttler.MetricsThreshold.Get() + fmt.Printf("============ ZZZ metricsThreshold := %v\n", metricsThreshold) addInstanceKey := func(tabletHost string, tabletPort int, key *mysql.InstanceKey, clusterName string, clusterSettings *config.MySQLClusterConfigurationSettings, probes *mysql.Probes) { for _, ignore := range clusterSettings.IgnoreHosts { if strings.Contains(key.StringCode(), ignore) { @@ -666,10 +707,14 @@ func (throttler *Throttler) refreshMySQLInventory(ctx context.Context) error { for clusterName, clusterSettings := range config.Settings().Stores.MySQL.Clusters { clusterName := clusterName clusterSettings := clusterSettings + clusterSettings.MetricQuery = metricsQuery + clusterSettings.ThrottleThreshold.Set(metricsThreshold) + fmt.Printf("============ ZZZ clusterSettings.ThrottleThreshold.Set : %v\n", metricsThreshold) // config may dynamically change, but internal structure (config.Settings().Stores.MySQL.Clusters in our case) // is immutable and can only be _replaced_. Hence, it's safe to read in a goroutine: go func() { throttler.mysqlClusterThresholds.Set(clusterName, clusterSettings.ThrottleThreshold.Get(), cache.DefaultExpiration) + fmt.Printf("============ ZZZ throttler.mysqlClusterThresholds.Set : %v\n", clusterSettings.ThrottleThreshold.Get()) clusterProbes := &mysql.ClusterProbes{ ClusterName: clusterName, IgnoreHostsCount: clusterSettings.IgnoreHostsCount, diff --git a/proto/topodata.proto b/proto/topodata.proto index 991de5608c8..1461fdffe09 100644 --- a/proto/topodata.proto +++ b/proto/topodata.proto @@ -400,8 +400,14 @@ message SrvKeyspace { // Enabled indicates that the throttler is actually checking state for requests. When disabled, it automatically returns 200 OK for all checks bool enabled = 1; - // DefaultCheckThreshold is the threshold for the default check - heartbeat lag - double default_check_threshold = 2; + // Threshold is the threshold for either the default check (heartbeat lag) or custom check + double threshold = 2; + + // CustomQuery is an optional query that overrides the default check query + string custom_query = 3; + + // CheckAsCheckSelf indicates whether a throttler /check request should behave like a /check-self + bool check_as_check_self = 4; } // ThrottlerConfig has the configuration for the tablet server's lag throttler, and applies to the entire keyspace, across all shards and tablets From bdd9c0fce15faa4688f68f27413e505b2daebde4 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 23 Oct 2022 08:53:14 +0300 Subject: [PATCH 19/78] AlterThrottler does not get handled by QueryExecutor Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/planbuilder/permission.go | 1 - .../vttablet/tabletserver/planbuilder/plan.go | 4 --- go/vt/vttablet/tabletserver/query_executor.go | 26 ------------------- 3 files changed, 31 deletions(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission.go b/go/vt/vttablet/tabletserver/planbuilder/permission.go index fc348e0b8c4..d68ff43a152 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission.go @@ -56,7 +56,6 @@ func BuildPermissions(stmt sqlparser.Statement) []Permission { *sqlparser.RevertMigration, *sqlparser.ShowMigrationLogs, *sqlparser.ShowThrottledApps, - *sqlparser.AlterThrottler, *sqlparser.ShowThrottlerStatus: permissions = []Permission{} // TODO(shlomi) what are the correct permissions here? Table is unknown case *sqlparser.Flush: diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index a2035074c6e..34c380fd9e5 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -78,7 +78,6 @@ const ( PlanRevertMigration PlanShowMigrationLogs PlanShowThrottledApps - PlanAlterThrottler PlanShowThrottlerStatus NumPlans ) @@ -114,7 +113,6 @@ var planName = []string{ "RevertMigration", "ShowMigrationLogs", "ShowThrottledApps", - "AlterThrottler", "ShowThrottlerStatus", } @@ -229,8 +227,6 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, dbNam plan, err = &Plan{PlanID: PlanShowMigrationLogs, FullStmt: stmt}, nil case *sqlparser.ShowThrottledApps: plan, err = &Plan{PlanID: PlanShowThrottledApps, FullStmt: stmt}, nil - case *sqlparser.AlterThrottler: - plan, err = &Plan{PlanID: PlanAlterThrottler, FullStmt: stmt}, nil case *sqlparser.ShowThrottlerStatus: plan, err = &Plan{PlanID: PlanShowThrottlerStatus, FullStmt: stmt}, nil case *sqlparser.Show: diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index db576d326c9..3af62195268 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -184,8 +184,6 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { return qre.execShowMigrationLogs() case p.PlanShowThrottledApps: return qre.execShowThrottledApps() - case p.PlanAlterThrottler: - return qre.execAlterThrottler() case p.PlanShowThrottlerStatus: return qre.execShowThrottlerStatus() case p.PlanSet: @@ -960,30 +958,6 @@ func (qre *QueryExecutor) execShowThrottledApps() (*sqltypes.Result, error) { return result, nil } -func (qre *QueryExecutor) execAlterThrottler() (*sqltypes.Result, error) { - // if err := qre.tsv.lagThrottler.CheckIsReady(); err != nil { - // return nil, err - // } - // alterThrottler, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) - alterThrottler, ok := qre.plan.FullStmt.(*sqlparser.AlterThrottler) - if !ok { - return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "Expecting ALTER VITESS_THROTTLER plan") - } - ctx := context.Background() - var affected bool - switch alterThrottler.Type { - case sqlparser.AlterThrottlerEnableType: - affected = qre.tsv.lagThrottler.Enable(ctx) - case sqlparser.AlterThrottlerDisableType: - affected = qre.tsv.lagThrottler.Disable(ctx) - } - result := &sqltypes.Result{} - if affected { - result.RowsAffected = 1 - } - return result, nil -} - func (qre *QueryExecutor) execShowThrottlerStatus() (*sqltypes.Result, error) { if _, ok := qre.plan.FullStmt.(*sqlparser.ShowThrottlerStatus); !ok { return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "Expecting SHOW VITESS_THROTTLER STATUS plan") From 8bceb64a33394c777ead05298d4114a1b6079655 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 27 Oct 2022 13:52:30 +0300 Subject: [PATCH 20/78] no schema, removed file Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../vttablet/tabletserver/throttle/schema.go | 154 ------------------ 1 file changed, 154 deletions(-) delete mode 100644 go/vt/vttablet/tabletserver/throttle/schema.go diff --git a/go/vt/vttablet/tabletserver/throttle/schema.go b/go/vt/vttablet/tabletserver/throttle/schema.go deleted file mode 100644 index dd329e12bce..00000000000 --- a/go/vt/vttablet/tabletserver/throttle/schema.go +++ /dev/null @@ -1,154 +0,0 @@ -/* -Copyright 2022 The Vitess Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package throttle - -// import ( -// "context" -// "fmt" -// "math" - -// "vitess.io/vitess/go/sqltypes" -// "vitess.io/vitess/go/vt/sqlparser" -// ) - -// const ( -// // SchemaMigrationsTableName is used by VExec interceptor to call the correct handler -// sqlCreateSidecarDB = "create database if not exists _vt" -// sqlCreateThrottlerConfigTable = `CREATE TABLE IF NOT EXISTS _vt.throttler_config ( -// anchor int unsigned NOT NULL, -// last_updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -// enable tinyint unsigned NOT NULL DEFAULT 0, -// threshold float NOT NULL DEFAULT 0, -// PRIMARY KEY (anchor) -// ) engine=InnoDB DEFAULT CHARSET=utf8mb4 -// ` -// sqlInsertConfigIgnore = `INSERT IGNORE INTO _vt.throttler_config ( -// anchor, -// last_updated, -// enable, -// threshold -// ) VALUES ( -// 1, -// NOW(), -// %a, -// %a -// ) -// ` -// sqlReadConfig = `SELECT enable, threshold FROM _vt.throttler_config WHERE anchor=1` -// sqlUpdateEnabled = `UPDATE _vt.throttler_config SET enable=%a WHERE anchor=1` -// sqlUpdateThreshold = `UPDATE _vt.throttler_config SET threshold=%a WHERE anchor=1` -// sqlUpdateConfig = `INSERT INTO _vt.throttler_config ( -// anchor, -// last_updated, -// enable, -// threshold -// ) VALUES ( -// 1, -// NOW(), -// %a, -// %a -// ) -// ON DUPLICATE KEY UPDATE -// last_updated=VALUES(last_updated), -// enable=VALUES(enable), -// threshold=VALUES(threshold) -// ` -// ) - -// var ApplyDDL = []string{ -// sqlCreateSidecarDB, -// sqlCreateThrottlerConfigTable, -// } - -// func (throttler *Throttler) execQuery(ctx context.Context, query string) (result *sqltypes.Result, err error) { -// defer throttler.env.LogError() - -// conn, err := throttler.pool.Get(ctx, nil) -// if err != nil { -// return result, err -// } -// defer conn.Recycle() -// return conn.Exec(ctx, query, math.MaxInt32, true) -// } - -// func (throttler *Throttler) submitInitialConfig(ctx context.Context, enabled bool, threshold float64) error { -// query, err := sqlparser.ParseAndBind(sqlInsertConfigIgnore, -// sqltypes.BoolBindVariable(enabled), -// sqltypes.Float64BindVariable(threshold), -// ) -// fmt.Printf("=========== ZZZ ParseAndBind: err=%v\n", err) -// if err != nil { -// return err -// } -// fmt.Printf("=========== ZZZ submitting: %v\n", query) -// _, err = throttler.execQuery(ctx, query) -// fmt.Printf("=========== ZZZ submitted: err=%v\n", err) -// return err -// } - -// func (throttler *Throttler) updateConfig(ctx context.Context, enabled bool, threshold float64) error { -// query, err := sqlparser.ParseAndBind(sqlUpdateConfig, -// sqltypes.BoolBindVariable(enabled), -// sqltypes.Float64BindVariable(threshold), -// ) -// fmt.Printf("=========== ZZZ ParseAndBind: err=%v\n", err) -// if err != nil { -// return err -// } -// fmt.Printf("=========== ZZZ submitting: %v\n", query) -// _, err = throttler.execQuery(ctx, query) -// fmt.Printf("=========== ZZZ submitted: err=%v\n", err) -// return err -// } - -// func (throttler *Throttler) updateEnabled(ctx context.Context, enabled bool) error { -// query, err := sqlparser.ParseAndBind(sqlUpdateEnabled, -// sqltypes.BoolBindVariable(enabled), -// ) -// if err != nil { -// return err -// } -// _, err = throttler.execQuery(ctx, query) -// return err -// } - -// func (throttler *Throttler) updateThreshold(ctx context.Context, threshold float64) error { -// query, err := sqlparser.ParseAndBind(sqlUpdateThreshold, -// sqltypes.Float64BindVariable(threshold), -// ) -// if err != nil { -// return err -// } -// _, err = throttler.execQuery(ctx, query) -// return err -// } - -// func (throttler *Throttler) readConfig(ctx context.Context) (*ThrottlerConfig, error) { -// rs, err := throttler.execQuery(ctx, sqlReadConfig) -// if err != nil { -// return nil, err -// } -// row := rs.Named().Row() -// if row == nil { -// return nil, nil -// } -// config := &ThrottlerConfig{ -// enabled: row.AsBool("enable", false), -// threshold: row.AsFloat64("threshold", 0), -// } -// return config, nil -// } From 3d226658ec93a290c30c5f75d4bb527afc08a106 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 27 Oct 2022 14:01:54 +0300 Subject: [PATCH 21/78] unsupport ALTER VITESS_THROTTLER syntax Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/keywords.go | 1 - go/vt/sqlparser/sql.go | 15609 +++++++++++++++++----------------- go/vt/sqlparser/sql.y | 40 +- 3 files changed, 7798 insertions(+), 7852 deletions(-) diff --git a/go/vt/sqlparser/keywords.go b/go/vt/sqlparser/keywords.go index 0d8802c2c46..9c3aa852315 100644 --- a/go/vt/sqlparser/keywords.go +++ b/go/vt/sqlparser/keywords.go @@ -599,7 +599,6 @@ var keywords = []keyword{ {"text", TEXT}, {"than", THAN}, {"then", THEN}, - {"threshold", THRESHOLD}, {"throttle", THROTTLE}, {"time", TIME}, {"timestamp", TIMESTAMP}, diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 52c42b53567..e18f0941615 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -336,353 +336,352 @@ const UNTHROTTLE = 57633 const EXPIRE = 57634 const RATIO = 57635 const VITESS_THROTTLER = 57636 -const THRESHOLD = 57637 -const BEGIN = 57638 -const START = 57639 -const TRANSACTION = 57640 -const COMMIT = 57641 -const ROLLBACK = 57642 -const SAVEPOINT = 57643 -const RELEASE = 57644 -const WORK = 57645 -const BIT = 57646 -const TINYINT = 57647 -const SMALLINT = 57648 -const MEDIUMINT = 57649 -const INT = 57650 -const INTEGER = 57651 -const BIGINT = 57652 -const INTNUM = 57653 -const REAL = 57654 -const DOUBLE = 57655 -const FLOAT_TYPE = 57656 -const DECIMAL_TYPE = 57657 -const NUMERIC = 57658 -const TIME = 57659 -const TIMESTAMP = 57660 -const DATETIME = 57661 -const YEAR = 57662 -const CHAR = 57663 -const VARCHAR = 57664 -const BOOL = 57665 -const CHARACTER = 57666 -const VARBINARY = 57667 -const NCHAR = 57668 -const TEXT = 57669 -const TINYTEXT = 57670 -const MEDIUMTEXT = 57671 -const LONGTEXT = 57672 -const BLOB = 57673 -const TINYBLOB = 57674 -const MEDIUMBLOB = 57675 -const LONGBLOB = 57676 -const JSON = 57677 -const JSON_SCHEMA_VALID = 57678 -const JSON_SCHEMA_VALIDATION_REPORT = 57679 -const ENUM = 57680 -const GEOMETRY = 57681 -const POINT = 57682 -const LINESTRING = 57683 -const POLYGON = 57684 -const GEOMCOLLECTION = 57685 -const GEOMETRYCOLLECTION = 57686 -const MULTIPOINT = 57687 -const MULTILINESTRING = 57688 -const MULTIPOLYGON = 57689 -const ASCII = 57690 -const UNICODE = 57691 -const NULLX = 57692 -const AUTO_INCREMENT = 57693 -const APPROXNUM = 57694 -const SIGNED = 57695 -const UNSIGNED = 57696 -const ZEROFILL = 57697 -const CODE = 57698 -const COLLATION = 57699 -const COLUMNS = 57700 -const DATABASES = 57701 -const ENGINES = 57702 -const EVENT = 57703 -const EXTENDED = 57704 -const FIELDS = 57705 -const FULL = 57706 -const FUNCTION = 57707 -const GTID_EXECUTED = 57708 -const KEYSPACES = 57709 -const OPEN = 57710 -const PLUGINS = 57711 -const PRIVILEGES = 57712 -const PROCESSLIST = 57713 -const SCHEMAS = 57714 -const TABLES = 57715 -const TRIGGERS = 57716 -const USER = 57717 -const VGTID_EXECUTED = 57718 -const VITESS_KEYSPACES = 57719 -const VITESS_METADATA = 57720 -const VITESS_MIGRATIONS = 57721 -const VITESS_REPLICATION_STATUS = 57722 -const VITESS_SHARDS = 57723 -const VITESS_TABLETS = 57724 -const VITESS_TARGET = 57725 -const VSCHEMA = 57726 -const VITESS_THROTTLED_APPS = 57727 -const NAMES = 57728 -const GLOBAL = 57729 -const SESSION = 57730 -const ISOLATION = 57731 -const LEVEL = 57732 -const READ = 57733 -const WRITE = 57734 -const ONLY = 57735 -const REPEATABLE = 57736 -const COMMITTED = 57737 -const UNCOMMITTED = 57738 -const SERIALIZABLE = 57739 -const CURRENT_TIMESTAMP = 57740 -const DATABASE = 57741 -const CURRENT_DATE = 57742 -const NOW = 57743 -const CURRENT_TIME = 57744 -const LOCALTIME = 57745 -const LOCALTIMESTAMP = 57746 -const CURRENT_USER = 57747 -const UTC_DATE = 57748 -const UTC_TIME = 57749 -const UTC_TIMESTAMP = 57750 -const DAY = 57751 -const DAY_HOUR = 57752 -const DAY_MICROSECOND = 57753 -const DAY_MINUTE = 57754 -const DAY_SECOND = 57755 -const HOUR = 57756 -const HOUR_MICROSECOND = 57757 -const HOUR_MINUTE = 57758 -const HOUR_SECOND = 57759 -const MICROSECOND = 57760 -const MINUTE = 57761 -const MINUTE_MICROSECOND = 57762 -const MINUTE_SECOND = 57763 -const MONTH = 57764 -const QUARTER = 57765 -const SECOND = 57766 -const SECOND_MICROSECOND = 57767 -const YEAR_MONTH = 57768 -const WEEK = 57769 -const REPLACE = 57770 -const CONVERT = 57771 -const CAST = 57772 -const SUBSTR = 57773 -const SUBSTRING = 57774 -const SEPARATOR = 57775 -const TIMESTAMPADD = 57776 -const TIMESTAMPDIFF = 57777 -const WEIGHT_STRING = 57778 -const LTRIM = 57779 -const RTRIM = 57780 -const TRIM = 57781 -const JSON_ARRAY = 57782 -const JSON_OBJECT = 57783 -const JSON_QUOTE = 57784 -const JSON_DEPTH = 57785 -const JSON_TYPE = 57786 -const JSON_LENGTH = 57787 -const JSON_VALID = 57788 -const JSON_ARRAY_APPEND = 57789 -const JSON_ARRAY_INSERT = 57790 -const JSON_INSERT = 57791 -const JSON_MERGE = 57792 -const JSON_MERGE_PATCH = 57793 -const JSON_MERGE_PRESERVE = 57794 -const JSON_REMOVE = 57795 -const JSON_REPLACE = 57796 -const JSON_SET = 57797 -const JSON_UNQUOTE = 57798 -const COUNT = 57799 -const AVG = 57800 -const MAX = 57801 -const MIN = 57802 -const SUM = 57803 -const GROUP_CONCAT = 57804 -const BIT_AND = 57805 -const BIT_OR = 57806 -const BIT_XOR = 57807 -const STD = 57808 -const STDDEV = 57809 -const STDDEV_POP = 57810 -const STDDEV_SAMP = 57811 -const VAR_POP = 57812 -const VAR_SAMP = 57813 -const VARIANCE = 57814 -const REGEXP_INSTR = 57815 -const REGEXP_LIKE = 57816 -const REGEXP_REPLACE = 57817 -const REGEXP_SUBSTR = 57818 -const ExtractValue = 57819 -const UpdateXML = 57820 -const GET_LOCK = 57821 -const RELEASE_LOCK = 57822 -const RELEASE_ALL_LOCKS = 57823 -const IS_FREE_LOCK = 57824 -const IS_USED_LOCK = 57825 -const LOCATE = 57826 -const POSITION = 57827 -const MATCH = 57828 -const AGAINST = 57829 -const BOOLEAN = 57830 -const LANGUAGE = 57831 -const WITH = 57832 -const QUERY = 57833 -const EXPANSION = 57834 -const WITHOUT = 57835 -const VALIDATION = 57836 -const UNUSED = 57837 -const ARRAY = 57838 -const BYTE = 57839 -const CUME_DIST = 57840 -const DESCRIPTION = 57841 -const DENSE_RANK = 57842 -const EMPTY = 57843 -const EXCEPT = 57844 -const FIRST_VALUE = 57845 -const GROUPING = 57846 -const GROUPS = 57847 -const JSON_TABLE = 57848 -const LAG = 57849 -const LAST_VALUE = 57850 -const LATERAL = 57851 -const LEAD = 57852 -const NTH_VALUE = 57853 -const NTILE = 57854 -const OF = 57855 -const OVER = 57856 -const PERCENT_RANK = 57857 -const RANK = 57858 -const RECURSIVE = 57859 -const ROW_NUMBER = 57860 -const SYSTEM = 57861 -const WINDOW = 57862 -const ACTIVE = 57863 -const ADMIN = 57864 -const AUTOEXTEND_SIZE = 57865 -const BUCKETS = 57866 -const CLONE = 57867 -const COLUMN_FORMAT = 57868 -const COMPONENT = 57869 -const DEFINITION = 57870 -const ENFORCED = 57871 -const ENGINE_ATTRIBUTE = 57872 -const EXCLUDE = 57873 -const FOLLOWING = 57874 -const GET_MASTER_PUBLIC_KEY = 57875 -const HISTOGRAM = 57876 -const HISTORY = 57877 -const INACTIVE = 57878 -const INVISIBLE = 57879 -const LOCKED = 57880 -const MASTER_COMPRESSION_ALGORITHMS = 57881 -const MASTER_PUBLIC_KEY_PATH = 57882 -const MASTER_TLS_CIPHERSUITES = 57883 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57884 -const NESTED = 57885 -const NETWORK_NAMESPACE = 57886 -const NOWAIT = 57887 -const NULLS = 57888 -const OJ = 57889 -const OLD = 57890 -const OPTIONAL = 57891 -const ORDINALITY = 57892 -const ORGANIZATION = 57893 -const OTHERS = 57894 -const PARTIAL = 57895 -const PATH = 57896 -const PERSIST = 57897 -const PERSIST_ONLY = 57898 -const PRECEDING = 57899 -const PRIVILEGE_CHECKS_USER = 57900 -const PROCESS = 57901 -const RANDOM = 57902 -const REFERENCE = 57903 -const REQUIRE_ROW_FORMAT = 57904 -const RESOURCE = 57905 -const RESPECT = 57906 -const RESTART = 57907 -const RETAIN = 57908 -const REUSE = 57909 -const ROLE = 57910 -const SECONDARY = 57911 -const SECONDARY_ENGINE = 57912 -const SECONDARY_ENGINE_ATTRIBUTE = 57913 -const SECONDARY_LOAD = 57914 -const SECONDARY_UNLOAD = 57915 -const SIMPLE = 57916 -const SKIP = 57917 -const SRID = 57918 -const THREAD_PRIORITY = 57919 -const TIES = 57920 -const UNBOUNDED = 57921 -const VCPU = 57922 -const VISIBLE = 57923 -const RETURNING = 57924 -const FORMAT_BYTES = 57925 -const FORMAT_PICO_TIME = 57926 -const PS_CURRENT_THREAD_ID = 57927 -const PS_THREAD_ID = 57928 -const GTID_SUBSET = 57929 -const GTID_SUBTRACT = 57930 -const WAIT_FOR_EXECUTED_GTID_SET = 57931 -const WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 57932 -const FORMAT = 57933 -const TREE = 57934 -const VITESS = 57935 -const TRADITIONAL = 57936 -const VTEXPLAIN = 57937 -const LOCAL = 57938 -const LOW_PRIORITY = 57939 -const NO_WRITE_TO_BINLOG = 57940 -const LOGS = 57941 -const ERROR = 57942 -const GENERAL = 57943 -const HOSTS = 57944 -const OPTIMIZER_COSTS = 57945 -const USER_RESOURCES = 57946 -const SLOW = 57947 -const CHANNEL = 57948 -const RELAY = 57949 -const EXPORT = 57950 -const CURRENT = 57951 -const ROW = 57952 -const ROWS = 57953 -const AVG_ROW_LENGTH = 57954 -const CONNECTION = 57955 -const CHECKSUM = 57956 -const DELAY_KEY_WRITE = 57957 -const ENCRYPTION = 57958 -const ENGINE = 57959 -const INSERT_METHOD = 57960 -const MAX_ROWS = 57961 -const MIN_ROWS = 57962 -const PACK_KEYS = 57963 -const PASSWORD = 57964 -const FIXED = 57965 -const DYNAMIC = 57966 -const COMPRESSED = 57967 -const REDUNDANT = 57968 -const COMPACT = 57969 -const ROW_FORMAT = 57970 -const STATS_AUTO_RECALC = 57971 -const STATS_PERSISTENT = 57972 -const STATS_SAMPLE_PAGES = 57973 -const STORAGE = 57974 -const MEMORY = 57975 -const DISK = 57976 -const PARTITIONS = 57977 -const LINEAR = 57978 -const RANGE = 57979 -const LIST = 57980 -const SUBPARTITION = 57981 -const SUBPARTITIONS = 57982 -const HASH = 57983 +const BEGIN = 57637 +const START = 57638 +const TRANSACTION = 57639 +const COMMIT = 57640 +const ROLLBACK = 57641 +const SAVEPOINT = 57642 +const RELEASE = 57643 +const WORK = 57644 +const BIT = 57645 +const TINYINT = 57646 +const SMALLINT = 57647 +const MEDIUMINT = 57648 +const INT = 57649 +const INTEGER = 57650 +const BIGINT = 57651 +const INTNUM = 57652 +const REAL = 57653 +const DOUBLE = 57654 +const FLOAT_TYPE = 57655 +const DECIMAL_TYPE = 57656 +const NUMERIC = 57657 +const TIME = 57658 +const TIMESTAMP = 57659 +const DATETIME = 57660 +const YEAR = 57661 +const CHAR = 57662 +const VARCHAR = 57663 +const BOOL = 57664 +const CHARACTER = 57665 +const VARBINARY = 57666 +const NCHAR = 57667 +const TEXT = 57668 +const TINYTEXT = 57669 +const MEDIUMTEXT = 57670 +const LONGTEXT = 57671 +const BLOB = 57672 +const TINYBLOB = 57673 +const MEDIUMBLOB = 57674 +const LONGBLOB = 57675 +const JSON = 57676 +const JSON_SCHEMA_VALID = 57677 +const JSON_SCHEMA_VALIDATION_REPORT = 57678 +const ENUM = 57679 +const GEOMETRY = 57680 +const POINT = 57681 +const LINESTRING = 57682 +const POLYGON = 57683 +const GEOMCOLLECTION = 57684 +const GEOMETRYCOLLECTION = 57685 +const MULTIPOINT = 57686 +const MULTILINESTRING = 57687 +const MULTIPOLYGON = 57688 +const ASCII = 57689 +const UNICODE = 57690 +const NULLX = 57691 +const AUTO_INCREMENT = 57692 +const APPROXNUM = 57693 +const SIGNED = 57694 +const UNSIGNED = 57695 +const ZEROFILL = 57696 +const CODE = 57697 +const COLLATION = 57698 +const COLUMNS = 57699 +const DATABASES = 57700 +const ENGINES = 57701 +const EVENT = 57702 +const EXTENDED = 57703 +const FIELDS = 57704 +const FULL = 57705 +const FUNCTION = 57706 +const GTID_EXECUTED = 57707 +const KEYSPACES = 57708 +const OPEN = 57709 +const PLUGINS = 57710 +const PRIVILEGES = 57711 +const PROCESSLIST = 57712 +const SCHEMAS = 57713 +const TABLES = 57714 +const TRIGGERS = 57715 +const USER = 57716 +const VGTID_EXECUTED = 57717 +const VITESS_KEYSPACES = 57718 +const VITESS_METADATA = 57719 +const VITESS_MIGRATIONS = 57720 +const VITESS_REPLICATION_STATUS = 57721 +const VITESS_SHARDS = 57722 +const VITESS_TABLETS = 57723 +const VITESS_TARGET = 57724 +const VSCHEMA = 57725 +const VITESS_THROTTLED_APPS = 57726 +const NAMES = 57727 +const GLOBAL = 57728 +const SESSION = 57729 +const ISOLATION = 57730 +const LEVEL = 57731 +const READ = 57732 +const WRITE = 57733 +const ONLY = 57734 +const REPEATABLE = 57735 +const COMMITTED = 57736 +const UNCOMMITTED = 57737 +const SERIALIZABLE = 57738 +const CURRENT_TIMESTAMP = 57739 +const DATABASE = 57740 +const CURRENT_DATE = 57741 +const NOW = 57742 +const CURRENT_TIME = 57743 +const LOCALTIME = 57744 +const LOCALTIMESTAMP = 57745 +const CURRENT_USER = 57746 +const UTC_DATE = 57747 +const UTC_TIME = 57748 +const UTC_TIMESTAMP = 57749 +const DAY = 57750 +const DAY_HOUR = 57751 +const DAY_MICROSECOND = 57752 +const DAY_MINUTE = 57753 +const DAY_SECOND = 57754 +const HOUR = 57755 +const HOUR_MICROSECOND = 57756 +const HOUR_MINUTE = 57757 +const HOUR_SECOND = 57758 +const MICROSECOND = 57759 +const MINUTE = 57760 +const MINUTE_MICROSECOND = 57761 +const MINUTE_SECOND = 57762 +const MONTH = 57763 +const QUARTER = 57764 +const SECOND = 57765 +const SECOND_MICROSECOND = 57766 +const YEAR_MONTH = 57767 +const WEEK = 57768 +const REPLACE = 57769 +const CONVERT = 57770 +const CAST = 57771 +const SUBSTR = 57772 +const SUBSTRING = 57773 +const SEPARATOR = 57774 +const TIMESTAMPADD = 57775 +const TIMESTAMPDIFF = 57776 +const WEIGHT_STRING = 57777 +const LTRIM = 57778 +const RTRIM = 57779 +const TRIM = 57780 +const JSON_ARRAY = 57781 +const JSON_OBJECT = 57782 +const JSON_QUOTE = 57783 +const JSON_DEPTH = 57784 +const JSON_TYPE = 57785 +const JSON_LENGTH = 57786 +const JSON_VALID = 57787 +const JSON_ARRAY_APPEND = 57788 +const JSON_ARRAY_INSERT = 57789 +const JSON_INSERT = 57790 +const JSON_MERGE = 57791 +const JSON_MERGE_PATCH = 57792 +const JSON_MERGE_PRESERVE = 57793 +const JSON_REMOVE = 57794 +const JSON_REPLACE = 57795 +const JSON_SET = 57796 +const JSON_UNQUOTE = 57797 +const COUNT = 57798 +const AVG = 57799 +const MAX = 57800 +const MIN = 57801 +const SUM = 57802 +const GROUP_CONCAT = 57803 +const BIT_AND = 57804 +const BIT_OR = 57805 +const BIT_XOR = 57806 +const STD = 57807 +const STDDEV = 57808 +const STDDEV_POP = 57809 +const STDDEV_SAMP = 57810 +const VAR_POP = 57811 +const VAR_SAMP = 57812 +const VARIANCE = 57813 +const REGEXP_INSTR = 57814 +const REGEXP_LIKE = 57815 +const REGEXP_REPLACE = 57816 +const REGEXP_SUBSTR = 57817 +const ExtractValue = 57818 +const UpdateXML = 57819 +const GET_LOCK = 57820 +const RELEASE_LOCK = 57821 +const RELEASE_ALL_LOCKS = 57822 +const IS_FREE_LOCK = 57823 +const IS_USED_LOCK = 57824 +const LOCATE = 57825 +const POSITION = 57826 +const MATCH = 57827 +const AGAINST = 57828 +const BOOLEAN = 57829 +const LANGUAGE = 57830 +const WITH = 57831 +const QUERY = 57832 +const EXPANSION = 57833 +const WITHOUT = 57834 +const VALIDATION = 57835 +const UNUSED = 57836 +const ARRAY = 57837 +const BYTE = 57838 +const CUME_DIST = 57839 +const DESCRIPTION = 57840 +const DENSE_RANK = 57841 +const EMPTY = 57842 +const EXCEPT = 57843 +const FIRST_VALUE = 57844 +const GROUPING = 57845 +const GROUPS = 57846 +const JSON_TABLE = 57847 +const LAG = 57848 +const LAST_VALUE = 57849 +const LATERAL = 57850 +const LEAD = 57851 +const NTH_VALUE = 57852 +const NTILE = 57853 +const OF = 57854 +const OVER = 57855 +const PERCENT_RANK = 57856 +const RANK = 57857 +const RECURSIVE = 57858 +const ROW_NUMBER = 57859 +const SYSTEM = 57860 +const WINDOW = 57861 +const ACTIVE = 57862 +const ADMIN = 57863 +const AUTOEXTEND_SIZE = 57864 +const BUCKETS = 57865 +const CLONE = 57866 +const COLUMN_FORMAT = 57867 +const COMPONENT = 57868 +const DEFINITION = 57869 +const ENFORCED = 57870 +const ENGINE_ATTRIBUTE = 57871 +const EXCLUDE = 57872 +const FOLLOWING = 57873 +const GET_MASTER_PUBLIC_KEY = 57874 +const HISTOGRAM = 57875 +const HISTORY = 57876 +const INACTIVE = 57877 +const INVISIBLE = 57878 +const LOCKED = 57879 +const MASTER_COMPRESSION_ALGORITHMS = 57880 +const MASTER_PUBLIC_KEY_PATH = 57881 +const MASTER_TLS_CIPHERSUITES = 57882 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57883 +const NESTED = 57884 +const NETWORK_NAMESPACE = 57885 +const NOWAIT = 57886 +const NULLS = 57887 +const OJ = 57888 +const OLD = 57889 +const OPTIONAL = 57890 +const ORDINALITY = 57891 +const ORGANIZATION = 57892 +const OTHERS = 57893 +const PARTIAL = 57894 +const PATH = 57895 +const PERSIST = 57896 +const PERSIST_ONLY = 57897 +const PRECEDING = 57898 +const PRIVILEGE_CHECKS_USER = 57899 +const PROCESS = 57900 +const RANDOM = 57901 +const REFERENCE = 57902 +const REQUIRE_ROW_FORMAT = 57903 +const RESOURCE = 57904 +const RESPECT = 57905 +const RESTART = 57906 +const RETAIN = 57907 +const REUSE = 57908 +const ROLE = 57909 +const SECONDARY = 57910 +const SECONDARY_ENGINE = 57911 +const SECONDARY_ENGINE_ATTRIBUTE = 57912 +const SECONDARY_LOAD = 57913 +const SECONDARY_UNLOAD = 57914 +const SIMPLE = 57915 +const SKIP = 57916 +const SRID = 57917 +const THREAD_PRIORITY = 57918 +const TIES = 57919 +const UNBOUNDED = 57920 +const VCPU = 57921 +const VISIBLE = 57922 +const RETURNING = 57923 +const FORMAT_BYTES = 57924 +const FORMAT_PICO_TIME = 57925 +const PS_CURRENT_THREAD_ID = 57926 +const PS_THREAD_ID = 57927 +const GTID_SUBSET = 57928 +const GTID_SUBTRACT = 57929 +const WAIT_FOR_EXECUTED_GTID_SET = 57930 +const WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 57931 +const FORMAT = 57932 +const TREE = 57933 +const VITESS = 57934 +const TRADITIONAL = 57935 +const VTEXPLAIN = 57936 +const LOCAL = 57937 +const LOW_PRIORITY = 57938 +const NO_WRITE_TO_BINLOG = 57939 +const LOGS = 57940 +const ERROR = 57941 +const GENERAL = 57942 +const HOSTS = 57943 +const OPTIMIZER_COSTS = 57944 +const USER_RESOURCES = 57945 +const SLOW = 57946 +const CHANNEL = 57947 +const RELAY = 57948 +const EXPORT = 57949 +const CURRENT = 57950 +const ROW = 57951 +const ROWS = 57952 +const AVG_ROW_LENGTH = 57953 +const CONNECTION = 57954 +const CHECKSUM = 57955 +const DELAY_KEY_WRITE = 57956 +const ENCRYPTION = 57957 +const ENGINE = 57958 +const INSERT_METHOD = 57959 +const MAX_ROWS = 57960 +const MIN_ROWS = 57961 +const PACK_KEYS = 57962 +const PASSWORD = 57963 +const FIXED = 57964 +const DYNAMIC = 57965 +const COMPRESSED = 57966 +const REDUNDANT = 57967 +const COMPACT = 57968 +const ROW_FORMAT = 57969 +const STATS_AUTO_RECALC = 57970 +const STATS_PERSISTENT = 57971 +const STATS_SAMPLE_PAGES = 57972 +const STORAGE = 57973 +const MEMORY = 57974 +const DISK = 57975 +const PARTITIONS = 57976 +const LINEAR = 57977 +const RANGE = 57978 +const LIST = 57979 +const SUBPARTITION = 57980 +const SUBPARTITIONS = 57981 +const HASH = 57982 var yyToknames = [...]string{ "$end", @@ -996,7 +995,6 @@ var yyToknames = [...]string{ "EXPIRE", "RATIO", "VITESS_THROTTLER", - "THRESHOLD", "BEGIN", "START", "TRANSACTION", @@ -1363,29 +1361,29 @@ var yyExca = [...]int{ -2, 37, -1, 49, 1, 147, - 659, 147, + 658, 147, -2, 155, -1, 50, 135, 155, 176, 155, - 341, 155, - -2, 508, + 340, 155, + -2, 505, -1, 57, - 36, 758, - 238, 758, - 249, 758, - 284, 772, - 285, 772, - -2, 760, + 36, 752, + 238, 752, + 249, 752, + 284, 766, + 285, 766, + -2, 754, -1, 62, - 240, 789, - -2, 787, + 240, 783, + -2, 781, -1, 116, - 237, 1445, + 237, 1439, -2, 121, -1, 118, 1, 148, - 659, 148, + 658, 148, -2, 155, -1, 129, 136, 391, @@ -1394,1087 +1392,1120 @@ var yyExca = [...]int{ -1, 148, 135, 155, 176, 155, - 341, 155, - -2, 517, + 340, 155, + -2, 514, + -1, 800, + 87, 1456, + -2, 1301, -1, 801, - 87, 1462, - -2, 1307, + 87, 1457, + 221, 1461, + -2, 1302, -1, 802, - 87, 1463, - 221, 1467, - -2, 1308, - -1, 803, - 221, 1466, + 221, 1460, -2, 39, - -1, 883, - 60, 858, - -2, 873, - -1, 969, + -1, 882, + 60, 852, + -2, 867, + -1, 968, 248, 40, 253, 40, -2, 402, - -1, 1055, - 1, 565, - 659, 565, + -1, 1053, + 1, 562, + 658, 562, -2, 155, - -1, 1345, - 221, 1467, - -2, 1308, - -1, 1493, - 60, 859, - -2, 878, - -1, 1494, - 60, 860, - -2, 879, - -1, 1545, + -1, 1343, + 221, 1461, + -2, 1302, + -1, 1491, + 60, 853, + -2, 872, + -1, 1492, + 60, 854, + -2, 873, + -1, 1543, 135, 155, 176, 155, - 341, 155, + 340, 155, -2, 441, - -1, 1624, + -1, 1622, 136, 391, 243, 391, -2, 494, - -1, 1633, + -1, 1631, 248, 41, 253, 41, -2, 403, - -1, 1991, - 221, 1471, - -2, 1465, - -1, 1992, - 221, 1467, - -2, 1463, - -1, 2092, + -1, 1985, + 221, 1465, + -2, 1459, + -1, 1986, + 221, 1461, + -2, 1457, + -1, 2086, 135, 155, 176, 155, - 341, 155, + 340, 155, -2, 442, - -1, 2099, + -1, 2093, 26, 176, -2, 178, - -1, 2462, + -1, 2454, 78, 95, 88, 95, - -2, 937, - -1, 2530, - 634, 684, - -2, 658, - -1, 2697, - 50, 1404, - -2, 1398, - -1, 3349, - 634, 684, - -2, 672, - -1, 3437, - 23, 1823, - 33, 1823, - 177, 1823, - 260, 1823, - 321, 1823, - 322, 1823, - 323, 1823, - 324, 1823, - 325, 1823, - 326, 1823, - 327, 1823, - 329, 1823, - 330, 1823, - 331, 1823, - 332, 1823, - 333, 1823, - 334, 1823, - 335, 1823, - 336, 1823, - 337, 1823, - 338, 1823, - 339, 1823, - 340, 1823, - 342, 1823, - 344, 1823, - 345, 1823, - 346, 1823, - 347, 1823, - 348, 1823, - 349, 1823, - 350, 1823, - 351, 1823, - 352, 1823, - 355, 1823, - 356, 1823, - 357, 1823, - 358, 1823, - 359, 1823, - 361, 1823, - 362, 1823, - 363, 1823, - 364, 1823, - 505, 1823, - -2, 616, + -2, 931, + -1, 2522, + 633, 678, + -2, 652, + -1, 2689, + 50, 1398, + -2, 1392, + -1, 3341, + 633, 678, + -2, 666, + -1, 3429, + 23, 1817, + 33, 1817, + 177, 1817, + 260, 1817, + 320, 1817, + 321, 1817, + 322, 1817, + 323, 1817, + 324, 1817, + 325, 1817, + 326, 1817, + 328, 1817, + 329, 1817, + 330, 1817, + 331, 1817, + 332, 1817, + 333, 1817, + 334, 1817, + 335, 1817, + 336, 1817, + 337, 1817, + 338, 1817, + 339, 1817, + 341, 1817, + 343, 1817, + 344, 1817, + 345, 1817, + 346, 1817, + 347, 1817, + 348, 1817, + 349, 1817, + 350, 1817, + 351, 1817, + 354, 1817, + 355, 1817, + 356, 1817, + 357, 1817, + 358, 1817, + 360, 1817, + 361, 1817, + 362, 1817, + 363, 1817, + 504, 1817, + -2, 610, } const yyPrivate = 57344 -const yyLast = 47376 +const yyLast = 47871 var yyAct = [...]int{ - 1501, 3508, 3097, 3098, 3330, 812, 3096, 3414, 3519, 805, - 675, 3477, 3435, 3478, 3067, 2924, 2040, 1548, 804, 1858, - 3380, 655, 3403, 2846, 2749, 2756, 2020, 3314, 3262, 2806, - 2089, 2811, 2808, 2807, 2805, 2810, 2809, 2797, 3312, 5, - 2362, 3054, 1119, 2710, 3126, 876, 2826, 2713, 3302, 2396, - 2022, 2656, 2764, 2159, 657, 2825, 2711, 2963, 2714, 3131, - 2957, 767, 2591, 765, 1508, 2435, 685, 2828, 2983, 2060, - 2708, 766, 2698, 2044, 2422, 1982, 2949, 653, 1067, 931, - 2527, 2063, 772, 2122, 2147, 2495, 2852, 2127, 2575, 2496, - 1602, 771, 2497, 2190, 39, 2447, 2077, 2064, 2398, 157, - 2414, 40, 38, 1001, 1953, 2428, 1854, 1873, 2065, 1649, - 1812, 899, 900, 878, 2567, 1096, 2168, 1495, 143, 1979, - 2146, 2207, 2129, 2489, 959, 964, 1631, 1537, 2464, 1517, - 2067, 1475, 94, 667, 1357, 1831, 2052, 1877, 650, 1638, - 1285, 1752, 935, 938, 2144, 1730, 970, 939, 2118, 662, - 965, 966, 98, 99, 1536, 1341, 917, 1121, 967, 919, - 890, 1949, 1522, 1317, 887, 10, 977, 79, 9, 1756, - 1987, 880, 101, 884, 1110, 8, 1761, 161, 1117, 2045, - 121, 119, 120, 886, 885, 1597, 126, 127, 1050, 1623, - 78, 888, 902, 661, 1361, 912, 3339, 87, 2520, 92, - 93, 3509, 2161, 2162, 2163, 3365, 3055, 2794, 2161, 2550, - 2549, 2205, 2518, 907, 911, 100, 3010, 624, 3047, 1715, - 3461, 2583, 1471, 2584, 3101, 644, 893, 122, 821, 822, - 823, 3366, 89, 1365, 89, 89, 3361, 590, 1952, 932, - 128, 903, 1819, 630, 909, 909, 3360, 2250, 1006, 1003, - 2816, 2017, 2018, 1834, 1818, 1817, 1816, 1815, 957, 1814, - 926, 1792, 1020, 1021, 1022, 3456, 1025, 1026, 1027, 1028, - 879, 2394, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 980, - 927, 2, 649, 645, 877, 894, 122, 981, 901, 955, - 954, 953, 956, 1886, 630, 647, 2814, 648, 1007, 1010, - 1011, 3100, 2694, 2424, 1988, 948, 2660, 1302, 184, 1014, - 1286, 3481, 943, 2816, 2138, 3465, 3101, 2540, 3463, 925, - 769, 770, 2820, 105, 106, 107, 2813, 110, 3529, 1286, - 116, 1023, 123, 185, 145, 3361, 585, 2132, 624, 2194, - 3464, 3476, 3421, 3462, 3499, 166, 2929, 643, 821, 822, - 823, 2928, 2543, 2192, 122, 89, 872, 873, 874, 875, - 3315, 2363, 883, 624, 1824, 2871, 3258, 3257, 1005, 2814, - 925, 769, 770, 1502, 3060, 1004, 156, 3061, 3490, 3268, - 621, 2259, 144, 2193, 3459, 3079, 80, 80, 80, 80, - 914, 915, 82, 3068, 3404, 2820, 654, 3415, 3411, 2187, - 3267, 163, 3078, 3100, 164, 2752, 624, 3344, 1863, 3440, - 2438, 2891, 1612, 625, 624, 2557, 2558, 1296, 2746, 2747, - 2084, 2085, 2395, 132, 133, 155, 154, 183, 606, 1318, - 1538, 2745, 1539, 2817, 2582, 2439, 1296, 3144, 2256, 2083, - 604, 2566, 1299, 1114, 1300, 1301, 2257, 2019, 2048, 1086, - 2753, 2868, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, - 1326, 1328, 1329, 870, 89, 89, 89, 89, 869, 3331, - 1054, 2521, 3421, 952, 2755, 1060, 1061, 1074, 2473, 2485, - 601, 2472, 1075, 2131, 2474, 2960, 1087, 2848, 1074, 616, - 2625, 1049, 2750, 1075, 2251, 2252, 2254, 2253, 2102, 2101, - 3482, 1073, 1080, 1072, 611, 2879, 2817, 1063, 638, 2766, - 2767, 2431, 2432, 2877, 614, 1800, 2751, 624, 1091, 1092, - 1292, 3483, 642, 1284, 624, 2853, 149, 130, 152, 137, - 129, 950, 150, 151, 636, 2568, 1535, 2528, 167, 1292, - 1743, 1742, 1479, 918, 625, 2169, 2553, 173, 138, 2757, - 2208, 2841, 3290, 1113, 3291, 3511, 1112, 1731, 1024, 2842, - 1089, 1090, 141, 139, 134, 135, 136, 140, 2213, 625, - 947, 1107, 624, 949, 131, 1088, 2849, 591, 1095, 593, - 607, 3457, 627, 142, 626, 597, 2570, 595, 599, 608, - 600, 1081, 594, 1056, 605, 3049, 1705, 596, 609, 610, - 613, 617, 618, 619, 615, 612, 2212, 603, 628, 2230, - 3048, 2231, 625, 2232, 2048, 184, 2765, 1093, 2233, 1030, - 625, 1029, 2850, 2214, 952, 1048, 2210, 1094, 2768, 3242, - 960, 928, 922, 920, 961, 990, 2046, 2047, 988, 123, - 1706, 2172, 1707, 3105, 2061, 961, 2659, 999, 2211, 998, - 3045, 2626, 166, 951, 997, 1482, 1103, 1332, 1105, 996, - 1070, 3530, 1076, 1077, 1078, 1079, 995, 994, 158, 993, - 952, 992, 944, 987, 1616, 1335, 1336, 1337, 1338, 946, - 945, 1000, 928, 922, 920, 1349, 1115, 1116, 1353, 1052, - 1332, 2768, 3488, 1084, 2257, 2478, 1102, 1104, 936, 1053, - 3523, 936, 936, 973, 2574, 958, 934, 3338, 163, 2519, - 972, 164, 1753, 2145, 1009, 1637, 1108, 2571, 3417, 913, - 972, 2787, 1343, 625, 1008, 2198, 2197, 1745, 950, 1749, - 625, 2399, 2401, 1277, 183, 1017, 2552, 979, 1610, 1609, - 1608, 2754, 2587, 2135, 2538, 2090, 153, 2555, 3416, 1291, - 1288, 1289, 1290, 1295, 1297, 1294, 2191, 1293, 1272, 2522, - 1534, 1750, 818, 3044, 818, 818, 1606, 1287, 1291, 1288, - 1289, 1290, 1295, 1297, 1294, 2271, 1293, 2961, 625, 589, - 1303, 991, 584, 2136, 989, 2487, 1287, 2189, 3327, 1051, - 2134, 1273, 1274, 1339, 2997, 2565, 2869, 1100, 2564, 3099, - 2429, 1101, 2046, 2047, 951, 2979, 2469, 146, 2434, 1358, - 147, 1106, 1333, 1334, 3008, 3009, 629, 1717, 1716, 1718, - 1719, 1720, 1636, 2371, 2137, 83, 1736, 1332, 3445, 1866, - 1526, 2818, 2819, 3077, 2133, 1099, 1434, 622, 978, 2542, - 159, 921, 1065, 118, 2822, 167, 3443, 171, 3417, 1016, - 951, 1329, 623, 2744, 173, 3449, 3450, 2577, 1097, 1887, - 896, 979, 2576, 2766, 2767, 2258, 1111, 2577, 3352, 1363, - 3444, 1364, 2576, 1888, 1002, 2611, 1503, 1505, 3416, 3040, - 1762, 1735, 2973, 2541, 88, 88, 88, 88, 179, 2209, - 1809, 1062, 921, 1069, 1746, 1083, 1071, 2400, 1059, 1469, - 1540, 3099, 2913, 1878, 2818, 2819, 1085, 113, 2511, 1878, - 1470, 2288, 1367, 1300, 1301, 1486, 2758, 2822, 3521, 1927, - 2762, 3522, 3491, 3520, 1301, 3140, 1836, 2761, 3015, 160, - 165, 162, 168, 169, 170, 172, 174, 175, 176, 177, - 1837, 1330, 1331, 1835, 3014, 178, 180, 181, 182, 2220, - 2216, 2218, 2219, 2217, 2221, 2222, 1826, 1828, 1829, 1485, - 979, 2763, 978, 1489, 2176, 1646, 2759, 982, 972, 880, - 2765, 2760, 984, 1302, 1470, 158, 985, 983, 1483, 114, - 1827, 2188, 2768, 1487, 1488, 1645, 1635, 98, 99, 2181, - 1476, 1302, 3484, 2186, 2184, 2315, 1463, 1440, 1441, 1442, - 1443, 1444, 1885, 2181, 3382, 1098, 990, 101, 1919, 1908, - 1909, 1910, 1911, 1921, 1912, 1913, 1914, 1926, 1922, 1915, - 1916, 1923, 1924, 1925, 1917, 1918, 1920, 1763, 2185, 1732, - 1055, 1733, 1643, 1518, 1734, 988, 1068, 1629, 1739, 2998, - 1737, 1738, 2183, 1740, 1741, 3320, 892, 3531, 1725, 3383, - 1613, 1614, 1615, 1324, 1325, 1327, 1326, 1328, 1329, 1678, - 3525, 978, 1681, 1015, 1683, 1484, 1502, 1012, 879, 3250, - 1604, 1507, 1622, 1883, 1700, 979, 1504, 2263, 2264, 2265, - 1723, 1682, 1884, 1984, 1473, 877, 3074, 1651, 3075, 1652, - 3321, 1654, 1656, 1712, 1641, 1660, 1662, 1664, 1666, 1668, - 1531, 1532, 2228, 1984, 2229, 2592, 1640, 1981, 1299, 979, - 1300, 1301, 1724, 1302, 3249, 3240, 1983, 1690, 1691, 3090, - 3089, 1605, 3022, 1696, 1697, 3021, 1299, 3011, 1300, 1301, - 816, 2795, 1639, 1639, 3532, 2613, 2783, 2053, 2054, 1620, - 1618, 2493, 1619, 2492, 1722, 1632, 2141, 159, 1726, 1766, - 821, 822, 823, 1710, 171, 1709, 1770, 1711, 1772, 1773, - 1774, 1775, 1708, 1698, 1490, 1779, 1692, 979, 1322, 1323, - 1324, 1325, 1327, 1326, 1328, 1329, 978, 1791, 1764, 1765, - 1689, 1688, 972, 975, 976, 1687, 936, 1686, 2594, 1302, - 969, 973, 1769, 1658, 1754, 179, 3005, 630, 1760, 1776, - 1777, 1778, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1304, - 978, 968, 1302, 1758, 2845, 1276, 972, 975, 976, 630, - 936, 1302, 1535, 122, 969, 973, 955, 954, 953, 3485, - 1611, 2476, 630, 2157, 2156, 3347, 160, 165, 162, 168, - 169, 170, 172, 174, 175, 176, 177, 1302, 1299, 1768, - 1300, 1301, 178, 180, 181, 182, 1511, 2604, 2603, 2602, - 2596, 1318, 2600, 2586, 2595, 3346, 2593, 3324, 978, 2276, - 3323, 2598, 1790, 982, 972, 1789, 3322, 1302, 984, 3245, - 2597, 3448, 985, 983, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1327, 1326, 1328, 1329, 3229, 3495, 1502, 2599, 2601, - 2155, 2154, 1512, 986, 3228, 3493, 1502, 1502, 1318, 3139, - 1805, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, - 1328, 1329, 2153, 2152, 1299, 3447, 1300, 1301, 1840, 1861, - 1861, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, - 1328, 1329, 1859, 1859, 1862, 2420, 3510, 1299, 3137, 1300, - 1301, 2278, 3086, 1881, 3472, 1502, 1299, 1882, 1300, 1301, - 1468, 2277, 39, 1320, 1321, 1322, 1323, 1324, 1325, 1327, - 1326, 1328, 1329, 1830, 1298, 1502, 1318, 2325, 1467, 1314, - 1466, 1315, 1299, 3019, 1300, 1301, 1832, 1298, 1502, 2420, - 3410, 1945, 2420, 3390, 1343, 1316, 1330, 1331, 1313, 1319, - 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, - 104, 1879, 1299, 104, 1300, 1301, 2420, 3386, 3340, 1977, - 3004, 103, 2854, 102, 103, 1318, 102, 1820, 1821, 1822, - 1823, 95, 97, 2851, 1469, 79, 1808, 1833, 97, 1806, - 1797, 1798, 96, 2786, 2006, 1470, 1807, 2327, 1319, 1320, - 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 95, - 2785, 1503, 2013, 3373, 1502, 3058, 3337, 1989, 1838, 2502, - 96, 3253, 1502, 2420, 3241, 3276, 1867, 1868, 3058, 1502, - 3275, 1870, 2490, 909, 909, 1875, 2420, 3056, 1865, 1880, - 1465, 1502, 1980, 2203, 1502, 2037, 2202, 1502, 2181, 1502, - 2977, 1502, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, - 1901, 1902, 1302, 2336, 1502, 3233, 1928, 1929, 1930, 1931, - 1932, 1933, 1935, 2285, 1940, 1502, 1942, 1943, 1944, 2043, - 1946, 1947, 1948, 2025, 1954, 1955, 1956, 1957, 1958, 1959, - 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, - 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1302, 1978, 1989, - 1985, 1986, 909, 97, 909, 909, 909, 909, 909, 2099, - 2776, 2775, 98, 99, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 1991, 2007, 2008, 2009, 2010, 2011, 2030, 1793, - 2031, 1759, 98, 99, 1990, 2142, 2284, 1994, 1995, 1721, - 1302, 2772, 2773, 2036, 2772, 2771, 3232, 1939, 2444, 1502, - 2257, 2551, 1302, 2071, 1601, 2532, 2094, 1950, 1515, 2525, - 2526, 909, 1502, 2108, 2109, 2110, 2111, 893, 2420, 2419, - 2024, 2281, 1502, 2075, 2103, 2093, 2104, 2105, 2106, 2107, - 1713, 3427, 1502, 2049, 2050, 1864, 1502, 1299, 1703, 1300, - 1301, 1699, 2114, 2115, 2116, 2117, 1695, 2038, 1694, 1872, - 1874, 2012, 2097, 1889, 1890, 1891, 1892, 2170, 1693, 2088, - 2124, 1601, 1600, 926, 1991, 2130, 2056, 1903, 1302, 2081, - 2080, 1546, 1545, 2079, 1514, 2014, 2058, 2096, 2095, 1302, - 1513, 1950, 1299, 1302, 1300, 1301, 3425, 1502, 2167, 1109, - 2436, 3066, 1302, 927, 2323, 2529, 1302, 2465, 2465, 2507, - 2436, 2098, 1839, 2972, 1841, 1842, 1843, 1844, 1845, 1846, - 1847, 1848, 1849, 1850, 1851, 1852, 1853, 103, 2126, 2140, - 2125, 2709, 2120, 2121, 1302, 1299, 1298, 1300, 1301, 2139, - 1993, 2143, 2972, 1996, 1997, 2974, 2151, 1299, 2739, 1300, - 1301, 2195, 2175, 2182, 2443, 2178, 3378, 2179, 2257, 3351, - 2420, 2444, 3423, 1502, 2933, 2125, 1302, 2177, 2174, 2173, - 2466, 2466, 2444, 3299, 1502, 1318, 980, 2270, 1502, 2774, - 2468, 2257, 2972, 2199, 981, 2682, 3271, 2200, 2201, 2196, - 3297, 1502, 2082, 1941, 1639, 2281, 1298, 2035, 1319, 1320, - 1321, 1322, 1323, 1324, 1325, 1327, 1326, 1328, 1329, 2444, - 1302, 2181, 2336, 1299, 2312, 1300, 1301, 2311, 3294, 1502, - 2181, 2164, 2051, 1506, 1299, 1302, 1300, 1301, 1299, 2206, - 1300, 1301, 2015, 2243, 2244, 1864, 1810, 1299, 2246, 1300, - 1301, 1299, 1748, 1300, 1301, 1533, 2416, 2247, 963, 2268, - 3280, 1502, 962, 882, 1302, 89, 2274, 3453, 3393, 3264, - 2279, 97, 1509, 2282, 3230, 2283, 3151, 3039, 3036, 1299, - 2290, 1300, 1301, 3017, 2292, 2293, 2294, 2896, 2895, 1603, - 2123, 2843, 2236, 2800, 2300, 2301, 2302, 2303, 2304, 2305, - 2306, 2307, 2308, 2309, 2948, 1502, 1302, 2796, 2533, 2275, - 2119, 1299, 2113, 1300, 1301, 2112, 1728, 1634, 1832, 2941, - 1502, 1630, 1599, 115, 2798, 1302, 2273, 2498, 2499, 2281, - 2316, 2317, 2318, 2319, 2320, 1054, 2322, 2847, 2984, 2985, - 2324, 89, 1302, 3265, 2329, 2330, 2138, 2331, 2938, 1502, - 2334, 2255, 2335, 1302, 2028, 1299, 2338, 1300, 1301, 1795, - 2342, 2886, 3505, 3503, 2347, 2348, 2349, 2350, 1302, 1833, - 1299, 2266, 1300, 1301, 3479, 2499, 1302, 2361, 3359, 2364, - 2365, 1302, 3023, 3285, 2987, 2792, 1302, 2367, 2369, 2791, - 2936, 1502, 2790, 1302, 2372, 2373, 2374, 2375, 2376, 1299, - 1302, 1300, 1301, 1674, 1302, 2383, 2384, 2709, 2385, 2901, - 1502, 2388, 2390, 2037, 2287, 2392, 2512, 2289, 2237, 2990, - 2989, 1796, 1302, 2728, 1991, 2404, 2727, 1502, 2296, 2297, - 2298, 2299, 1861, 3024, 3025, 3026, 1990, 2884, 1502, 3355, - 1510, 1299, 2731, 1300, 1301, 1859, 2405, 2732, 2733, 1302, - 2453, 2454, 2391, 1502, 1675, 1676, 1677, 3266, 1302, 2034, - 1299, 1502, 1300, 1301, 1302, 2389, 1502, 2042, 2978, 2321, - 2368, 1502, 2687, 1358, 2403, 2686, 2729, 1299, 3486, 1300, - 1301, 2730, 3319, 3130, 2351, 1502, 1302, 3132, 1299, 3335, - 1300, 1301, 2699, 2701, 2696, 3121, 1302, 3120, 2968, 2770, - 2440, 2702, 2406, 1299, 2408, 1300, 1301, 3237, 1747, 2295, - 868, 1299, 1302, 1300, 1301, 2483, 1299, 2421, 1300, 1301, - 1302, 1299, 1019, 1300, 1301, 1302, 2310, 3027, 1299, 2503, - 1300, 1301, 2965, 2343, 1502, 1299, 897, 1300, 1301, 1299, - 2964, 1300, 1301, 3041, 898, 3119, 1476, 2393, 2992, 1887, - 1018, 2459, 39, 2430, 2417, 95, 95, 1299, 1275, 1300, - 1301, 2458, 97, 1888, 2460, 2862, 96, 96, 2413, 2498, - 2943, 2580, 1470, 2418, 3028, 3029, 3030, 2539, 2486, 2488, - 2939, 2433, 2524, 1302, 1299, 2463, 1300, 1301, 1302, 123, - 1518, 2970, 2479, 1299, 1302, 1300, 1301, 2494, 1302, 1299, - 97, 1300, 1301, 3517, 2911, 2467, 3432, 1302, 2788, 2907, - 2470, 2053, 2054, 2130, 2240, 3336, 2477, 1302, 3260, 2769, - 2480, 1299, 1302, 1300, 1301, 2457, 2039, 1302, 905, 906, - 2548, 1299, 1302, 1300, 1301, 2501, 2227, 2491, 1302, 1670, - 2504, 2505, 2950, 2267, 1302, 2269, 2685, 1299, 2226, 1300, - 1301, 2500, 2261, 1302, 2684, 1299, 2225, 1300, 1301, 2546, - 1299, 2224, 1300, 1301, 102, 2509, 2223, 2893, 3307, 2513, - 2514, 2515, 2892, 3306, 3288, 3138, 3136, 2545, 2889, 2508, - 3135, 104, 2387, 1622, 3128, 3037, 1671, 1672, 1673, 2969, - 2967, 2386, 103, 2589, 102, 2801, 2615, 2616, 2617, 2618, - 2619, 2382, 2165, 2534, 2535, 103, 2381, 1617, 1302, 1500, - 1496, 2380, 2544, 904, 3127, 2624, 2379, 2958, 1299, 1302, - 1300, 1301, 2378, 1299, 1497, 1300, 1301, 104, 2377, 1299, - 2436, 1300, 1301, 1299, 3506, 1300, 1301, 2366, 103, 3109, - 2605, 2569, 1299, 2416, 1300, 1301, 2627, 2572, 2588, 2032, - 2033, 1499, 1299, 1498, 1300, 1301, 2620, 1299, 2578, 1300, - 1301, 2579, 1299, 2313, 1300, 1301, 2026, 1299, 1527, 1300, - 1301, 1500, 1496, 1299, 1519, 1300, 1301, 3507, 3506, 1299, - 3507, 1300, 1301, 108, 109, 2606, 1497, 3325, 1299, 2608, - 1300, 1301, 2360, 2449, 2452, 2453, 2454, 2450, 3003, 2451, - 2455, 2585, 895, 2359, 3, 91, 2661, 1, 1744, 3007, - 3442, 1493, 1494, 1499, 2666, 1498, 602, 2016, 1474, 2663, - 909, 3480, 104, 2609, 2610, 3438, 3439, 2612, 1714, 1704, - 2614, 3069, 2629, 103, 1951, 102, 3261, 2804, 1980, 1302, - 1980, 2635, 2718, 1299, 97, 1300, 1301, 2171, 3035, 2128, - 2621, 2622, 2623, 971, 1299, 148, 1300, 1301, 2091, 2092, - 2736, 3406, 2628, 112, 929, 2630, 2631, 2632, 111, 974, - 1082, 2633, 2634, 2166, 3059, 1954, 2636, 2666, 2484, 2638, - 2689, 2100, 2640, 2641, 2642, 2643, 2662, 2721, 2664, 2738, - 2644, 1954, 1954, 1954, 1954, 1954, 2677, 1552, 2690, 1550, - 2712, 1551, 1549, 2607, 1554, 2712, 1553, 2870, 2071, 909, - 2314, 2912, 2681, 1799, 2688, 637, 2667, 2668, 2669, 2670, - 2671, 2672, 2715, 2358, 2456, 2673, 2674, 631, 2675, 186, - 2676, 2703, 2704, 884, 1541, 2691, 2071, 2071, 2071, 2071, - 2071, 2665, 2722, 886, 885, 2725, 2740, 2706, 1520, 2741, - 2824, 2734, 2720, 2925, 2723, 2724, 2071, 2726, 1013, 2071, - 592, 2777, 2637, 2204, 2639, 2742, 2678, 2679, 2680, 598, - 1350, 98, 99, 1794, 1299, 2707, 1300, 1301, 2748, 2683, - 2650, 2651, 2652, 2653, 2471, 924, 2864, 2780, 2778, 2779, - 2803, 2645, 2646, 2647, 2648, 2649, 916, 1302, 2027, 2407, - 2737, 1302, 2781, 2782, 2832, 2802, 2881, 2882, 2883, 2866, - 2885, 2887, 2831, 923, 802, 3238, 2717, 2130, 2962, 2695, - 2823, 2697, 2423, 2700, 2894, 2838, 1302, 1758, 2693, 2898, - 2899, 2900, 2902, 2903, 2904, 2905, 1302, 3318, 2906, 3129, - 2908, 2909, 2910, 3391, 2481, 2914, 2915, 2916, 2917, 2918, - 2919, 2920, 2921, 2922, 2923, 1516, 2855, 2860, 2861, 2858, - 2799, 2857, 2932, 2930, 2865, 2286, 2934, 189, 2935, 2937, - 189, 2940, 2942, 635, 2944, 2945, 2946, 2947, 641, 2590, - 2875, 2357, 2953, 2872, 2873, 2356, 2874, 1876, 189, 2876, - 1340, 2878, 1302, 2880, 2068, 3104, 1825, 2927, 659, 1302, - 658, 656, 2409, 189, 2931, 2437, 1305, 806, 2397, 1528, - 2355, 1302, 2448, 2446, 2445, 1302, 184, 2975, 2976, 1302, - 2354, 2980, 2238, 2076, 2986, 2982, 1302, 3434, 641, 189, - 641, 2070, 1299, 2066, 1300, 1301, 1299, 2415, 1300, 1301, - 123, 1302, 757, 756, 668, 660, 652, 755, 1302, 754, - 3000, 2830, 2888, 166, 2956, 1302, 2951, 2952, 2954, 3418, - 2554, 1299, 2844, 1300, 1301, 2556, 2897, 2482, 2959, 2840, - 2966, 1299, 1283, 1300, 1301, 1492, 2353, 646, 942, 2867, - 3342, 2971, 2260, 2352, 2890, 1491, 1906, 2981, 1907, 3349, - 2812, 1302, 3053, 2793, 2988, 2346, 2530, 2158, 65, 2345, - 2991, 43, 3313, 2344, 1302, 3379, 2995, 2996, 2993, 163, - 2341, 753, 164, 1302, 750, 3106, 2832, 3042, 3043, 3001, - 3002, 2994, 1302, 3107, 2831, 2340, 3057, 1299, 1302, 1300, - 1301, 2071, 2339, 3108, 1299, 183, 1300, 1301, 2657, 2337, - 2658, 3362, 3363, 3063, 3064, 3018, 1299, 3020, 1300, 1301, - 1299, 749, 1300, 1301, 1299, 3364, 1300, 1301, 1934, 1302, - 1280, 1299, 3455, 1300, 1301, 1801, 3012, 3013, 3076, 90, - 34, 3080, 33, 32, 31, 2333, 1299, 30, 1300, 1301, - 25, 24, 23, 1299, 22, 1300, 1301, 21, 2332, 27, - 1299, 20, 1300, 1301, 19, 18, 2815, 2328, 3091, 3475, - 3516, 117, 52, 49, 3065, 47, 2326, 125, 124, 50, - 46, 1057, 2291, 3095, 44, 29, 28, 17, 3046, 16, - 15, 14, 3050, 3051, 3052, 3103, 1299, 13, 1300, 1301, - 12, 11, 7, 3110, 6, 3038, 37, 36, 35, 1299, - 1804, 1300, 1301, 2280, 26, 4, 167, 3081, 1299, 2517, - 1300, 1301, 2160, 0, 0, 173, 0, 1299, 0, 1300, - 1301, 0, 0, 1299, 0, 1300, 1301, 0, 3062, 0, - 0, 2449, 2452, 2453, 2454, 2450, 3102, 2451, 2455, 0, - 3124, 2984, 2985, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1299, 0, 1300, 1301, 1861, 0, - 0, 0, 3085, 0, 0, 0, 0, 0, 0, 0, - 0, 1859, 3153, 0, 0, 0, 3145, 3125, 0, 0, - 3134, 3133, 0, 3082, 0, 3083, 3147, 3149, 3084, 3141, - 0, 3087, 3088, 3143, 2712, 0, 0, 0, 0, 0, - 3092, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3094, 0, 0, 0, 3252, 0, 3239, 2715, 3157, 3154, - 3155, 2715, 0, 3259, 817, 0, 0, 81, 39, 0, - 0, 0, 3111, 0, 0, 3112, 158, 3113, 3114, 0, - 3115, 0, 3116, 3269, 3270, 0, 3272, 3117, 3273, 3274, - 0, 3236, 3235, 3277, 3278, 3279, 3234, 3281, 3284, 3282, - 3283, 0, 0, 3251, 0, 3256, 0, 1861, 0, 3255, - 0, 3263, 3142, 3293, 3295, 3296, 3298, 3300, 3301, 3303, - 1859, 3286, 0, 3150, 0, 0, 3152, 0, 3243, 0, - 3093, 0, 0, 0, 0, 0, 0, 0, 3156, 0, - 0, 0, 0, 0, 881, 0, 81, 0, 0, 0, - 3287, 3246, 3247, 3248, 0, 0, 3231, 3333, 3289, 0, - 0, 0, 3292, 0, 0, 881, 0, 0, 3329, 0, - 3311, 3308, 3309, 0, 3310, 0, 0, 0, 0, 0, - 941, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3326, 0, 0, 0, 0, 0, 0, 189, - 3332, 189, 0, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2715, 0, 0, - 0, 0, 0, 0, 0, 641, 0, 641, 641, 0, - 0, 0, 0, 0, 0, 0, 0, 3334, 159, 0, - 0, 0, 0, 0, 0, 171, 0, 641, 189, 0, - 0, 3328, 0, 0, 0, 0, 3316, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3353, 0, 3358, 0, 1345, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3348, 179, 3345, 0, 0, - 3350, 0, 0, 3374, 0, 0, 0, 0, 0, 3375, - 3376, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3341, 0, 0, 0, 0, - 3368, 3387, 0, 3369, 0, 0, 0, 160, 165, 162, - 168, 169, 170, 172, 174, 175, 176, 177, 0, 0, - 3377, 3317, 39, 178, 180, 181, 182, 3412, 3413, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3384, - 0, 3422, 3424, 3426, 3419, 3420, 3392, 3394, 0, 3397, - 3405, 3402, 3399, 3398, 3396, 3401, 3400, 2712, 0, 0, - 0, 0, 0, 0, 3263, 3407, 3454, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3430, 0, 0, 0, - 3356, 0, 0, 0, 3433, 3451, 3441, 3446, 0, 0, - 0, 0, 0, 3460, 0, 3419, 3420, 1345, 39, 0, - 0, 0, 0, 3370, 3458, 3471, 3371, 0, 3372, 0, - 0, 0, 0, 1353, 3389, 0, 0, 0, 0, 0, - 0, 0, 3469, 0, 3474, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3492, 3494, 3496, - 3487, 0, 0, 3489, 0, 0, 0, 0, 0, 0, - 0, 1861, 0, 0, 189, 3498, 3497, 0, 641, 641, - 3504, 3502, 0, 0, 1859, 3501, 0, 0, 3515, 3512, - 0, 3419, 3420, 3357, 189, 3500, 3518, 0, 0, 0, - 0, 3367, 3526, 0, 3527, 3528, 3524, 0, 0, 0, - 0, 0, 0, 0, 641, 0, 0, 189, 0, 0, - 0, 0, 3452, 0, 0, 1861, 3535, 3536, 3283, 641, - 3534, 0, 0, 0, 0, 189, 0, 0, 1859, 3533, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3466, 0, 3467, 0, 3468, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, - 0, 641, 641, 0, 641, 0, 641, 641, 0, 641, - 641, 641, 641, 641, 641, 0, 0, 0, 0, 0, - 0, 0, 1345, 0, 0, 1345, 641, 1345, 189, 0, - 0, 0, 3513, 0, 3514, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 641, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, - 189, 0, 0, 0, 0, 1118, 0, 1118, 1118, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, + 1499, 3500, 3089, 3511, 3090, 811, 3088, 3322, 3406, 804, + 3469, 3427, 674, 3470, 2916, 3059, 2034, 1546, 803, 1852, + 3372, 654, 3395, 2838, 2083, 2741, 2748, 3306, 3254, 2798, + 5, 2803, 2800, 2014, 2799, 2797, 2802, 2801, 2789, 3046, + 3304, 2705, 1117, 2702, 875, 3118, 3294, 2354, 2388, 2818, + 2016, 2648, 2756, 2153, 656, 2817, 2703, 3123, 2427, 2706, + 2949, 2955, 2583, 764, 766, 2975, 684, 2038, 1506, 2820, + 2054, 765, 2700, 2690, 2414, 1976, 2941, 652, 1065, 2488, + 2057, 2487, 771, 2567, 2116, 2141, 2121, 930, 2489, 2844, + 770, 1000, 2519, 39, 2184, 2071, 2439, 1647, 2058, 157, + 38, 2406, 40, 2390, 1947, 1493, 1094, 2059, 1806, 899, + 2559, 898, 877, 1848, 2162, 143, 1867, 2140, 2046, 1973, + 2201, 2123, 2481, 958, 963, 1535, 2456, 1629, 1515, 2061, + 1473, 1355, 1119, 2420, 666, 1825, 1746, 1871, 649, 94, + 1283, 1636, 937, 1981, 964, 969, 2112, 966, 965, 98, + 1534, 934, 99, 2138, 916, 918, 889, 1750, 1728, 1520, + 1943, 1339, 1115, 1315, 10, 976, 886, 1982, 938, 79, + 879, 1600, 883, 1475, 661, 9, 8, 1108, 2039, 101, + 1755, 161, 884, 121, 885, 93, 119, 120, 126, 1595, + 127, 901, 1621, 1049, 911, 660, 1359, 3331, 887, 1363, + 2512, 92, 100, 78, 3501, 2155, 2156, 2157, 3357, 3047, + 2786, 2155, 2542, 2541, 87, 2510, 2199, 3039, 3453, 3002, + 2575, 1469, 906, 910, 89, 89, 820, 821, 822, 586, + 1713, 122, 2576, 892, 3358, 3093, 589, 1002, 931, 1880, + 3352, 902, 1946, 128, 908, 908, 623, 870, 1005, 3353, + 1019, 1020, 1021, 2808, 1024, 1025, 1026, 1027, 1813, 643, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 2, 979, 3093, + 893, 876, 629, 878, 89, 925, 1812, 956, 936, 926, + 1811, 648, 1500, 2242, 2011, 2012, 980, 1006, 1009, 1010, + 122, 955, 954, 1828, 184, 953, 952, 629, 1810, 2806, + 1809, 1808, 1786, 3448, 646, 900, 647, 2386, 1013, 105, + 106, 107, 3092, 110, 2686, 1300, 116, 644, 123, 185, + 145, 2188, 584, 947, 3521, 2812, 1284, 3457, 2532, 3353, + 1022, 166, 2652, 642, 2744, 3455, 2808, 820, 821, 822, + 3413, 623, 871, 872, 873, 874, 2416, 3468, 882, 2805, + 942, 3491, 3456, 2921, 2920, 3473, 3092, 2535, 122, 1284, + 3454, 2186, 156, 3307, 2355, 2187, 1818, 2863, 144, 3250, + 924, 768, 769, 3249, 1004, 1003, 913, 914, 89, 2745, + 924, 768, 769, 620, 3482, 3052, 3407, 163, 3053, 80, + 164, 80, 2806, 2132, 3260, 80, 3451, 2251, 3071, 3336, + 3060, 3396, 3403, 2747, 2181, 3259, 623, 1857, 3070, 132, + 133, 155, 154, 183, 623, 2430, 2126, 3432, 2812, 2883, + 1610, 2742, 653, 2387, 623, 2549, 2550, 2737, 2738, 2739, + 2574, 605, 80, 1294, 2248, 82, 2809, 2077, 2758, 2759, + 2431, 624, 2558, 603, 3136, 2743, 2078, 2079, 2042, 1112, + 1297, 2465, 1298, 1299, 2464, 1072, 1536, 2466, 1537, 1084, + 1073, 3413, 2249, 1089, 1090, 869, 1294, 89, 1071, 89, + 1070, 1316, 951, 89, 1058, 1059, 868, 3323, 2749, 1072, + 1101, 2477, 1103, 600, 1073, 1085, 1052, 1078, 2840, 2513, + 2013, 623, 615, 2860, 1317, 1318, 1319, 1320, 1321, 1322, + 1323, 1325, 1324, 1326, 1327, 2617, 1061, 610, 623, 1048, + 89, 2871, 149, 130, 152, 137, 129, 613, 150, 151, + 1100, 1102, 2096, 2095, 167, 2423, 2424, 2869, 1794, 2809, + 949, 2952, 1023, 173, 138, 1290, 637, 641, 1282, 635, + 2243, 2244, 2246, 2245, 3474, 2757, 624, 2560, 141, 139, + 134, 135, 136, 140, 1533, 2845, 1477, 2760, 1111, 2520, + 131, 1091, 2125, 2163, 3282, 3475, 3283, 2545, 1290, 142, + 2833, 1092, 3503, 1086, 2202, 1079, 2841, 1703, 2834, 590, + 1729, 592, 606, 2207, 626, 1105, 625, 596, 1110, 594, + 598, 607, 599, 917, 593, 1054, 604, 1087, 1088, 595, + 608, 609, 612, 616, 617, 618, 614, 611, 1093, 602, + 627, 624, 2214, 2210, 2212, 2213, 2211, 2215, 2216, 624, + 1098, 1704, 2562, 1705, 1099, 3041, 3040, 2842, 3449, 624, + 623, 2225, 2204, 1029, 1104, 2040, 2041, 2206, 2208, 1028, + 951, 1047, 2222, 3234, 2223, 3037, 2224, 1480, 989, 2166, + 959, 950, 3097, 158, 960, 971, 2055, 960, 1097, 1068, + 998, 1074, 1075, 1076, 1077, 2618, 184, 1734, 997, 2746, + 996, 2651, 2042, 1614, 1333, 1334, 1335, 1336, 987, 2205, + 995, 927, 921, 919, 1347, 1113, 1114, 1351, 994, 993, + 123, 927, 921, 919, 992, 184, 624, 991, 986, 999, + 2760, 1330, 1330, 166, 935, 1051, 1106, 3330, 935, 972, + 2511, 3522, 933, 624, 3480, 3409, 1008, 935, 1747, 123, + 2779, 912, 971, 3515, 1341, 978, 1007, 2139, 2563, 2192, + 2191, 153, 166, 957, 1082, 2249, 1743, 1275, 1635, 1016, + 1015, 2544, 1608, 1607, 1606, 3408, 2470, 1056, 2530, 1062, + 1744, 1604, 1064, 817, 817, 588, 2547, 583, 3036, 163, + 3319, 2183, 164, 2185, 1289, 1286, 1287, 1288, 1293, 1295, + 1292, 2989, 1291, 2971, 1271, 1272, 2514, 1532, 2461, 1301, + 2566, 2426, 1285, 2363, 2479, 183, 2579, 2263, 163, 1331, + 1332, 164, 146, 1337, 990, 147, 1270, 1289, 1286, 1287, + 1288, 1293, 1295, 1292, 1050, 1291, 1277, 2557, 1356, 3091, + 2556, 1860, 1524, 817, 183, 1285, 3000, 3001, 628, 950, + 1432, 2129, 2953, 2421, 988, 159, 977, 1715, 1714, 1716, + 1717, 1718, 171, 2810, 2811, 624, 3409, 2861, 3069, 621, + 946, 1733, 1063, 948, 2750, 1634, 2814, 2084, 2754, 2534, + 1330, 978, 1327, 3091, 622, 2753, 118, 2391, 2393, 2040, + 2041, 2130, 2736, 895, 1109, 113, 3408, 83, 2128, 978, + 1361, 3344, 1362, 179, 1095, 1501, 1503, 1365, 1001, 1737, + 2250, 1735, 1736, 1756, 1738, 1739, 88, 3032, 88, 2755, + 1881, 920, 88, 2533, 2751, 978, 167, 1467, 2569, 2752, + 2965, 920, 2131, 2568, 1882, 173, 2203, 1468, 1060, 2905, + 1803, 978, 2127, 1484, 160, 165, 162, 168, 169, 170, + 172, 174, 175, 176, 177, 167, 2810, 2811, 1740, 88, + 178, 180, 181, 182, 173, 1057, 1081, 114, 1069, 2814, + 951, 3513, 943, 2569, 3514, 1538, 3512, 1083, 2568, 945, + 944, 2603, 977, 1067, 1014, 2182, 1872, 1483, 1011, 2503, + 3483, 1487, 1438, 1439, 1440, 1441, 1442, 879, 1298, 1299, + 977, 1468, 3437, 1299, 3132, 981, 971, 1481, 1300, 1485, + 983, 3007, 1486, 98, 984, 982, 99, 3006, 1474, 1730, + 3435, 1731, 2170, 1872, 1732, 2280, 977, 1461, 949, 3441, + 3442, 1644, 971, 974, 975, 985, 935, 2758, 2759, 2180, + 968, 972, 977, 101, 3436, 1300, 1643, 1633, 971, 974, + 975, 1096, 935, 2392, 2178, 158, 968, 972, 2175, 989, + 1757, 967, 1516, 1879, 1641, 987, 1830, 1611, 1612, 1613, + 2255, 2256, 2257, 1053, 1627, 891, 1820, 1822, 1823, 2584, + 1831, 1328, 1329, 1829, 158, 3476, 2175, 3374, 3312, 3517, + 1502, 1676, 2990, 978, 1679, 3242, 1681, 2179, 1620, 1602, + 1821, 876, 3241, 1698, 1649, 1528, 1650, 1505, 1652, 1654, + 878, 1482, 1658, 1660, 1662, 1664, 1666, 3066, 1680, 3067, + 3523, 3232, 3082, 1545, 1639, 2177, 1066, 1300, 1529, 1530, + 1500, 1300, 3375, 3313, 1688, 1689, 3081, 1638, 2315, 1300, + 1694, 1695, 3014, 1297, 2757, 1298, 1299, 1471, 3013, 950, + 1723, 1300, 2605, 2307, 3003, 1603, 2760, 820, 821, 822, + 1637, 1637, 2586, 1322, 1323, 1325, 1324, 1326, 1327, 2787, + 1618, 2775, 1616, 2485, 1617, 2047, 2048, 1760, 1630, 1488, + 1297, 2484, 1298, 1299, 1764, 1500, 1766, 1767, 1768, 1769, + 1721, 2135, 1877, 1773, 977, 1710, 1724, 1758, 1759, 981, + 971, 1878, 1708, 1707, 983, 1785, 1682, 3524, 984, 982, + 1706, 1763, 1500, 1696, 1722, 1684, 1752, 1748, 1770, 1771, + 1772, 1690, 1687, 3487, 1500, 1978, 1754, 159, 1686, 1975, + 2596, 2595, 2594, 2588, 171, 2592, 1685, 2587, 1977, 2585, + 1656, 1727, 2997, 629, 2590, 1609, 1978, 2837, 1274, 1300, + 2468, 629, 815, 2589, 1720, 122, 159, 954, 629, 1709, + 953, 952, 1297, 171, 1298, 1299, 1297, 1533, 1298, 1299, + 3477, 2591, 2593, 1761, 1297, 179, 1298, 1299, 1300, 3339, + 1765, 1762, 1316, 1300, 2578, 3338, 1297, 1783, 1298, 1299, + 3316, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 2151, 2150, + 2268, 3315, 2878, 1784, 179, 1317, 1318, 1319, 1320, 1321, + 1322, 1323, 1325, 1324, 1326, 1327, 160, 165, 162, 168, + 169, 170, 172, 174, 175, 176, 177, 2149, 2148, 1799, + 2147, 2146, 178, 180, 181, 182, 1320, 1321, 1322, 1323, + 1325, 1324, 1326, 1327, 3314, 160, 165, 162, 168, 169, + 170, 172, 174, 175, 176, 177, 1834, 1855, 1855, 1509, + 3237, 178, 180, 181, 182, 1300, 3221, 1316, 1500, 2262, + 1853, 1853, 1856, 1304, 1305, 1306, 1307, 1308, 1309, 1310, + 1302, 1875, 2412, 3502, 1297, 1876, 1298, 1299, 3220, 39, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, + 1327, 1824, 3131, 3129, 89, 1510, 3078, 1316, 3464, 1500, + 1312, 104, 1313, 1297, 1826, 1298, 1299, 1466, 1297, 1939, + 1298, 1299, 103, 1465, 102, 1341, 1314, 1328, 1329, 1311, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, + 1327, 1464, 1873, 1296, 1500, 2412, 3402, 1971, 95, 3485, + 1500, 1500, 1791, 1792, 3440, 1814, 1815, 1816, 1817, 96, + 3011, 1467, 95, 1802, 2996, 79, 1827, 2412, 3382, 97, + 2846, 1468, 2000, 96, 1800, 1801, 1807, 1317, 1318, 1319, + 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, 2843, 1501, + 2007, 2778, 1500, 2412, 3378, 1983, 1832, 2317, 3439, 2777, + 1297, 2494, 1298, 1299, 1861, 1862, 2482, 1296, 1500, 1864, + 1463, 908, 908, 1869, 1500, 3332, 1300, 1874, 3365, 1500, + 1974, 2197, 1859, 2031, 3050, 3329, 3245, 1500, 1500, 3268, + 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, + 1866, 1868, 2412, 3233, 1922, 1923, 1924, 1925, 1926, 1927, + 1929, 2196, 1934, 1300, 1936, 1937, 1938, 1300, 1940, 1941, + 1942, 2037, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, + 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, + 1966, 1967, 1968, 1969, 1970, 1985, 1972, 1983, 1979, 1980, + 908, 2093, 908, 908, 908, 908, 908, 98, 1988, 1989, + 99, 3478, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 1984, 2001, 2002, 2003, 2004, 2005, 2024, 98, 2025, 2030, + 99, 1987, 2019, 2136, 1990, 1991, 1787, 1883, 1884, 1885, + 1886, 3050, 1500, 3267, 1933, 2412, 3048, 3419, 1500, 3225, + 2065, 1897, 3327, 3224, 1944, 2102, 2103, 2104, 2105, 908, + 1753, 1297, 2088, 1298, 1299, 2175, 1500, 2018, 2408, 2069, + 2969, 1500, 892, 2087, 2328, 1500, 1300, 2768, 2767, 3058, + 1300, 2043, 2044, 97, 2006, 2764, 2765, 1985, 2029, 2764, + 2763, 2032, 2436, 1500, 2249, 2543, 1599, 2524, 1297, 2091, + 1298, 1299, 1297, 97, 1298, 1299, 1719, 2082, 2164, 2118, + 1711, 2050, 2052, 2075, 2124, 1701, 2074, 2073, 1300, 2090, + 1697, 2049, 2008, 2089, 1300, 2517, 2518, 2428, 1944, 2053, + 1693, 2056, 2412, 2411, 1807, 1692, 925, 2457, 1300, 1691, + 926, 2273, 1300, 2521, 2161, 1921, 2273, 1500, 2499, 2134, + 1858, 1500, 2428, 2097, 1511, 2098, 2099, 2100, 2101, 1107, + 3417, 1500, 1500, 2092, 3415, 1500, 2120, 2964, 2114, 2115, + 1296, 2108, 2109, 2110, 2111, 2435, 1833, 2119, 1835, 1836, + 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, + 1847, 2169, 2137, 2145, 2172, 2966, 2173, 2189, 2133, 2436, + 2458, 1300, 3263, 979, 3370, 2168, 2167, 2171, 3291, 1500, + 2460, 1297, 2119, 1298, 1299, 1297, 2176, 1298, 1299, 1599, + 1598, 980, 3289, 1500, 2964, 2190, 3286, 1500, 2193, 2457, + 2436, 1637, 2194, 2195, 1913, 1902, 1903, 1904, 1905, 1915, + 1906, 1907, 1908, 1920, 1916, 1909, 1910, 1917, 1918, 1919, + 1911, 1912, 1914, 1297, 3343, 1298, 1299, 1935, 2701, 1297, + 2731, 1298, 1299, 1544, 1543, 2200, 103, 2235, 2236, 2964, + 2249, 104, 2238, 1297, 2175, 1298, 1299, 1297, 1300, 1298, + 1299, 2239, 103, 2260, 102, 3272, 1500, 2412, 2436, 1300, + 2266, 2925, 2458, 97, 2271, 2766, 2674, 2274, 2076, 2275, + 2277, 2273, 2249, 2328, 2282, 2304, 2303, 2175, 2284, 2285, + 2286, 2228, 2158, 2045, 1504, 2009, 1858, 1804, 2292, 2293, + 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 1742, 1531, + 1807, 881, 962, 2267, 3015, 1296, 1297, 2209, 1298, 1299, + 961, 3445, 1826, 3385, 3256, 1672, 2226, 2227, 1507, 3222, + 2231, 3143, 1500, 2265, 2308, 2309, 2310, 2311, 2312, 2234, + 2314, 2790, 2940, 1500, 2316, 3031, 2237, 3028, 2321, 2322, + 3009, 2323, 2982, 2276, 2326, 2247, 2327, 2888, 2887, 1601, + 2330, 2491, 2117, 1300, 2334, 3016, 3017, 3018, 2339, 2340, + 2341, 2342, 2240, 2835, 1827, 2258, 1673, 1674, 1675, 2792, + 2981, 2353, 1300, 2356, 2357, 2788, 2525, 1300, 2113, 89, + 2107, 2359, 2361, 1297, 2106, 1298, 1299, 1726, 2364, 2365, + 2366, 2367, 2368, 1985, 1297, 1300, 1298, 1299, 1632, 2375, + 2376, 1628, 2377, 1597, 1316, 2380, 2382, 2031, 2279, 2384, + 115, 2281, 1052, 2976, 2977, 1300, 2839, 3019, 1984, 2396, + 1316, 3257, 2288, 2289, 2290, 2291, 1855, 1317, 1318, 1319, + 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, 3229, 1853, + 2397, 2132, 2319, 1317, 1318, 1319, 1320, 1321, 1322, 1323, + 1325, 1324, 1326, 1327, 1300, 2022, 2933, 1500, 1300, 3497, + 2313, 2930, 1500, 1300, 3020, 3021, 3022, 1356, 2395, 1318, + 1319, 1320, 1321, 1322, 1323, 1325, 1324, 1326, 1327, 2928, + 1500, 2490, 3495, 3471, 1789, 2432, 3351, 3277, 1297, 1300, + 1298, 1299, 2979, 2784, 1300, 2783, 2398, 2782, 2400, 2893, + 1500, 2701, 2287, 1300, 2504, 2413, 2229, 1297, 2720, 1298, + 1299, 2723, 1297, 1668, 1298, 1299, 2724, 1508, 2719, 2302, + 2441, 2444, 2445, 2446, 2442, 3347, 2443, 2447, 2270, 2491, + 1297, 1300, 1298, 1299, 3258, 1300, 2409, 2036, 2269, 1474, + 2385, 1300, 2876, 1500, 2451, 39, 1790, 2383, 1500, 1300, + 1297, 2721, 1298, 1299, 2450, 2028, 2722, 2452, 2970, 1513, + 1669, 1670, 1671, 2679, 1468, 1300, 2478, 2480, 2410, 2405, + 2678, 3311, 3122, 2984, 2425, 2422, 2516, 2455, 2381, 1500, + 1300, 3124, 2960, 3113, 1516, 3112, 2471, 2360, 1500, 1297, + 1300, 1298, 1299, 1297, 2688, 1298, 1299, 2459, 1297, 2957, + 1298, 1299, 2462, 2725, 1741, 2445, 2446, 2956, 2124, 2469, + 867, 1300, 2762, 2472, 2475, 2343, 1500, 2493, 2540, 2335, + 1500, 1300, 2496, 2497, 1297, 1512, 1298, 1299, 1018, 1297, + 2483, 1298, 1299, 3111, 3033, 1300, 2691, 2693, 1297, 1300, + 1298, 1299, 2454, 896, 2492, 2694, 2495, 1017, 2854, 2935, + 1300, 897, 2490, 1881, 1300, 2500, 2538, 2572, 2501, 1300, + 2505, 2506, 2507, 2259, 2931, 2261, 1297, 1882, 1298, 1299, + 1297, 95, 1298, 1299, 1620, 2486, 1297, 1273, 1298, 1299, + 3509, 2531, 96, 2537, 1297, 2581, 1298, 1299, 2607, 2608, + 2609, 2610, 2611, 123, 2962, 2903, 2047, 2048, 2526, 2527, + 1297, 97, 1298, 1299, 2536, 2899, 2780, 2616, 2232, 3424, + 3328, 1300, 2502, 3252, 2761, 1297, 2449, 1298, 1299, 2885, + 1498, 1494, 95, 2884, 2033, 1297, 2221, 1298, 1299, 97, + 2220, 2561, 2597, 96, 2881, 1495, 2219, 2564, 2379, 2218, + 2580, 2570, 2217, 2378, 2571, 2677, 1297, 2612, 1298, 1299, + 904, 905, 2942, 2676, 2253, 104, 1297, 102, 1298, 1299, + 2026, 2027, 1497, 3299, 1496, 3298, 103, 1300, 102, 3280, + 1297, 3130, 1298, 1299, 1297, 3128, 1298, 1299, 2551, 2552, + 2553, 2554, 2555, 103, 2598, 1297, 3127, 1298, 1299, 1297, + 2600, 1298, 1299, 2577, 1297, 2374, 1298, 1299, 3120, 3029, + 2961, 2959, 1807, 2565, 2793, 2653, 2658, 104, 2159, 1615, + 104, 2655, 908, 903, 3119, 2601, 2602, 2950, 103, 2604, + 102, 103, 2606, 2573, 2428, 3499, 3498, 3499, 3101, 97, + 1974, 2621, 1974, 2627, 2710, 2408, 2619, 2305, 2020, 1525, + 1517, 3498, 2613, 2614, 2615, 3317, 1297, 2995, 1298, 1299, + 894, 2373, 2728, 3, 2620, 108, 109, 2622, 2623, 2624, + 91, 1, 2999, 2625, 2626, 2681, 3434, 1948, 2628, 2658, + 601, 2630, 2010, 1472, 2632, 2633, 2634, 2635, 2654, 2713, + 2656, 3472, 2636, 1948, 1948, 1948, 1948, 1948, 2730, 2682, + 3430, 3431, 2673, 2669, 2599, 2704, 1712, 1702, 3061, 2065, + 2704, 908, 1297, 1945, 1298, 1299, 2657, 2680, 2659, 2660, + 2661, 2662, 2663, 2664, 2707, 2683, 3253, 2665, 2666, 2796, + 2667, 2165, 2668, 3027, 883, 2122, 970, 2065, 2065, 2065, + 2065, 2065, 2712, 148, 884, 2714, 885, 2732, 2717, 2698, + 2733, 2085, 2816, 2086, 2726, 2715, 2716, 2065, 2718, 3398, + 2065, 2695, 2696, 2629, 112, 2631, 2734, 2670, 2671, 2672, + 98, 928, 111, 99, 973, 1080, 2160, 2699, 3051, 2772, + 2740, 2642, 2643, 2644, 2645, 2476, 2094, 2771, 2856, 1550, + 1548, 2770, 2773, 2774, 1549, 2795, 1547, 2637, 2638, 2639, + 2640, 2641, 2729, 1300, 1752, 1552, 2824, 1300, 2873, 2874, + 2875, 2858, 2877, 2879, 2823, 2794, 801, 1551, 1300, 2862, + 2124, 2815, 2306, 2904, 1793, 636, 2886, 1300, 2448, 630, + 186, 2890, 2891, 2892, 2894, 2895, 2896, 2897, 1539, 2830, + 2898, 1518, 2900, 2901, 2902, 2917, 1012, 2906, 2907, 2908, + 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2850, 2849, 2852, + 2853, 2847, 2791, 591, 2769, 2922, 2857, 2198, 2926, 189, + 2927, 2929, 189, 2932, 2934, 634, 2936, 2937, 2938, 2939, + 640, 597, 1348, 2867, 2945, 1788, 2675, 2372, 2781, 2463, + 189, 2371, 923, 1498, 1494, 915, 1300, 2021, 2399, 922, + 1300, 3230, 2370, 2709, 2954, 189, 2919, 2582, 1495, 2687, + 2689, 2369, 1300, 2923, 2819, 2415, 1300, 2692, 2685, 2967, + 2968, 3310, 3121, 2972, 3383, 1300, 2473, 1514, 2831, 1300, + 640, 189, 640, 1491, 1492, 1497, 2924, 1496, 1297, 1300, + 1298, 1299, 1297, 1300, 1298, 1299, 2278, 2848, 1870, 2948, + 2851, 1338, 1300, 1297, 2880, 1298, 1299, 2062, 2943, 2944, + 2946, 3096, 1297, 1819, 1298, 1299, 2864, 2865, 2889, 2866, + 2951, 658, 2868, 2958, 2870, 657, 2872, 655, 2401, 2429, + 2358, 1300, 2973, 1303, 2352, 2963, 805, 1300, 2389, 1526, + 2440, 1300, 2438, 2980, 2437, 1300, 2351, 2230, 2070, 2978, + 2350, 2987, 2988, 2974, 1300, 3426, 2983, 2064, 2060, 2349, + 1300, 2985, 2407, 2348, 1300, 756, 755, 667, 2824, 3034, + 3035, 2993, 2986, 2347, 2994, 659, 2823, 2346, 3049, 651, + 754, 1297, 2065, 1298, 1299, 1297, 2345, 1298, 1299, 1300, + 753, 3010, 2992, 3012, 2822, 3055, 3056, 1297, 3410, 1298, + 1299, 1297, 2546, 1298, 1299, 2836, 3004, 3005, 2548, 2947, + 1297, 2474, 1298, 1299, 1297, 2344, 1298, 1299, 2832, 1281, + 3068, 2338, 1490, 3072, 1297, 2337, 1298, 1299, 1297, 2336, + 1298, 1299, 645, 941, 2859, 3334, 2252, 1297, 2333, 1298, + 1299, 2882, 1489, 1900, 2332, 1901, 3341, 2804, 2331, 3045, + 3083, 2785, 2522, 1300, 2152, 65, 43, 3305, 3038, 1300, + 3057, 3371, 3042, 3043, 3044, 3087, 1297, 752, 1298, 1299, + 749, 3098, 1297, 2329, 1298, 1299, 1297, 3095, 1298, 1299, + 1297, 3099, 1298, 1299, 3100, 3102, 2649, 3030, 2650, 1297, + 3354, 1298, 1299, 3073, 3008, 1297, 3355, 1298, 1299, 1297, + 748, 1298, 1299, 3356, 2441, 2444, 2445, 2446, 2442, 1928, + 2443, 2447, 1278, 3023, 2976, 2977, 3024, 3025, 3026, 1300, + 3054, 3447, 1795, 90, 1297, 34, 1298, 1299, 3094, 33, + 32, 31, 30, 25, 24, 23, 22, 2325, 21, 3116, + 27, 20, 19, 2324, 18, 2807, 3467, 1300, 3508, 117, + 1855, 52, 49, 47, 3077, 125, 124, 50, 46, 3137, + 1055, 44, 29, 1853, 3145, 28, 17, 16, 15, 3117, + 14, 3125, 3139, 13, 12, 3074, 3126, 3075, 3141, 11, + 3076, 3133, 7, 3079, 3080, 6, 3135, 37, 1297, 2704, + 1298, 1299, 3084, 1300, 1297, 36, 1298, 1299, 35, 1300, + 1798, 26, 3086, 2320, 3146, 3147, 3244, 4, 3231, 2707, + 3149, 2509, 2154, 2707, 0, 3251, 0, 0, 0, 39, + 0, 0, 0, 0, 3103, 0, 0, 3104, 0, 3105, + 3106, 2318, 3107, 0, 3108, 3261, 3262, 0, 3264, 3109, + 3265, 3266, 0, 3228, 3227, 3269, 3270, 3271, 0, 3273, + 3276, 3274, 3226, 3275, 1297, 3243, 1298, 1299, 0, 1855, + 3248, 3247, 0, 3255, 3134, 3285, 3287, 3288, 3290, 3292, + 3293, 3295, 1853, 3278, 0, 3142, 0, 2283, 3144, 0, + 3235, 3085, 1297, 2272, 1298, 1299, 0, 0, 0, 0, + 3148, 3238, 3239, 3240, 0, 0, 0, 0, 0, 0, + 0, 3279, 0, 0, 0, 0, 0, 0, 3223, 3325, + 3281, 0, 0, 0, 3284, 0, 0, 0, 0, 0, + 3321, 3300, 3301, 3303, 0, 3302, 0, 0, 1297, 0, + 1298, 1299, 0, 0, 1297, 0, 1298, 1299, 3318, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 3324, 189, 0, 0, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2707, + 0, 0, 0, 0, 0, 0, 640, 0, 640, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3326, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 189, + 0, 0, 0, 3320, 0, 0, 0, 0, 3308, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3345, 0, 3350, 1343, 0, 0, 0, + 0, 0, 0, 3342, 0, 3340, 0, 0, 0, 3337, + 0, 0, 0, 0, 0, 3366, 0, 0, 0, 0, + 0, 3367, 3368, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3333, 0, 0, + 0, 0, 0, 3379, 0, 0, 0, 0, 0, 3360, + 0, 0, 3361, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3309, 39, 3369, 0, 0, 0, 0, 3404, + 3405, 0, 0, 0, 0, 0, 0, 0, 0, 3384, + 0, 3376, 0, 3414, 3416, 3418, 3411, 0, 0, 3412, + 3386, 3389, 3397, 3394, 3391, 0, 3390, 3388, 3393, 3392, + 0, 0, 2704, 0, 0, 0, 3255, 3399, 3446, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3422, 0, + 0, 0, 3348, 0, 0, 0, 0, 3443, 0, 3433, + 3438, 0, 0, 3425, 0, 0, 3452, 3411, 1343, 39, + 3412, 0, 3465, 0, 0, 3362, 3450, 3463, 3363, 0, + 3364, 3346, 1567, 0, 0, 1351, 3381, 0, 0, 0, + 0, 0, 0, 0, 3461, 0, 3466, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3484, + 3486, 3488, 3479, 0, 0, 0, 3481, 0, 0, 0, + 0, 0, 0, 1855, 0, 189, 3490, 3489, 0, 640, + 640, 3496, 0, 3494, 0, 0, 1853, 3493, 0, 0, + 3507, 3492, 3504, 3411, 3349, 189, 3412, 0, 0, 0, + 0, 3510, 3359, 3516, 3518, 0, 3519, 3520, 0, 0, + 0, 0, 0, 0, 0, 640, 0, 0, 189, 0, + 0, 0, 0, 0, 3444, 0, 0, 1855, 3527, 3528, + 640, 3275, 3526, 0, 0, 0, 189, 1567, 0, 0, + 1853, 3525, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3458, 0, 3459, 0, 3460, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 1555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1343, 0, 0, 0, + 0, 0, 640, 640, 0, 640, 0, 640, 640, 0, + 640, 640, 640, 640, 640, 640, 0, 0, 0, 0, + 0, 0, 0, 1343, 0, 0, 1343, 640, 1343, 189, + 0, 0, 0, 0, 3505, 0, 3506, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 0, 189, 0, 0, 0, 0, 1568, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1555, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 641, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 881, 1342, 1347, 1348, 0, 1351, - 0, 1352, 1354, 1355, 1356, 0, 1359, 1360, 1362, 1362, - 0, 1362, 1366, 1366, 1368, 1369, 1370, 1371, 1372, 1373, - 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, - 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, - 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 0, - 0, 0, 0, 1433, 0, 1435, 1436, 1437, 1438, 1439, - 0, 0, 0, 0, 0, 0, 0, 0, 1366, 1366, - 1366, 1366, 1366, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1453, 1454, 1455, 1456, 1457, 1458, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1472, 0, 0, 641, 641, 0, 0, - 0, 0, 184, 0, 641, 0, 0, 0, 3473, 189, - 0, 0, 1477, 2523, 0, 0, 0, 0, 1569, 0, - 0, 0, 0, 0, 0, 0, 123, 0, 145, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, - 0, 0, 0, 0, 0, 0, 1478, 0, 0, 0, - 0, 0, 881, 0, 0, 0, 881, 641, 0, 0, - 0, 0, 881, 0, 184, 0, 0, 1345, 587, 0, - 156, 0, 0, 0, 0, 1621, 144, 0, 641, 0, - 0, 0, 0, 0, 1345, 0, 871, 0, 123, 0, - 145, 0, 0, 0, 0, 163, 0, 0, 164, 0, - 0, 166, 0, 0, 0, 0, 0, 0, 0, 641, - 641, 0, 0, 0, 0, 0, 0, 1625, 1626, 155, - 154, 183, 0, 0, 0, 0, 0, 937, 0, 0, - 0, 0, 156, 0, 0, 0, 0, 0, 144, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 163, 0, 1992, - 164, 0, 1557, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1625, - 1626, 155, 154, 183, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 0, 641, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 149, 1627, 152, 0, 1624, 0, 150, 151, 0, 0, - 0, 189, 167, 0, 641, 0, 0, 0, 0, 0, - 0, 173, 0, 0, 189, 1570, 0, 0, 641, 0, - 0, 1992, 189, 0, 189, 0, 189, 189, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 641, 0, 0, 0, 819, 0, 1984, 0, 0, - 820, 1118, 149, 1627, 152, 0, 1624, 0, 150, 151, - 1860, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 0, 0, 1583, 1586, 1587, 1588, - 1589, 1590, 1591, 0, 1592, 1593, 1594, 1595, 1596, 1571, - 1572, 1573, 1574, 1555, 1556, 1584, 641, 1558, 0, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 0, 0, - 1568, 1575, 1576, 1577, 1578, 0, 1579, 1580, 1581, 1582, - 0, 0, 0, 641, 0, 0, 0, 0, 0, 641, - 0, 0, 158, 826, 827, 828, 829, 830, 831, 832, + 189, 640, 0, 0, 0, 0, 0, 0, 0, 1581, + 1584, 1585, 1586, 1587, 1588, 1589, 0, 1590, 1591, 1592, + 1593, 1594, 1569, 1570, 1571, 1572, 1553, 1554, 1582, 0, + 1556, 0, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, + 1565, 0, 0, 1566, 1573, 1574, 1575, 1576, 0, 1577, + 1578, 1579, 1580, 0, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 816, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 3167, 3169, 3168, 3186, 3187, 3188, 3189, 3190, 3191, + 3192, 706, 0, 0, 1581, 1584, 1585, 1586, 1587, 1588, + 1589, 0, 1590, 1591, 1592, 1593, 1594, 1569, 1570, 1571, + 1572, 1553, 1554, 1582, 0, 1556, 0, 1557, 1558, 1559, + 1560, 1561, 1562, 1563, 1564, 1565, 0, 0, 1566, 1573, + 1574, 1575, 1576, 0, 1577, 1578, 1579, 1580, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 640, 0, 0, + 0, 880, 0, 81, 640, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 880, 1583, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 940, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1343, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 1343, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1583, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1986, + 3173, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3181, 3182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 0, 0, 640, 0, 0, 772, 0, 685, + 776, 687, 773, 774, 189, 683, 686, 775, 640, 0, + 0, 1986, 189, 0, 189, 0, 189, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 640, 0, 704, 705, 3166, 3170, 3171, 3172, 3183, + 3184, 3185, 3193, 3195, 737, 3194, 3196, 3197, 3198, 3201, + 3202, 3203, 3204, 3199, 3200, 3205, 3150, 3154, 3151, 3152, + 3153, 3165, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, + 3163, 3164, 3206, 3207, 3208, 3209, 3210, 3211, 3176, 3180, + 3179, 3177, 3178, 3174, 3175, 0, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 777, 0, 778, + 0, 0, 782, 0, 0, 0, 784, 783, 0, 785, + 751, 750, 0, 640, 779, 780, 0, 781, 0, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 640, 0, 0, 0, 640, 640, 0, 0, 0, + 0, 0, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 189, 0, 0, 189, 0, 189, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 41, + 42, 82, 0, 0, 0, 189, 0, 0, 0, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 86, 0, + 0, 0, 45, 71, 72, 0, 69, 73, 0, 0, + 0, 1116, 0, 1116, 1116, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1343, 89, 1986, 0, 0, + 880, 1340, 1345, 1346, 0, 1349, 0, 1350, 1352, 1353, + 1354, 0, 1357, 1358, 1360, 1360, 0, 1360, 1364, 1364, + 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, + 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, + 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, + 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, + 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, + 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, + 1426, 1427, 1428, 1429, 1430, 0, 0, 0, 0, 1431, + 0, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, 0, + 0, 0, 0, 0, 1364, 1364, 1364, 1364, 1364, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1444, + 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, + 1455, 1456, 0, 0, 48, 51, 54, 53, 56, 0, + 68, 0, 0, 77, 74, 0, 189, 0, 0, 1470, + 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 640, 57, 85, 84, 0, + 184, 66, 67, 55, 0, 0, 640, 0, 0, 75, + 76, 2515, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 0, 145, 0, 0, 0, + 189, 0, 1476, 0, 0, 189, 0, 166, 880, 0, + 0, 0, 880, 0, 0, 0, 0, 0, 880, 0, + 0, 59, 60, 0, 61, 62, 63, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 163, 0, 0, 164, 0, 0, 640, + 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 1623, 1624, 155, 154, 183, + 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1343, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 189, 189, 189, 189, 0, 0, 0, 0, + 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 0, 149, 1625, + 152, 0, 1622, 0, 150, 151, 0, 0, 0, 0, + 167, 184, 0, 0, 0, 0, 0, 640, 0, 173, + 0, 0, 1619, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 123, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 1116, 0, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, + 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 0, 163, 0, 0, 164, 0, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1623, 1624, 155, 154, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 158, + 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 0, 0, 640, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 1343, 0, 0, + 640, 640, 1343, 189, 189, 189, 189, 189, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, + 0, 189, 0, 189, 0, 0, 189, 189, 189, 0, + 0, 1116, 1116, 0, 0, 0, 0, 153, 0, 0, + 81, 0, 0, 0, 0, 0, 0, 0, 0, 149, + 1625, 152, 0, 1622, 0, 150, 151, 0, 0, 0, + 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, + 173, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 640, 0, 0, 1343, 0, 0, + 0, 0, 640, 0, 0, 0, 0, 189, 146, 0, + 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 159, 0, 189, 0, 0, 0, 0, 171, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 640, 0, 0, 0, 0, 0, 0, + 160, 165, 162, 168, 169, 170, 172, 174, 175, 176, + 177, 0, 0, 0, 0, 0, 178, 180, 181, 182, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2063, 0, 0, 0, 0, 0, 0, 189, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 0, 146, + 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 0, 0, 189, + 189, 189, 0, 0, 0, 0, 0, 0, 0, 640, + 640, 940, 159, 0, 0, 0, 0, 0, 0, 171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 940, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 640, 640, 640, 640, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 160, 165, 162, 168, 169, 170, 172, 174, 175, + 176, 177, 0, 0, 0, 0, 0, 178, 180, 181, + 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1343, 0, 0, 0, 0, 640, 0, 640, 0, + 0, 89, 0, 0, 818, 0, 0, 0, 806, 819, + 820, 821, 822, 807, 0, 0, 808, 809, 0, 810, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 815, 823, 824, 0, 0, 0, 0, + 2254, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 0, 0, 640, 0, 0, 0, 0, 2264, + 2825, 2826, 0, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 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, 0, 641, 0, 0, 0, - 0, 641, 0, 0, 0, 641, 641, 0, 0, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, + 863, 864, 865, 866, 0, 0, 0, 640, 0, 0, + 0, 640, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 153, 0, 0, 0, 0, 0, 1118, 1118, 0, 0, - 0, 0, 0, 189, 0, 81, 758, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 189, 0, 0, 189, 0, 189, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, - 1585, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 146, 153, 0, 147, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1569, 0, 0, 0, 0, 189, - 639, 0, 0, 0, 641, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, - 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 0, 0, 147, 0, 0, 0, - 933, 0, 940, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 179, 0, 0, 0, 0, 0, 0, 1345, - 0, 1992, 0, 0, 0, 0, 159, 1058, 0, 1064, - 0, 0, 1066, 171, 0, 0, 0, 0, 0, 0, + 640, 0, 0, 0, 2827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 160, 165, 162, 168, 169, 170, 172, - 174, 175, 176, 177, 0, 0, 0, 0, 0, 178, - 180, 181, 182, 0, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1279, 0, 1557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2362, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 160, 165, 162, 168, 169, - 170, 172, 174, 175, 176, 177, 0, 0, 0, 0, - 0, 178, 180, 181, 182, 0, 2069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2394, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2828, 2829, 640, + 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 619, 0, 2433, 2434, 0, 0, + 639, 0, 0, 640, 189, 2063, 0, 0, 880, 2453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 1570, 0, 0, 0, 0, 0, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 641, 0, 0, 0, 0, 0, 941, 0, 0, 0, + 639, 0, 639, 0, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1343, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 189, 0, 0, 0, 0, 189, - 0, 0, 1583, 1586, 1587, 1588, 1589, 1590, 1591, 941, - 1592, 1593, 1594, 1595, 1596, 1571, 1572, 1573, 1574, 1555, - 1556, 1584, 0, 1558, 0, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 1566, 1567, 0, 0, 1568, 1575, 1576, 1577, - 1578, 0, 1579, 1580, 1581, 1582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 641, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, + 640, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 641, 0, 0, 0, 0, 0, 0, 641, 0, 0, - 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, + 0, 0, 640, 0, 0, 0, 0, 0, 2529, 0, + 0, 89, 0, 0, 818, 0, 189, 640, 806, 819, + 820, 821, 822, 807, 0, 0, 808, 809, 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1345, 0, 0, 1530, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 189, 189, 189, 189, - 0, 0, 0, 1547, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 815, 823, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 189, 0, 0, 0, 0, 0, 0, 0, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 1585, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2262, - 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, + 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 2825, 2826, 0, 0, 0, 0, 0, 0, 0, 640, + 0, 640, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1684, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1729, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1120, 0, 1120, - 1120, 0, 0, 0, 0, 0, 0, 0, 641, 0, - 0, 0, 0, 0, 1767, 0, 641, 0, 0, 1278, - 0, 1771, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 0, - 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 0, 641, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, - 0, 0, 0, 1345, 2370, 0, 641, 641, 1345, 189, - 189, 189, 189, 189, 0, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 0, 0, 0, 189, 0, 189, - 0, 0, 189, 189, 189, 0, 2402, 0, 0, 0, + 0, 0, 0, 0, 2827, 0, 0, 2646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 818, 0, 1978, 0, 0, 819, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2441, 2442, 189, 0, 0, - 0, 0, 0, 0, 2069, 0, 0, 881, 2461, 0, - 641, 0, 0, 1345, 0, 0, 0, 0, 641, 0, - 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 1813, 0, 189, + 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2828, 2829, 0, + 0, 0, 0, 2708, 0, 81, 0, 0, 2063, 2063, + 2063, 2063, 2063, 0, 0, 0, 757, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, + 0, 2063, 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, 0, 0, 0, 0, 772, 0, + 638, 776, 0, 773, 774, 0, 0, 0, 775, 0, + 0, 0, 0, 0, 2813, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 932, 0, 939, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 818, + 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1480, 1481, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 1269, 639, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2537, 0, 0, - 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, - 0, 1542, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 933, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1342, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1650, 1650, 0, 1650, 0, 1650, 1650, - 0, 1659, 1650, 1650, 1650, 1650, 1650, 0, 0, 0, - 0, 0, 0, 0, 189, 0, 0, 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1727, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 189, 189, 189, 0, 0, - 1755, 0, 0, 0, 0, 641, 641, 0, 0, 0, - 0, 0, 2055, 0, 0, 0, 0, 0, 2654, 0, - 2059, 0, 2062, 0, 0, 1813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1120, 0, 0, 0, 0, 0, 0, - 0, 0, 641, 641, 641, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2069, 0, 801, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 41, - 42, 82, 0, 0, 2716, 0, 81, 0, 0, 2069, - 2069, 2069, 2069, 2069, 0, 0, 0, 0, 86, 0, - 0, 0, 45, 71, 72, 0, 69, 73, 0, 2069, - 0, 0, 2069, 0, 0, 70, 0, 0, 0, 0, - 0, 620, 0, 0, 0, 0, 0, 640, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 0, 0, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1345, 0, 0, - 0, 0, 641, 0, 641, 2821, 0, 640, 0, 640, - 0, 0, 0, 0, 0, 2829, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1120, 1120, - 0, 0, 0, 0, 0, 0, 1802, 0, 0, 0, - 0, 1813, 0, 0, 0, 0, 0, 0, 2215, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2234, 2235, 0, 641, 2239, 0, 0, 0, 0, - 0, 0, 0, 0, 2242, 0, 0, 189, 0, 0, - 641, 2245, 0, 0, 0, 0, 0, 0, 0, 1855, - 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2248, 0, 0, - 1871, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 51, 54, 53, 56, 0, - 68, 0, 0, 77, 74, 0, 0, 0, 0, 0, - 0, 1904, 1905, 641, 0, 0, 0, 641, 641, 0, - 0, 0, 0, 0, 0, 0, 57, 85, 84, 0, - 0, 66, 67, 55, 0, 0, 0, 0, 0, 75, - 76, 0, 0, 0, 0, 0, 641, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1120, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 2069, 61, 62, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 2999, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2029, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2041, 0, 0, 0, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 1524, 0, 0, 1120, 0, 0, 0, 0, 0, 641, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 641, 0, 0, 0, 83, 0, 0, 0, 0, 0, - 1345, 0, 641, 0, 0, 0, 0, 0, 940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 641, 641, 0, 0, - 0, 0, 0, 0, 0, 933, 0, 2462, 0, 0, - 0, 940, 0, 0, 0, 0, 0, 0, 641, 0, - 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, - 0, 0, 189, 641, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3118, 0, 3122, 3123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 933, 0, - 0, 0, 0, 1855, 0, 0, 0, 1855, 1855, 2716, - 0, 81, 0, 2716, 0, 0, 641, 2510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, - 0, 0, 0, 819, 0, 0, 0, 0, 820, 0, - 0, 0, 0, 0, 0, 641, 0, 641, 1860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 640, 1271, 640, 640, 0, 0, - 3244, 0, 0, 2559, 2560, 2561, 2562, 2563, 0, 0, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1813, - 2573, 0, 0, 0, 0, 0, 2249, 0, 0, 0, - 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, - 2581, 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, 0, 0, 0, 0, 0, 0, 2716, - 0, 0, 0, 1120, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1368, 1369, 1370, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1387, - 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1418, - 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1445, - 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, - 1456, 1457, 1458, 0, 0, 0, 1344, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3343, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 640, 640, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2410, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2425, 640, 0, 0, 3388, 0, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 0, 0, 0, 2789, 0, 0, 1598, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1607, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2827, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 640, 0, 1633, 0, 2839, 0, 0, 0, 0, - 0, 1642, 0, 0, 1344, 1644, 0, 0, 1647, 1648, - 640, 640, 0, 640, 2856, 640, 640, 2859, 640, 640, - 640, 640, 640, 640, 0, 2506, 0, 0, 0, 0, - 0, 1344, 1679, 1680, 1344, 640, 1344, 3470, 1685, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2041, 0, 759, 0, 0, 0, 0, 2531, - 0, 0, 0, 0, 0, 0, 0, 0, 2536, 0, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1751, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2955, 0, 588, 0, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 891, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 910, 910, 0, 0, 0, 1855, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1605, 0, 0, 3110, 0, 3114, 3115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 1631, 0, 0, 2708, 0, + 81, 0, 2708, 1640, 0, 0, 1342, 1642, 0, 0, + 1645, 1646, 639, 639, 0, 639, 0, 639, 639, 0, + 639, 639, 639, 639, 639, 639, 0, 0, 0, 0, + 0, 0, 0, 1342, 1677, 1678, 1342, 639, 1342, 0, + 1683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3016, 1855, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3236, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1745, 0, 0, 639, 0, + 0, 0, 0, 0, 0, 0, 1118, 0, 1118, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3031, 0, 0, 3032, 3033, 3034, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2655, 0, 0, 0, 0, 0, 0, 0, 1120, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1650, - 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 2692, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1120, 0, 0, 0, 0, 0, 0, 2719, 1650, + 0, 0, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1385, 1386, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, + 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1416, 1417, + 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1443, 1444, + 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, + 1455, 1456, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 639, 0, 0, + 0, 0, 0, 0, 639, 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1344, 0, 0, 0, - 0, 0, 0, 0, 0, 1869, 0, 640, 0, 0, - 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 640, - 0, 0, 933, 0, 0, 0, 0, 0, 0, 0, - 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1478, + 1479, 0, 0, 0, 0, 3380, 0, 639, 187, 0, + 81, 587, 0, 0, 0, 0, 0, 1342, 0, 0, + 0, 0, 0, 0, 0, 0, 1863, 0, 639, 587, + 0, 0, 0, 0, 1342, 1522, 0, 0, 0, 0, + 0, 0, 0, 0, 890, 0, 0, 0, 0, 0, + 1540, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 639, 909, 909, 0, 0, 0, 0, 0, 0, 0, + 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 932, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3462, 0, 0, 639, + 0, 0, 1648, 1648, 0, 1648, 0, 1648, 1648, 0, + 1657, 1648, 1648, 1648, 1648, 1648, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 819, 0, 0, 0, 807, 820, 821, - 822, 823, 808, 0, 0, 809, 810, 0, 811, 0, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, - 0, 0, 816, 824, 825, 0, 0, 0, 0, 0, + 0, 0, 1725, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 639, 0, 0, 0, 1749, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, - 0, 2926, 0, 0, 0, 0, 0, 640, 0, 0, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 2833, - 2834, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 640, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, - 0, 0, 2148, 2149, 2150, 0, 0, 0, 0, 588, - 0, 588, 0, 0, 588, 0, 0, 0, 0, 0, - 0, 0, 640, 2835, 0, 0, 0, 0, 640, 1642, - 0, 0, 1642, 0, 1642, 0, 0, 0, 89, 0, - 2180, 819, 0, 0, 0, 807, 820, 821, 822, 823, - 808, 0, 0, 809, 810, 0, 811, 2041, 2041, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, - 816, 824, 825, 0, 0, 640, 0, 0, 3354, 0, - 640, 0, 0, 0, 640, 640, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1346, 0, 2836, 2837, 0, - 0, 0, 0, 0, 3070, 3071, 3072, 3073, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2833, 2834, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 773, 0, - 0, 777, 0, 774, 775, 0, 0, 0, 776, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3146, 0, 3148, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1344, 0, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 2142, 2143, 2144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2836, 2837, 0, 0, 0, - 0, 0, 0, 0, 588, 0, 2041, 0, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 0, 0, 639, + 1640, 0, 0, 1640, 0, 1640, 0, 0, 0, 0, + 0, 2174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3254, 0, 891, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1120, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 639, 0, 0, 0, 639, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3304, 0, 0, 0, 3304, - 3304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1346, 0, 0, 2041, 0, + 0, 0, 0, 0, 0, 0, 1118, 1118, 0, 0, + 0, 0, 0, 0, 1796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 1346, 0, 0, 1346, 0, 1346, 588, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2475, 0, 0, 2041, 0, 0, - 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, - 0, 2041, 1780, 1781, 588, 588, 588, 588, 588, 588, - 588, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, - 1642, 1642, 3381, 0, 0, 640, 0, 0, 0, 0, - 0, 0, 0, 0, 3385, 0, 0, 0, 0, 0, - 0, 1344, 2547, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1120, 1120, + 0, 0, 0, 0, 0, 0, 0, 1849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 1865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3428, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1898, + 1899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, + 0, 0, 0, 0, 0, 1342, 0, 639, 0, 587, + 0, 587, 0, 0, 587, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 2041, 0, 0, 0, 0, 0, 0, 0, 0, 640, - 0, 0, 0, 0, 0, 0, 0, 2926, 0, 3436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 1346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, - 910, 0, 0, 0, 1346, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 587, 0, + 0, 0, 0, 0, 0, 0, 0, 2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 0, 1344, 0, 0, 640, 640, 1344, 0, 0, + 0, 0, 0, 0, 0, 1344, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1522, 0, + 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 910, 1757, - 910, 910, 910, 910, 910, 0, 0, 0, 0, 0, + 0, 932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2784, 0, 0, - 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 910, 0, 640, - 0, 0, 1344, 0, 0, 0, 0, 640, 0, 0, - 0, 891, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, - 0, 1757, 588, 0, 588, 0, 588, 2078, 3175, 3177, - 3176, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 707, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2863, 0, + 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 932, 0, 0, 0, 0, 0, 939, + 0, 2467, 0, 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 932, 0, 0, 639, + 0, 1849, 0, 0, 0, 1849, 1849, 0, 0, 0, + 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 639, 890, 0, 0, 1640, 1640, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 587, 1342, 2539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, + 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2241, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1344, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1344, 0, 0, 1344, 0, 1344, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1118, 1699, 0, + 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 587, 0, 0, 0, 0, + 639, 0, 587, 0, 0, 0, 0, 0, 0, 0, + 0, 1774, 1775, 587, 587, 587, 587, 587, 587, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 1342, 0, 0, + 639, 639, 1342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3006, 0, 588, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 588, 0, 0, 588, 0, 2241, - 0, 0, 0, 0, 0, 0, 588, 0, 3181, 0, - 0, 0, 0, 588, 640, 640, 0, 0, 0, 0, - 0, 0, 0, 3189, 3190, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2402, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2417, 0, 0, 0, + 0, 0, 2776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 640, 640, 640, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 639, 0, 0, 1342, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 773, 0, 686, 777, 688, - 774, 775, 0, 684, 687, 776, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1346, - 0, 1757, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 705, 706, 3174, 3178, 3179, 3180, 3191, 3192, 3193, - 3201, 3203, 738, 3202, 3204, 3205, 3206, 3209, 3210, 3211, - 3212, 3207, 3208, 3213, 3158, 3162, 3159, 3160, 3161, 3173, - 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, - 3214, 3215, 3216, 3217, 3218, 3219, 3184, 3188, 3187, 3185, - 3186, 3182, 3183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 778, 1344, 779, 0, 0, - 783, 640, 0, 640, 785, 784, 0, 786, 752, 751, - 0, 0, 780, 781, 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2855, 0, 0, 0, 0, 0, 2498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 0, 0, 0, 0, 0, 1701, 640, - 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 0, 0, - 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2035, 0, 0, 0, + 0, 0, 0, 2523, 0, 0, 1344, 0, 0, 0, + 0, 0, 2528, 0, 0, 0, 0, 0, 909, 909, + 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 588, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 0, 0, 0, 640, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 909, 1751, 909, + 909, 909, 909, 909, 0, 0, 0, 1849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, - 0, 0, 0, 0, 0, 0, 2516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2998, 0, 0, 0, + 0, 1699, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1849, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 890, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 639, 0, 0, 587, 0, 0, 0, 0, 0, 0, + 1751, 587, 2647, 587, 0, 587, 2072, 0, 0, 0, + 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 639, 639, 639, + 0, 1648, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1346, 0, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 588, 588, 588, 588, + 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0, + 2711, 1648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, - 0, 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 910, 0, 0, 640, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1344, - 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1342, 0, 0, 932, 0, 639, 0, 639, 0, + 0, 0, 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 588, 0, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 587, 0, 0, 0, 0, 0, 0, 587, + 0, 0, 0, 0, 0, 0, 0, 0, 587, 587, + 0, 0, 587, 0, 2233, 0, 0, 0, 639, 0, + 0, 587, 0, 0, 0, 0, 0, 0, 587, 0, + 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1346, 640, 0, 640, 0, 1346, 588, - 588, 588, 588, 588, 0, 0, 0, 0, 0, 0, - 0, 2735, 0, 0, 0, 0, 0, 1701, 0, 588, - 0, 0, 588, 2743, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2918, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, + 0, 639, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1344, 0, 1751, 0, 0, 0, + 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2035, + 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 587, 3062, 3063, 3064, 3065, + 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1342, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 587, + 639, 639, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 587, 0, 3138, 0, 3140, 0, + 639, 2508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, + 0, 639, 0, 0, 0, 0, 0, 1344, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, + 587, 587, 587, 587, 587, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3246, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 587, 587, 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 909, + 0, 0, 0, 0, 0, 0, 0, 3296, 0, 0, + 0, 3296, 3296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 588, 588, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2035, 0, 0, 1344, 0, 0, 0, + 0, 1344, 587, 587, 587, 587, 587, 0, 0, 0, + 0, 0, 0, 0, 2727, 0, 0, 0, 0, 0, + 1699, 0, 587, 0, 0, 587, 2735, 1751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3373, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1118, 1118, 0, 0, 0, 0, 1344, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 587, 0, 0, 0, + 0, 0, 3420, 0, 0, 0, 0, 0, 0, 0, + 587, 0, 0, 0, 0, 0, 0, 3428, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 587, + 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2035, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2918, + 0, 3428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 587, 0, 0, 587, 587, + 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 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,1065 +2516,2317 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, - 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, 1267, - 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, 1125, - 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, 350, - 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 1263, 354, 1206, 0, 476, 384, 0, 0, 0, - 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, 1168, - 1215, 1259, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 1701, 0, 3408, 630, 0, 0, 0, 0, 3409, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 588, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, 251, - 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, 1255, - 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, - 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, - 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, 0, - 1346, 0, 0, 1157, 0, 1204, 0, 0, 0, 1136, - 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1183, 0, 0, 0, 0, 1139, 0, - 1158, 1230, 1701, 1122, 284, 1133, 385, 244, 0, 1237, - 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, 1171, - 349, 1135, 316, 191, 215, 0, 1169, 395, 441, 453, - 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, 271, - 438, 415, 449, 422, 274, 1203, 1222, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 1134, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 1149, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1699, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1699, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 380, 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, + 1149, 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, + 1121, 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, + 1198, 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 1261, 354, 1204, 0, 476, 384, + 0, 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, + 1203, 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, + 477, 273, 0, 0, 1699, 0, 3400, 629, 0, 0, + 0, 0, 3401, 0, 0, 0, 0, 228, 0, 0, + 235, 0, 0, 587, 335, 344, 343, 324, 325, 327, + 329, 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, + 307, 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, + 0, 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, + 0, 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, + 0, 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, + 0, 0, 0, 1344, 0, 0, 1155, 0, 1202, 0, + 0, 0, 1134, 1126, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1181, 0, 0, 0, + 0, 1137, 0, 1156, 1228, 1699, 1120, 284, 1131, 385, + 244, 0, 1235, 1245, 1178, 541, 1249, 1176, 1175, 1222, + 1135, 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, + 395, 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, + 520, 223, 271, 438, 415, 449, 422, 274, 1201, 1220, + 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, + 490, 537, 559, 216, 247, 403, 483, 523, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, + 355, 232, 221, 508, 526, 276, 436, 555, 203, 485, + 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, + 511, 243, 562, 218, 536, 210, 1132, 535, 391, 505, + 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 518, 530, 540, 546, + 547, 549, 550, 551, 552, 553, 556, 554, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 522, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 582, 368, + 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, + 528, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 560, 532, 527, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, + 301, 557, 558, 286, 516, 545, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 531, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 0, 2736, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 541, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 520, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 517, 542, + 543, 250, 389, 529, 490, 537, 559, 216, 247, 403, + 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, + 436, 555, 203, 485, 515, 229, 463, 0, 0, 561, + 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 510, 511, 243, 562, 218, 536, 210, + 1132, 535, 391, 505, 514, 378, 367, 209, 512, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, + 525, 563, 224, 225, 227, 1147, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1236, 500, + 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, + 556, 554, 390, 297, 474, 319, 357, 1225, 1267, 408, + 452, 230, 522, 475, 1142, 1146, 1140, 1207, 1141, 1196, + 1197, 1143, 1258, 1259, 1260, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 0, 1229, 1136, 0, 1144, 1145, 1238, + 1247, 1248, 582, 368, 465, 519, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, + 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, + 363, 431, 1200, 190, 211, 352, 1263, 434, 275, 560, + 532, 527, 197, 213, 1139, 249, 1150, 1158, 0, 1164, + 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, 1211, + 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, + 288, 426, 427, 300, 301, 557, 558, 286, 516, 545, + 0, 0, 362, 1199, 1205, 365, 268, 291, 306, 1214, + 531, 481, 217, 446, 277, 240, 1232, 1234, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1195, 1223, 360, 497, 498, 302, 380, 0, + 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, 1168, + 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, 1153, + 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, 1254, + 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1261, 354, 1204, 0, 476, 384, 0, 0, + 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, 1256, + 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, 259, + 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, 219, + 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, 1125, + 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, 0, + 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, 0, + 0, 0, 2697, 0, 1155, 0, 1202, 0, 0, 0, + 1134, 1126, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1181, 0, 0, 0, 0, 1137, + 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, 0, + 1235, 1245, 1178, 541, 1249, 1176, 1175, 1222, 1135, 1241, + 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, 441, + 453, 1240, 1152, 1161, 242, 1159, 451, 409, 520, 223, + 271, 438, 415, 449, 422, 274, 1201, 1220, 450, 356, + 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, + 559, 216, 247, 403, 483, 523, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, + 221, 508, 526, 276, 436, 555, 203, 485, 515, 229, + 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 510, 511, 243, + 562, 218, 536, 210, 1132, 535, 391, 505, 514, 378, + 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, + 0, 199, 0, 478, 525, 563, 224, 225, 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, 1148, - 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 1231, 1138, - 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, 520, + 424, 433, 1236, 500, 518, 530, 540, 546, 547, 549, + 550, 551, 552, 553, 556, 554, 390, 297, 474, 319, + 357, 1225, 1267, 408, 452, 230, 522, 475, 1142, 1146, + 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, 1260, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 0, 1229, 1136, + 0, 1144, 1145, 1238, 1247, 1248, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 1202, 190, 211, 352, - 1265, 434, 275, 561, 533, 528, 197, 213, 1141, 249, - 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, 1191, - 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, 1246, - 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, + 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, + 448, 447, 317, 318, 363, 431, 1200, 190, 211, 352, + 1263, 434, 275, 560, 532, 527, 197, 213, 1139, 249, + 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, 1188, 1189, + 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, 1233, 1244, + 1266, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 1201, 1207, 365, - 268, 291, 306, 1216, 532, 481, 217, 446, 277, 240, - 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, + 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, + 539, 544, 460, 287, 288, 426, 427, 300, 301, 557, + 558, 286, 516, 545, 0, 0, 362, 1199, 1205, 365, + 268, 291, 306, 1214, 531, 481, 217, 446, 277, 240, + 1232, 1234, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 1197, 1225, 360, 497, - 498, 302, 380, 0, 0, 0, 1254, 1239, 496, 0, - 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, 1196, - 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, 257, - 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, 1172, - 196, 1220, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 1263, 354, 1206, 0, - 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, 1181, - 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 188, + 488, 489, 491, 379, 253, 416, 1195, 1223, 360, 497, + 498, 302, 380, 0, 0, 0, 1252, 1237, 496, 0, + 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, 1128, 1194, + 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, 1182, 257, + 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, 413, 1170, + 196, 1218, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 1261, 354, 1204, 0, + 476, 384, 0, 0, 0, 1184, 1243, 1192, 1230, 1179, + 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, 237, 311, + 195, 396, 477, 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, 1165, - 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, 1193, - 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, 1270, - 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, - 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, 1233, - 1179, 0, 0, 0, 0, 0, 2744, 0, 1157, 0, - 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1183, 0, - 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, 284, - 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, 1178, - 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, 215, - 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, 1161, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 1134, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 1149, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 1238, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 1227, 1269, 408, 452, - 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, 1199, - 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, 570, + 325, 327, 329, 334, 341, 347, 1162, 1210, 1251, 1163, + 1212, 252, 307, 259, 251, 501, 1262, 1242, 1127, 1191, + 1250, 0, 0, 219, 1253, 1186, 0, 1215, 0, 1268, + 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, 262, 0, + 0, 0, 0, 0, 0, 0, 1183, 1193, 1227, 1231, + 1177, 0, 0, 0, 0, 0, 2051, 0, 1155, 0, + 1202, 0, 0, 0, 1134, 1126, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1181, 0, + 0, 0, 0, 1137, 0, 1156, 1228, 0, 1120, 284, + 1131, 385, 244, 0, 1235, 1245, 1178, 541, 1249, 1176, + 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, 191, 215, + 0, 1167, 395, 441, 453, 1240, 1152, 1161, 242, 1159, + 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, + 1201, 1220, 450, 356, 506, 432, 517, 542, 543, 250, + 389, 529, 490, 537, 559, 216, 247, 403, 483, 523, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, + 214, 459, 355, 232, 221, 508, 526, 276, 436, 555, + 203, 485, 515, 229, 463, 0, 0, 561, 205, 513, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 510, 511, 243, 562, 218, 536, 210, 1132, 535, + 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, + 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 524, 0, 199, 0, 478, 525, 563, + 224, 225, 227, 1147, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 1236, 500, 518, 530, + 540, 546, 547, 549, 550, 551, 552, 553, 556, 554, + 390, 297, 474, 319, 357, 1225, 1267, 408, 452, 230, + 522, 475, 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, + 1258, 1259, 1260, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, 1249, - 1250, 583, 368, 465, 520, 321, 333, 336, 326, 345, - 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, - 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 1202, 190, 211, 352, 1265, 434, 275, 561, 533, - 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, 1174, - 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, 1221, - 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, 532, - 481, 217, 446, 277, 240, 1234, 1236, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 1197, 1225, 360, 497, 498, 302, 380, 0, 0, - 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, 1267, - 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, 1125, - 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, 350, - 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 1263, 354, 1206, 0, 476, 384, 0, 0, 0, - 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, 1168, - 1215, 1259, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, 251, - 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, 1255, - 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, - 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, - 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, 0, - 0, 2705, 0, 1157, 0, 1204, 0, 0, 0, 1136, - 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1183, 0, 0, 0, 0, 1139, 0, - 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, 1237, - 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, 1171, - 349, 1135, 316, 191, 215, 0, 1169, 395, 441, 453, - 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, 271, - 438, 415, 449, 422, 274, 1203, 1222, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 1134, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 1149, + 581, 0, 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, + 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, + 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, + 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, + 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, + 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, + 1200, 190, 211, 352, 1263, 434, 275, 560, 532, 527, + 197, 213, 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, + 1185, 1187, 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, + 1224, 1226, 1233, 1244, 1266, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, + 427, 300, 301, 557, 558, 286, 516, 545, 0, 0, + 362, 1199, 1205, 365, 268, 291, 306, 1214, 531, 481, + 217, 446, 277, 240, 1232, 1234, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 1195, 1223, 360, 497, 498, 302, 380, 0, 0, 0, + 1252, 1237, 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, + 1174, 1216, 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, + 1124, 1151, 1182, 257, 1148, 1239, 1198, 1254, 350, 254, + 1130, 1154, 413, 1170, 196, 1218, 466, 241, 361, 358, + 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, + 1261, 354, 1204, 0, 476, 384, 0, 0, 0, 1184, + 1243, 1192, 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, + 1257, 309, 237, 311, 195, 396, 477, 273, 0, 89, + 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, + 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, + 1162, 1210, 1251, 1163, 1212, 252, 307, 259, 251, 501, + 1262, 1242, 1127, 1191, 1250, 0, 0, 219, 1253, 1186, + 0, 1215, 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, + 1246, 1157, 262, 0, 0, 0, 0, 0, 0, 0, + 1183, 1193, 1227, 1231, 1177, 0, 0, 0, 0, 0, + 0, 0, 1155, 0, 1202, 0, 0, 0, 1134, 1126, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1181, 0, 0, 0, 0, 1137, 0, 1156, + 1228, 0, 1120, 284, 1131, 385, 244, 0, 1235, 1245, + 1178, 541, 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, + 1133, 316, 191, 215, 0, 1167, 395, 441, 453, 1240, + 1152, 1161, 242, 1159, 451, 409, 520, 223, 271, 438, + 415, 449, 422, 274, 1201, 1220, 450, 356, 506, 432, + 517, 542, 543, 250, 389, 529, 490, 537, 559, 216, + 247, 403, 483, 523, 473, 381, 502, 503, 315, 472, + 282, 194, 353, 548, 214, 459, 355, 232, 221, 508, + 526, 276, 436, 555, 203, 485, 515, 229, 463, 0, + 0, 561, 205, 513, 482, 377, 312, 313, 204, 0, + 437, 255, 280, 245, 398, 510, 511, 243, 562, 218, + 536, 210, 1132, 535, 391, 505, 514, 378, 367, 209, + 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, + 430, 292, 294, 387, 386, 388, 198, 524, 0, 199, + 0, 478, 525, 563, 224, 225, 227, 1147, 266, 270, + 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, + 1236, 500, 518, 530, 540, 546, 547, 549, 550, 551, + 552, 553, 556, 554, 390, 297, 474, 319, 357, 1225, + 1267, 408, 452, 230, 522, 475, 1142, 1146, 1140, 1207, + 1141, 1196, 1197, 1143, 1258, 1259, 1260, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 0, 1229, 1136, 0, 1144, + 1145, 1238, 1247, 1248, 582, 368, 465, 519, 321, 333, + 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, + 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, + 298, 206, 207, 208, 492, 493, 494, 495, 533, 534, + 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, + 317, 318, 363, 431, 1200, 190, 211, 352, 1263, 434, + 275, 560, 532, 527, 197, 213, 1139, 249, 1150, 1158, + 0, 1164, 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, + 1209, 1211, 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, + 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, + 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, + 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, + 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, + 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, + 470, 471, 479, 480, 484, 507, 509, 521, 539, 544, + 460, 287, 288, 426, 427, 300, 301, 557, 558, 286, + 516, 545, 0, 0, 362, 1199, 1205, 365, 268, 291, + 306, 1214, 531, 481, 217, 446, 277, 240, 1232, 1234, + 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, + 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, + 491, 379, 253, 416, 1195, 1223, 360, 497, 498, 302, + 380, 0, 0, 0, 1252, 1237, 496, 0, 1180, 1255, + 1149, 1168, 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, + 1121, 1153, 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, + 1198, 1254, 350, 254, 1130, 1154, 413, 1170, 196, 1218, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 1261, 354, 1204, 0, 476, 384, + 0, 0, 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, + 1203, 1256, 1166, 1213, 1257, 309, 237, 311, 195, 396, + 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, + 329, 334, 341, 347, 1162, 1210, 1251, 1163, 1212, 252, + 307, 259, 251, 501, 1262, 1242, 1127, 1191, 1250, 0, + 0, 219, 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, + 0, 1125, 1129, 1264, 1246, 1157, 262, 0, 0, 0, + 0, 0, 0, 0, 1183, 1193, 1227, 1231, 1177, 0, + 0, 0, 0, 0, 0, 0, 1155, 0, 1202, 0, + 0, 0, 1134, 1126, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1181, 0, 0, 0, + 0, 1137, 0, 1156, 1228, 0, 1120, 284, 1131, 385, + 244, 0, 1235, 1245, 1178, 541, 1249, 1176, 1175, 1222, + 1135, 1241, 1169, 349, 1133, 316, 191, 215, 0, 1167, + 395, 441, 453, 1240, 1152, 1161, 242, 1159, 451, 409, + 520, 223, 271, 438, 415, 449, 422, 274, 1201, 1220, + 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, + 490, 537, 559, 216, 247, 403, 483, 523, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, + 355, 232, 221, 508, 526, 276, 436, 555, 203, 485, + 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 510, + 511, 243, 562, 218, 536, 210, 1132, 535, 391, 505, + 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, + 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 1236, 500, 518, 530, 540, 546, + 547, 549, 550, 551, 552, 553, 556, 554, 390, 297, + 474, 319, 357, 1225, 1267, 408, 452, 230, 522, 475, + 1142, 1146, 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, + 1260, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, + 1229, 1136, 0, 1144, 1145, 1238, 1247, 1248, 582, 368, + 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, + 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, + 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, + 494, 495, 533, 534, 538, 442, 443, 444, 445, 279, + 528, 295, 448, 447, 317, 318, 363, 431, 1200, 190, + 211, 352, 1263, 434, 275, 560, 532, 527, 197, 213, + 1139, 249, 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, + 1188, 1189, 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, + 1233, 1244, 1266, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 509, 521, 539, 544, 460, 287, 288, 426, 427, 300, + 301, 557, 558, 286, 516, 545, 0, 0, 362, 1199, + 1205, 365, 268, 291, 306, 1214, 531, 481, 217, 446, + 277, 240, 1232, 1234, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 1195, 1223, + 360, 497, 498, 302, 380, 0, 0, 0, 1252, 1237, + 496, 0, 1180, 1255, 1149, 1168, 1265, 1171, 1174, 1216, + 1128, 1194, 399, 1165, 1121, 1153, 1123, 1160, 1124, 1151, + 1182, 257, 1148, 1239, 1198, 1254, 350, 254, 1130, 1154, + 413, 1170, 196, 1218, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 1261, 354, + 1204, 0, 476, 384, 0, 0, 0, 1184, 1243, 1192, + 1230, 1179, 1217, 1138, 1203, 1256, 1166, 1213, 1257, 309, + 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, + 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 1162, 1210, + 1251, 1163, 1212, 252, 307, 259, 251, 501, 1262, 1242, + 1127, 1191, 1250, 0, 0, 219, 1253, 1186, 0, 1215, + 0, 1268, 1122, 1206, 0, 1125, 1129, 1264, 1246, 1157, + 262, 0, 0, 0, 0, 0, 0, 0, 1183, 1193, + 1227, 1231, 1177, 0, 0, 0, 0, 0, 0, 0, + 1155, 0, 1202, 0, 0, 0, 1134, 1126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1181, 0, 0, 0, 0, 1137, 0, 1156, 1228, 0, + 1120, 284, 1131, 385, 244, 0, 1235, 1245, 1178, 541, + 1249, 1176, 1175, 1222, 1135, 1241, 1169, 349, 1133, 316, + 191, 215, 0, 1167, 395, 441, 453, 1240, 1152, 1161, + 242, 1159, 451, 409, 520, 223, 271, 438, 415, 449, + 422, 274, 1201, 1220, 450, 356, 506, 432, 517, 542, + 543, 250, 389, 529, 490, 537, 559, 216, 247, 403, + 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, + 436, 555, 203, 485, 515, 229, 463, 0, 0, 561, + 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 510, 511, 243, 562, 218, 536, 210, + 1132, 535, 391, 505, 514, 378, 367, 209, 512, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, + 525, 563, 224, 225, 227, 1147, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 1236, 500, + 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, + 556, 554, 390, 297, 474, 319, 357, 1225, 1267, 408, + 452, 230, 522, 475, 1142, 1146, 1140, 1207, 1141, 1196, + 1197, 1143, 1258, 1259, 1260, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 0, 1229, 1136, 0, 1144, 1145, 1238, + 1247, 1248, 582, 368, 465, 519, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, + 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, + 363, 431, 1200, 190, 211, 352, 1263, 434, 275, 560, + 532, 527, 197, 213, 1139, 249, 1150, 1158, 0, 1164, + 1172, 1173, 1185, 1187, 1188, 1189, 1190, 1208, 1209, 1211, + 1219, 1221, 1224, 1226, 1233, 1244, 1266, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, + 288, 426, 427, 300, 301, 557, 558, 286, 516, 545, + 0, 0, 362, 1199, 1205, 365, 268, 291, 306, 1214, + 531, 481, 217, 446, 277, 240, 1232, 1234, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1195, 1223, 360, 497, 498, 302, 380, 0, + 0, 0, 1252, 1237, 496, 0, 1180, 1255, 1149, 1168, + 1265, 1171, 1174, 1216, 1128, 1194, 399, 1165, 1121, 1153, + 1123, 1160, 1124, 1151, 1182, 257, 1148, 1239, 1198, 1254, + 350, 254, 1130, 1154, 413, 1170, 196, 1218, 466, 241, + 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, + 486, 405, 1261, 354, 1204, 0, 476, 384, 0, 0, + 0, 1184, 1243, 1192, 1230, 1179, 1217, 1138, 1203, 1256, + 1166, 1213, 1257, 309, 237, 311, 195, 396, 477, 273, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, + 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, + 341, 347, 1162, 1210, 1251, 1163, 1212, 252, 307, 259, + 251, 501, 1262, 1242, 1127, 1191, 1250, 0, 0, 219, + 1253, 1186, 0, 1215, 0, 1268, 1122, 1206, 0, 1125, + 1129, 1264, 1246, 1157, 262, 0, 0, 0, 0, 0, + 0, 0, 1183, 1193, 1227, 1231, 1177, 0, 0, 0, + 0, 0, 0, 0, 1155, 0, 1202, 0, 0, 0, + 1134, 1126, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1181, 0, 0, 0, 0, 1137, + 0, 1156, 1228, 0, 1120, 284, 1131, 385, 244, 0, + 1235, 1245, 1178, 541, 1249, 1176, 1175, 1222, 1135, 1241, + 1169, 349, 1133, 316, 191, 215, 0, 1167, 395, 441, + 453, 1240, 1152, 1161, 242, 1159, 451, 409, 520, 223, + 271, 438, 415, 449, 422, 274, 1201, 1220, 450, 356, + 506, 432, 517, 542, 543, 250, 389, 529, 490, 537, + 559, 216, 247, 403, 483, 523, 473, 381, 502, 503, + 315, 472, 282, 194, 353, 548, 214, 459, 355, 232, + 221, 508, 526, 276, 436, 555, 203, 485, 515, 229, + 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, + 204, 0, 437, 255, 280, 245, 398, 510, 511, 243, + 562, 218, 536, 210, 1132, 535, 391, 505, 514, 378, + 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, + 429, 359, 430, 292, 294, 387, 386, 388, 198, 524, + 0, 199, 0, 478, 525, 563, 224, 225, 227, 1147, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, 1148, - 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 1231, 1138, - 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, 520, + 424, 433, 1236, 500, 518, 530, 540, 546, 547, 549, + 550, 551, 552, 553, 556, 554, 390, 297, 474, 319, + 357, 1225, 1267, 408, 452, 230, 522, 475, 1142, 1146, + 1140, 1207, 1141, 1196, 1197, 1143, 1258, 1259, 1260, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 0, 1229, 1136, + 0, 1144, 1145, 1238, 1247, 1248, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 1202, 190, 211, 352, - 1265, 434, 275, 561, 533, 528, 197, 213, 1141, 249, - 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, 1191, - 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, 1246, - 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, + 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, + 448, 447, 317, 318, 363, 431, 1200, 190, 211, 352, + 1263, 434, 275, 560, 532, 527, 197, 213, 1139, 249, + 1150, 1158, 0, 1164, 1172, 1173, 1185, 1187, 1188, 1189, + 1190, 1208, 1209, 1211, 1219, 1221, 1224, 1226, 1233, 1244, + 1266, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 1201, 1207, 365, - 268, 291, 306, 1216, 532, 481, 217, 446, 277, 240, - 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, + 468, 469, 470, 471, 479, 480, 484, 507, 509, 521, + 539, 544, 460, 287, 288, 426, 427, 300, 301, 557, + 558, 286, 516, 545, 0, 0, 362, 1199, 1205, 365, + 268, 291, 306, 1214, 531, 481, 217, 446, 277, 240, + 1232, 1234, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 1197, 1225, 360, 497, - 498, 302, 380, 0, 0, 0, 1254, 1239, 496, 0, - 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, 1196, - 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, 257, - 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, 1172, - 196, 1220, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 1263, 354, 1206, 0, - 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, 1181, - 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 803, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, 1165, - 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, 1193, - 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, 1270, - 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, - 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, 1233, - 1179, 0, 0, 0, 0, 0, 2057, 0, 1157, 0, - 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1183, 0, - 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, 284, - 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, 1178, - 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, 215, - 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, 1161, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 1134, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, - 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 1149, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 1238, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 1227, 1269, 408, 452, - 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, 1199, - 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, 570, + 488, 489, 491, 379, 253, 416, 1195, 1223, 360, 497, + 498, 302, 380, 0, 0, 0, 0, 0, 496, 0, + 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 0, 668, 0, 0, 0, 257, + 673, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 680, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 676, 677, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 89, 0, 0, 818, 802, + 768, 769, 806, 819, 820, 821, 822, 807, 0, 228, + 808, 809, 235, 810, 0, 767, 708, 710, 709, 727, + 728, 729, 730, 731, 732, 733, 706, 815, 823, 824, + 0, 252, 307, 259, 251, 501, 0, 0, 1930, 1931, + 1932, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 650, 665, 0, 679, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 662, 663, 0, 0, 0, 0, + 762, 0, 664, 0, 0, 672, 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, 675, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 761, 0, 0, 541, 0, 0, + 759, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 812, 0, + 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, + 389, 529, 490, 537, 559, 216, 247, 403, 483, 523, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, + 214, 459, 355, 232, 221, 508, 526, 276, 436, 555, + 203, 485, 515, 229, 463, 0, 0, 561, 205, 513, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 813, 814, 243, 562, 714, 536, 210, 0, 535, + 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, + 722, 723, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 524, 0, 199, 0, 478, 525, 563, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, + 540, 546, 547, 549, 550, 551, 552, 553, 556, 554, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 522, 475, 772, 760, 685, 776, 687, 773, 774, 682, + 683, 686, 775, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, 1249, - 1250, 583, 368, 465, 520, 321, 333, 336, 326, 345, - 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, - 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 1202, 190, 211, 352, 1265, 434, 275, 561, 533, - 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, 1174, - 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, 1221, - 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, 532, - 481, 217, 446, 277, 240, 1234, 1236, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 1197, 1225, 360, 497, 498, 302, 380, 0, 0, - 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, 1267, - 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, 1125, - 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, 350, - 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 1263, 354, 1206, 0, 476, 384, 0, 0, 0, - 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, 1168, - 1215, 1259, 309, 237, 311, 195, 396, 477, 273, 0, - 89, 0, 0, 0, 630, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, 251, - 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, 1255, - 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, - 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, - 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, 0, - 0, 0, 0, 1157, 0, 1204, 0, 0, 0, 1136, - 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1183, 0, 0, 0, 0, 1139, 0, - 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, 1237, - 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, 1171, - 349, 1135, 316, 191, 215, 0, 1169, 395, 441, 453, - 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, 271, - 438, 415, 449, 422, 274, 1203, 1222, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 1134, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 1149, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, 1148, - 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 1231, 1138, - 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 1202, 190, 211, 352, - 1265, 434, 275, 561, 533, 528, 197, 213, 1141, 249, - 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, 1191, - 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, 1246, - 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 1201, 1207, 365, - 268, 291, 306, 1216, 532, 481, 217, 446, 277, 240, - 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 1197, 1225, 360, 497, - 498, 302, 380, 0, 0, 0, 1254, 1239, 496, 0, - 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, 1196, - 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, 257, - 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, 1172, - 196, 1220, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 1263, 354, 1206, 0, - 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, 1181, - 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 630, + 581, 0, 763, 671, 670, 0, 678, 0, 704, 705, + 707, 711, 712, 713, 724, 725, 726, 734, 736, 737, + 735, 738, 739, 740, 743, 744, 745, 746, 741, 742, + 747, 688, 692, 689, 690, 691, 703, 693, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 786, 787, 788, + 789, 790, 791, 717, 721, 720, 718, 719, 715, 716, + 669, 190, 211, 352, 0, 434, 275, 560, 532, 527, + 197, 213, 777, 249, 778, 0, 0, 782, 0, 0, + 0, 784, 783, 0, 785, 751, 750, 0, 0, 779, + 780, 0, 781, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 509, 521, 539, 544, 460, 792, 793, 794, + 795, 796, 797, 798, 799, 286, 516, 545, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, + 217, 446, 277, 240, 817, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 380, 0, 360, 497, 498, 302, 496, 0, 681, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, + 0, 0, 0, 668, 0, 0, 0, 257, 673, 0, + 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, + 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, + 369, 411, 486, 405, 680, 354, 0, 0, 476, 384, + 0, 0, 0, 0, 0, 676, 677, 0, 0, 0, + 0, 0, 0, 2080, 0, 309, 237, 311, 195, 396, + 477, 273, 0, 89, 0, 0, 818, 802, 768, 769, + 806, 819, 820, 821, 822, 807, 0, 228, 808, 809, + 235, 810, 0, 767, 708, 710, 709, 727, 728, 729, + 730, 731, 732, 733, 706, 815, 823, 824, 2081, 252, + 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 0, 0, 0, 0, 0, 650, + 665, 0, 679, 0, 0, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 662, 663, 0, 0, 0, 0, 762, 0, + 664, 0, 0, 672, 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, 675, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, + 244, 0, 761, 0, 0, 541, 0, 0, 759, 0, + 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, + 395, 441, 453, 0, 0, 0, 812, 0, 451, 409, + 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, + 450, 356, 506, 432, 517, 542, 543, 250, 389, 529, + 490, 537, 559, 216, 247, 403, 483, 523, 473, 381, + 502, 503, 315, 472, 282, 194, 353, 548, 214, 459, + 355, 232, 221, 508, 526, 276, 436, 555, 203, 485, + 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, + 312, 313, 204, 0, 437, 255, 280, 245, 398, 813, + 814, 243, 562, 714, 536, 210, 0, 535, 391, 505, + 514, 378, 367, 209, 512, 376, 366, 320, 722, 723, + 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, + 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, + 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, + 402, 428, 424, 433, 0, 500, 518, 530, 540, 546, + 547, 549, 550, 551, 552, 553, 556, 554, 390, 297, + 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, + 772, 760, 685, 776, 687, 773, 774, 682, 683, 686, + 775, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, + 763, 671, 670, 0, 678, 0, 704, 705, 707, 711, + 712, 713, 724, 725, 726, 734, 736, 737, 735, 738, + 739, 740, 743, 744, 745, 746, 741, 742, 747, 688, + 692, 689, 690, 691, 703, 693, 694, 695, 696, 697, + 698, 699, 700, 701, 702, 786, 787, 788, 789, 790, + 791, 717, 721, 720, 718, 719, 715, 716, 669, 190, + 211, 352, 0, 434, 275, 560, 532, 527, 197, 213, + 777, 249, 778, 0, 0, 782, 0, 0, 0, 784, + 783, 0, 785, 751, 750, 0, 0, 779, 780, 0, + 781, 0, 0, 192, 193, 200, 212, 222, 226, 233, + 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, + 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, + 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, + 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, + 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, + 509, 521, 539, 544, 460, 792, 793, 794, 795, 796, + 797, 798, 799, 286, 516, 545, 0, 0, 362, 0, + 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, + 277, 240, 817, 0, 202, 236, 220, 246, 261, 264, + 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, + 464, 487, 488, 489, 491, 379, 253, 416, 0, 380, + 360, 497, 498, 302, 80, 496, 0, 681, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 668, 0, 0, 0, 257, 673, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 680, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 676, 677, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 89, 0, 0, 818, 802, 768, 769, 806, + 819, 820, 821, 822, 807, 0, 228, 808, 809, 235, + 810, 0, 767, 708, 710, 709, 727, 728, 729, 730, + 731, 732, 733, 706, 815, 823, 824, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 650, 665, + 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 662, 663, 0, 0, 0, 0, 762, 0, 664, + 0, 0, 672, 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, 675, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 761, 0, 0, 541, 0, 0, 759, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 812, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 813, 814, + 243, 562, 714, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 722, 723, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 772, + 760, 685, 776, 687, 773, 774, 682, 683, 686, 775, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 763, + 671, 670, 0, 678, 0, 704, 705, 707, 711, 712, + 713, 724, 725, 726, 734, 736, 737, 735, 738, 739, + 740, 743, 744, 745, 746, 741, 742, 747, 688, 692, + 689, 690, 691, 703, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 786, 787, 788, 789, 790, 791, + 717, 721, 720, 718, 719, 715, 716, 669, 190, 211, + 352, 88, 434, 275, 560, 532, 527, 197, 213, 777, + 249, 778, 0, 0, 782, 0, 0, 0, 784, 783, + 0, 785, 751, 750, 0, 0, 779, 780, 0, 781, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 792, 793, 794, 795, 796, 797, + 798, 799, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 681, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 668, 0, 0, 0, 257, 673, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 680, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 676, 677, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 89, 0, 0, 818, 802, 768, 769, 806, 819, 820, + 821, 822, 807, 0, 228, 808, 809, 235, 810, 0, + 767, 708, 710, 709, 727, 728, 729, 730, 731, 732, + 733, 706, 815, 823, 824, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 650, 665, 0, 679, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 662, + 663, 0, 0, 0, 0, 762, 0, 664, 0, 0, + 672, 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, 675, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 761, + 0, 0, 541, 0, 0, 759, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 812, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 3387, 0, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 813, 814, 243, 562, + 714, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 722, 723, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 772, 760, 685, + 776, 687, 773, 774, 682, 683, 686, 775, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 763, 671, 670, + 0, 678, 0, 704, 705, 707, 711, 712, 713, 724, + 725, 726, 734, 736, 737, 735, 738, 739, 740, 743, + 744, 745, 746, 741, 742, 747, 688, 692, 689, 690, + 691, 703, 693, 694, 695, 696, 697, 698, 699, 700, + 701, 702, 786, 787, 788, 789, 790, 791, 717, 721, + 720, 718, 719, 715, 716, 669, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 777, 249, 778, + 0, 0, 782, 0, 0, 0, 784, 783, 0, 785, + 751, 750, 0, 0, 779, 780, 0, 781, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 792, 793, 794, 795, 796, 797, 798, 799, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 817, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 681, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 668, 0, + 0, 0, 257, 673, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 680, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 676, 677, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, + 1500, 818, 802, 768, 769, 806, 819, 820, 821, 822, + 807, 0, 228, 808, 809, 235, 810, 0, 767, 708, + 710, 709, 727, 728, 729, 730, 731, 732, 733, 706, + 815, 823, 824, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 650, 665, 0, 679, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 662, 663, 0, + 0, 0, 0, 762, 0, 664, 0, 0, 672, 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, 675, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 761, 0, 0, + 541, 0, 0, 759, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 812, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 813, 814, 243, 562, 714, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 376, 366, 320, 722, 723, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 772, 760, 685, 776, 687, + 773, 774, 682, 683, 686, 775, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 763, 671, 670, 0, 678, + 0, 704, 705, 707, 711, 712, 713, 724, 725, 726, + 734, 736, 737, 735, 738, 739, 740, 743, 744, 745, + 746, 741, 742, 747, 688, 692, 689, 690, 691, 703, + 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, + 786, 787, 788, 789, 790, 791, 717, 721, 720, 718, + 719, 715, 716, 669, 190, 211, 352, 0, 434, 275, + 560, 532, 527, 197, 213, 777, 249, 778, 0, 0, + 782, 0, 0, 0, 784, 783, 0, 785, 751, 750, + 0, 0, 779, 780, 0, 781, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 792, 793, 794, 795, 796, 797, 798, 799, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 817, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 668, 0, 0, 0, + 257, 673, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 680, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 676, 677, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 818, + 802, 768, 769, 806, 819, 820, 821, 822, 807, 0, + 228, 808, 809, 235, 810, 0, 767, 708, 710, 709, + 727, 728, 729, 730, 731, 732, 733, 706, 815, 823, + 824, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 650, 665, 0, 679, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 662, 663, 907, 0, 0, + 0, 762, 0, 664, 0, 0, 672, 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, 675, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 761, 0, 0, 541, 0, + 0, 759, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 812, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 813, 814, 243, 562, 714, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, + 320, 722, 723, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 772, 760, 685, 776, 687, 773, 774, + 682, 683, 686, 775, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 763, 671, 670, 0, 678, 0, 704, + 705, 707, 711, 712, 713, 724, 725, 726, 734, 736, + 737, 735, 738, 739, 740, 743, 744, 745, 746, 741, + 742, 747, 688, 692, 689, 690, 691, 703, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 786, 787, + 788, 789, 790, 791, 717, 721, 720, 718, 719, 715, + 716, 669, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 777, 249, 778, 0, 0, 782, 0, + 0, 0, 784, 783, 0, 785, 751, 750, 0, 0, + 779, 780, 0, 781, 0, 0, 192, 193, 200, 212, + 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 509, 521, 539, 544, 460, 792, 793, + 794, 795, 796, 797, 798, 799, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 481, 217, 446, 277, 240, 817, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 681, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 668, 0, 0, 0, 257, 673, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 680, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 676, 677, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 89, 0, 0, 818, 802, 768, + 769, 806, 819, 820, 821, 822, 807, 0, 228, 808, + 809, 235, 810, 0, 767, 708, 710, 709, 727, 728, + 729, 730, 731, 732, 733, 706, 815, 823, 824, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 650, 665, 0, 679, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 662, 663, 0, 0, 0, 0, 762, + 0, 664, 0, 0, 672, 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, 675, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 761, 0, 0, 541, 0, 0, 759, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 812, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 813, 814, 243, 562, 714, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 722, + 723, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 475, 772, 760, 685, 776, 687, 773, 774, 682, 683, + 686, 775, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 763, 671, 670, 0, 678, 0, 704, 705, 707, + 711, 712, 713, 724, 725, 726, 734, 736, 737, 735, + 738, 739, 740, 743, 744, 745, 746, 741, 742, 747, + 688, 692, 689, 690, 691, 703, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 786, 787, 788, 789, + 790, 791, 717, 721, 720, 718, 719, 715, 716, 669, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, + 213, 777, 249, 778, 0, 0, 782, 0, 0, 0, + 784, 783, 0, 785, 751, 750, 0, 0, 779, 780, + 0, 781, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 509, 521, 539, 544, 460, 792, 793, 794, 795, + 796, 797, 798, 799, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 446, 277, 240, 817, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 681, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 668, 0, 0, 0, 257, 673, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 680, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 676, 677, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 89, 0, 0, 818, 802, 768, 769, 806, + 819, 820, 821, 822, 807, 0, 228, 808, 809, 235, + 810, 0, 767, 708, 710, 709, 727, 728, 729, 730, + 731, 732, 733, 706, 815, 823, 824, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 665, + 0, 679, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 662, 663, 0, 0, 0, 0, 762, 0, 664, + 0, 0, 672, 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, 675, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 761, 0, 0, 541, 0, 0, 759, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 812, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 813, 814, + 243, 562, 714, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 722, 723, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 772, + 760, 685, 776, 687, 773, 774, 682, 683, 686, 775, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 763, + 671, 670, 0, 678, 0, 704, 705, 707, 711, 712, + 713, 724, 725, 726, 734, 736, 737, 735, 738, 739, + 740, 743, 744, 745, 746, 741, 742, 747, 688, 692, + 689, 690, 691, 703, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 786, 787, 788, 789, 790, 791, + 717, 721, 720, 718, 719, 715, 716, 669, 190, 211, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 777, + 249, 778, 0, 0, 782, 0, 0, 0, 784, 783, + 0, 785, 751, 750, 0, 0, 779, 780, 0, 781, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 792, 793, 794, 795, 796, 797, + 798, 799, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 817, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 977, 541, 0, 0, 0, 0, 0, 974, 975, + 349, 935, 316, 191, 215, 968, 972, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 1463, 802, 0, 0, 1460, 0, 0, 0, 0, + 1458, 0, 228, 1459, 1457, 235, 1462, 0, 767, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 0, 380, 360, 497, 498, 302, 80, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, + 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, + 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, + 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, + 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, + 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, + 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 0, 385, 244, 0, 0, 0, 0, 541, + 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, + 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, + 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, + 422, 274, 0, 0, 450, 356, 506, 432, 517, 542, + 543, 250, 389, 529, 490, 537, 559, 216, 247, 403, + 483, 523, 473, 381, 502, 503, 315, 472, 282, 194, + 353, 548, 214, 459, 355, 232, 221, 508, 526, 276, + 436, 555, 203, 485, 515, 229, 463, 0, 0, 561, + 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, + 280, 245, 398, 510, 511, 243, 562, 218, 536, 210, + 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, + 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, + 294, 387, 386, 388, 198, 524, 0, 199, 0, 478, + 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, + 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, + 518, 530, 540, 546, 547, 549, 550, 551, 552, 553, + 556, 554, 390, 297, 474, 319, 357, 0, 0, 408, + 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, + 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, + 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, + 207, 208, 492, 493, 494, 495, 533, 534, 538, 442, + 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, + 363, 431, 0, 190, 211, 352, 88, 434, 275, 560, + 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, + 0, 0, 2067, 0, 0, 2066, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, + 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, + 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, + 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, + 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, + 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, + 479, 480, 484, 507, 509, 521, 539, 544, 460, 287, + 288, 426, 427, 300, 301, 557, 558, 286, 516, 545, + 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, + 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, + 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, + 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, + 253, 416, 1519, 0, 360, 497, 498, 302, 496, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 0, 0, 0, 1521, 0, 0, 0, 0, 257, + 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, + 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, + 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, + 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, + 195, 396, 477, 273, 0, 0, 0, 0, 1523, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, 1165, - 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, 1193, - 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, 1270, - 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, - 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, 1233, - 1179, 0, 0, 0, 0, 0, 0, 0, 1157, 0, - 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1183, 0, - 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, 284, - 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, 1178, - 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, 215, - 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, 1161, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 1134, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, + 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 1297, 0, 1298, + 1299, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, + 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, + 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, + 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, + 0, 0, 450, 356, 506, 432, 517, 542, 543, 250, + 389, 529, 490, 537, 559, 216, 247, 403, 483, 523, + 473, 381, 502, 503, 315, 472, 282, 194, 353, 548, + 214, 459, 355, 232, 221, 508, 526, 276, 436, 555, + 203, 485, 515, 229, 463, 0, 0, 561, 205, 513, + 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, + 398, 510, 511, 243, 562, 218, 536, 210, 0, 535, + 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, + 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, + 386, 388, 198, 524, 0, 199, 0, 478, 525, 563, + 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, + 299, 351, 402, 428, 424, 433, 0, 500, 518, 530, + 540, 546, 547, 549, 550, 551, 552, 553, 556, 554, + 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, + 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 564, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, + 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, + 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, + 492, 493, 494, 495, 533, 534, 538, 442, 443, 444, + 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, + 0, 190, 211, 352, 0, 434, 275, 560, 532, 527, + 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, + 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, + 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, + 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, + 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, + 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, + 484, 507, 509, 521, 539, 544, 460, 287, 288, 426, + 427, 300, 301, 557, 558, 286, 516, 545, 0, 0, + 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, + 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, + 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, + 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, + 0, 380, 360, 497, 498, 302, 80, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 89, 0, 1500, 0, 629, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 88, 434, 275, 560, 532, 527, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 89, 0, 0, 0, 188, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 2067, 0, 0, + 2066, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 2017, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 1700, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 0, 2015, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 935, + 316, 191, 215, 933, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 2017, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 1700, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 1149, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 1238, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 1227, 1269, 408, 452, - 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, 1199, - 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, 1249, - 1250, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 1202, 190, 211, 352, 1265, 434, 275, 561, 533, - 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, 1174, - 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, 1221, - 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, 212, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, 532, - 481, 217, 446, 277, 240, 1234, 1236, 202, 236, 220, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 1197, 1225, 360, 497, 498, 302, 380, 0, 0, - 0, 1254, 1239, 496, 0, 1182, 1257, 1151, 1170, 1267, - 1173, 1176, 1218, 1130, 1196, 399, 1167, 1123, 1155, 1125, - 1162, 1126, 1153, 1184, 257, 1150, 1241, 1200, 1256, 350, - 254, 1132, 1156, 413, 1172, 196, 1220, 466, 241, 361, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 0, 0, 1500, 0, 629, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 3297, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 1850, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1851, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 1263, 354, 1206, 0, 476, 384, 0, 0, 0, - 1186, 1245, 1194, 1232, 1181, 1219, 1140, 1205, 1258, 1168, - 1215, 1259, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 803, 0, 0, 0, 0, 0, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 2418, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 1164, 1212, 1253, 1165, 1214, 252, 307, 259, 251, - 501, 1264, 1244, 1129, 1193, 1252, 0, 0, 219, 1255, - 1188, 0, 1217, 0, 1270, 1124, 1208, 0, 1127, 1131, - 1266, 1248, 1159, 262, 0, 0, 0, 0, 0, 0, - 0, 1185, 1195, 1229, 1233, 1179, 0, 0, 0, 0, - 0, 0, 0, 1157, 0, 1204, 0, 0, 0, 1136, - 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1183, 0, 0, 0, 0, 1139, 0, - 1158, 1230, 0, 1122, 284, 1133, 385, 244, 0, 1237, - 1247, 1180, 542, 1251, 1178, 1177, 1224, 1137, 1243, 1171, - 349, 1135, 316, 191, 215, 0, 1169, 395, 441, 453, - 1242, 1154, 1163, 242, 1161, 451, 409, 521, 223, 271, - 438, 415, 449, 422, 274, 1203, 1222, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 1134, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 1149, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 1238, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 1227, 1269, 408, 452, 230, 523, 475, 1144, 1148, - 1142, 1209, 1143, 1198, 1199, 1145, 1260, 1261, 1262, 565, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2419, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 1231, 1138, - 0, 1146, 1147, 1240, 1249, 1250, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 1202, 190, 211, 352, - 1265, 434, 275, 561, 533, 528, 197, 213, 1141, 249, - 1152, 1160, 0, 1166, 1174, 1175, 1187, 1189, 1190, 1191, - 1192, 1210, 1211, 1213, 1221, 1223, 1226, 1228, 1235, 1246, - 1268, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 1201, 1207, 365, - 268, 291, 306, 1216, 532, 481, 217, 446, 277, 240, - 1234, 1236, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 1197, 1225, 360, 497, - 498, 302, 380, 0, 0, 0, 1254, 1239, 496, 0, - 1182, 1257, 1151, 1170, 1267, 1173, 1176, 1218, 1130, 1196, - 399, 1167, 1123, 1155, 1125, 1162, 1126, 1153, 1184, 257, - 1150, 1241, 1200, 1256, 350, 254, 1132, 1156, 413, 1172, - 196, 1220, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 1263, 354, 1206, 0, - 476, 384, 0, 0, 0, 1186, 1245, 1194, 1232, 1181, - 1219, 1140, 1205, 1258, 1168, 1215, 1259, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 1164, 1212, 1253, 1165, - 1214, 252, 307, 259, 251, 501, 1264, 1244, 1129, 1193, - 1252, 0, 0, 219, 1255, 1188, 0, 1217, 0, 1270, - 1124, 1208, 0, 1127, 1131, 1266, 1248, 1159, 262, 0, - 0, 0, 0, 0, 0, 0, 1185, 1195, 1229, 1233, - 1179, 0, 0, 0, 0, 0, 0, 0, 1157, 0, - 1204, 0, 0, 0, 1136, 1128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1183, 0, - 0, 0, 0, 1139, 0, 1158, 1230, 0, 1122, 284, - 1133, 385, 244, 0, 1237, 1247, 1180, 542, 1251, 1178, - 1177, 1224, 1137, 1243, 1171, 349, 1135, 316, 191, 215, - 0, 1169, 395, 441, 453, 1242, 1154, 1163, 242, 1161, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 1203, 1222, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 1134, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, + 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, + 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 2403, 0, 0, + 0, 0, 228, 0, 0, 235, 2404, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, + 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, + 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, + 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, + 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, + 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, + 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 1542, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 1541, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 1149, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 1238, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 1227, 1269, 408, 452, - 230, 523, 475, 1144, 1148, 1142, 1209, 1143, 1198, 1199, - 1145, 1260, 1261, 1262, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 1231, 1138, 0, 1146, 1147, 1240, 1249, - 1250, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 1202, 190, 211, 352, 1265, 434, 275, 561, 533, - 528, 197, 213, 1141, 249, 1152, 1160, 0, 1166, 1174, - 1175, 1187, 1189, 1190, 1191, 1192, 1210, 1211, 1213, 1221, - 1223, 1226, 1228, 1235, 1246, 1268, 192, 193, 200, 212, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 1201, 1207, 365, 268, 291, 306, 1216, 532, - 481, 217, 446, 277, 240, 1234, 1236, 202, 236, 220, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 1197, 1225, 360, 497, 498, 302, 380, 0, 0, - 0, 0, 0, 496, 0, 682, 0, 0, 0, 0, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 0, 0, 0, 0, 631, 632, + 633, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 541, 0, 0, 0, 3421, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 669, 0, 0, 0, 257, 674, 0, 0, 0, 350, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 681, 354, 0, 0, 476, 384, 0, 0, 0, - 0, 0, 677, 678, 0, 0, 0, 0, 0, 0, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 89, 0, 0, 819, 803, 769, 770, 807, 820, 821, - 822, 823, 808, 0, 228, 809, 810, 235, 811, 0, - 768, 709, 711, 710, 728, 729, 730, 731, 732, 733, - 734, 707, 816, 824, 825, 0, 252, 307, 259, 251, - 501, 0, 0, 1936, 1937, 1938, 0, 0, 219, 0, - 0, 0, 0, 0, 0, 0, 651, 666, 0, 680, + 0, 0, 0, 1700, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, - 664, 0, 0, 0, 0, 763, 0, 665, 0, 0, - 673, 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, 676, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 762, - 0, 0, 542, 0, 0, 760, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 813, 0, 451, 409, 521, 223, 271, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 814, 815, 243, - 563, 715, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 723, 724, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 773, 761, - 686, 777, 688, 774, 775, 683, 684, 687, 776, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 764, 672, - 671, 0, 679, 0, 705, 706, 708, 712, 713, 714, - 725, 726, 727, 735, 737, 738, 736, 739, 740, 741, - 744, 745, 746, 747, 742, 743, 748, 689, 693, 690, - 691, 692, 704, 694, 695, 696, 697, 698, 699, 700, - 701, 702, 703, 787, 788, 789, 790, 791, 792, 718, - 722, 721, 719, 720, 716, 717, 670, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 778, 249, - 779, 0, 0, 783, 0, 0, 0, 785, 784, 0, - 786, 752, 751, 0, 0, 780, 781, 0, 782, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 793, 794, 795, 796, 797, 798, 799, - 800, 286, 517, 546, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 818, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 682, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 669, - 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 681, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 677, 678, 0, 0, 0, 0, 0, 0, 2086, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 0, 819, 803, 769, 770, 807, 820, 821, 822, - 823, 808, 0, 228, 809, 810, 235, 811, 0, 768, - 709, 711, 710, 728, 729, 730, 731, 732, 733, 734, - 707, 816, 824, 825, 2087, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 651, 666, 0, 680, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 663, 664, - 0, 0, 0, 0, 763, 0, 665, 0, 0, 673, - 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, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 762, 0, - 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 814, 815, 243, 563, - 715, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 723, 724, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, - 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 773, 761, 686, - 777, 688, 774, 775, 683, 684, 687, 776, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 764, 672, 671, - 0, 679, 0, 705, 706, 708, 712, 713, 714, 725, - 726, 727, 735, 737, 738, 736, 739, 740, 741, 744, - 745, 746, 747, 742, 743, 748, 689, 693, 690, 691, - 692, 704, 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 787, 788, 789, 790, 791, 792, 718, 722, - 721, 719, 720, 716, 717, 670, 190, 211, 352, 0, - 434, 275, 561, 533, 528, 197, 213, 778, 249, 779, - 0, 0, 783, 0, 0, 0, 785, 784, 0, 786, - 752, 751, 0, 0, 780, 781, 0, 782, 0, 0, - 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, - 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, - 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, - 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, - 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 793, 794, 795, 796, 797, 798, 799, 800, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 818, - 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, - 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, - 489, 491, 379, 253, 416, 0, 380, 360, 497, 498, - 302, 80, 496, 0, 682, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 669, - 0, 0, 0, 257, 674, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 681, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 677, 678, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 89, - 0, 0, 819, 803, 769, 770, 807, 820, 821, 822, - 823, 808, 0, 228, 809, 810, 235, 811, 0, 768, - 709, 711, 710, 728, 729, 730, 731, 732, 733, 734, - 707, 816, 824, 825, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 651, 666, 0, 680, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 663, 664, - 0, 0, 0, 0, 763, 0, 665, 0, 0, 673, - 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, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 762, 0, - 0, 542, 0, 0, 760, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 813, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 814, 815, 243, 563, - 715, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 723, 724, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 773, 761, 686, - 777, 688, 774, 775, 683, 684, 687, 776, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 764, 672, 671, - 0, 679, 0, 705, 706, 708, 712, 713, 714, 725, - 726, 727, 735, 737, 738, 736, 739, 740, 741, 744, - 745, 746, 747, 742, 743, 748, 689, 693, 690, 691, - 692, 704, 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 787, 788, 789, 790, 791, 792, 718, 722, - 721, 719, 720, 716, 717, 670, 190, 211, 352, 88, - 434, 275, 561, 533, 528, 197, 213, 778, 249, 779, - 0, 0, 783, 0, 0, 0, 785, 784, 0, 786, - 752, 751, 0, 0, 780, 781, 0, 782, 0, 0, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 793, 794, 795, 796, 797, 798, 799, 800, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 818, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, - 302, 496, 0, 682, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 669, 0, - 0, 0, 257, 674, 0, 0, 0, 350, 254, 0, + 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, - 269, 260, 256, 239, 303, 369, 411, 486, 405, 681, + 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, - 677, 678, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 89, 0, - 0, 819, 803, 769, 770, 807, 820, 821, 822, 823, - 808, 0, 228, 809, 810, 235, 811, 0, 768, 709, - 711, 710, 728, 729, 730, 731, 732, 733, 734, 707, - 816, 824, 825, 0, 252, 307, 259, 251, 501, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, + 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, + 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, - 0, 0, 0, 0, 651, 666, 0, 680, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 663, 664, 0, - 0, 0, 0, 763, 0, 665, 0, 0, 673, 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, 676, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 762, 0, 0, - 542, 0, 0, 760, 0, 0, 0, 0, 349, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 541, 0, 0, 0, 3297, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 813, 0, 451, 409, 521, 223, 271, 438, 415, - 449, 422, 274, 3395, 0, 450, 356, 506, 432, 518, - 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, - 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, - 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, - 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 814, 815, 243, 563, 715, - 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, - 513, 376, 366, 320, 723, 724, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, - 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, - 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 523, 475, 773, 761, 686, 777, - 688, 774, 775, 683, 684, 687, 776, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 0, 764, 672, 671, 0, - 679, 0, 705, 706, 708, 712, 713, 714, 725, 726, - 727, 735, 737, 738, 736, 739, 740, 741, 744, 745, - 746, 747, 742, 743, 748, 689, 693, 690, 691, 692, - 704, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 787, 788, 789, 790, 791, 792, 718, 722, 721, - 719, 720, 716, 717, 670, 190, 211, 352, 0, 434, - 275, 561, 533, 528, 197, 213, 778, 249, 779, 0, - 0, 783, 0, 0, 0, 785, 784, 0, 786, 752, - 751, 0, 0, 780, 781, 0, 782, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 793, 794, 795, 796, 797, 798, 799, 800, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 818, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 682, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 669, 0, 0, - 0, 257, 674, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 681, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 677, - 678, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 1502, - 819, 803, 769, 770, 807, 820, 821, 822, 823, 808, - 0, 228, 809, 810, 235, 811, 0, 768, 709, 711, - 710, 728, 729, 730, 731, 732, 733, 734, 707, 816, - 824, 825, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 651, 666, 0, 680, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 663, 664, 0, 0, - 0, 0, 763, 0, 665, 0, 0, 673, 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, - 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 762, 0, 0, 542, - 0, 0, 760, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 813, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 814, 815, 243, 563, 715, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, - 376, 366, 320, 723, 724, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, + 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 773, 761, 686, 777, 688, - 774, 775, 683, 684, 687, 776, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 764, 672, 671, 0, 679, - 0, 705, 706, 708, 712, 713, 714, 725, 726, 727, - 735, 737, 738, 736, 739, 740, 741, 744, 745, 746, - 747, 742, 743, 748, 689, 693, 690, 691, 692, 704, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, - 787, 788, 789, 790, 791, 792, 718, 722, 721, 719, - 720, 716, 717, 670, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 778, 249, 779, 0, 0, - 783, 0, 0, 0, 785, 784, 0, 786, 752, 751, - 0, 0, 780, 781, 0, 782, 0, 0, 192, 193, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, + 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, + 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 793, 794, 795, 796, 797, 798, 799, 800, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 818, 0, 202, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 669, 0, 0, 0, - 257, 674, 0, 0, 0, 350, 254, 0, 0, 413, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, - 256, 239, 303, 369, 411, 486, 405, 681, 354, 0, - 0, 476, 384, 0, 0, 0, 0, 0, 677, 678, + 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, + 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 89, 0, 0, 819, - 803, 769, 770, 807, 820, 821, 822, 823, 808, 0, - 228, 809, 810, 235, 811, 0, 768, 709, 711, 710, - 728, 729, 730, 731, 732, 733, 734, 707, 816, 824, - 825, 0, 252, 307, 259, 251, 501, 0, 0, 0, + 311, 195, 396, 477, 273, 0, 89, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, + 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, + 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, - 0, 0, 651, 666, 0, 680, 0, 0, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 663, 664, 908, 0, 0, - 0, 763, 0, 665, 0, 0, 673, 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, 676, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 762, 0, 0, 542, 0, - 0, 760, 0, 0, 0, 0, 349, 0, 316, 191, - 215, 0, 0, 395, 441, 453, 0, 0, 0, 813, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, - 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, - 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, - 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, - 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 814, 815, 243, 563, 715, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 723, 724, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 773, 761, 686, 777, 688, 774, - 775, 683, 684, 687, 776, 565, 566, 567, 568, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, + 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, + 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 764, 672, 671, 0, 679, 0, - 705, 706, 708, 712, 713, 714, 725, 726, 727, 735, - 737, 738, 736, 739, 740, 741, 744, 745, 746, 747, - 742, 743, 748, 689, 693, 690, 691, 692, 704, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 787, - 788, 789, 790, 791, 792, 718, 722, 721, 719, 720, - 716, 717, 670, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 778, 249, 779, 0, 0, 783, - 0, 0, 0, 785, 784, 0, 786, 752, 751, 0, - 0, 780, 781, 0, 782, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 793, - 794, 795, 796, 797, 798, 799, 800, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 818, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 669, 0, 0, 0, 257, - 674, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 681, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 677, 678, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 89, 0, 0, 819, 803, - 769, 770, 807, 820, 821, 822, 823, 808, 0, 228, - 809, 810, 235, 811, 0, 768, 709, 711, 710, 728, - 729, 730, 731, 732, 733, 734, 707, 816, 824, 825, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 651, 666, 0, 680, 0, 0, 0, 262, 0, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, + 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, + 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 663, 664, 0, 0, 0, 0, - 763, 0, 665, 0, 0, 673, 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, 676, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 762, 0, 0, 542, 0, 0, - 760, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 813, 0, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 814, 815, 243, 563, 715, 537, 210, 0, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, - 320, 723, 724, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 773, 761, 686, 777, 688, 774, 775, - 683, 684, 687, 776, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 764, 672, 671, 0, 679, 0, 705, - 706, 708, 712, 713, 714, 725, 726, 727, 735, 737, - 738, 736, 739, 740, 741, 744, 745, 746, 747, 742, - 743, 748, 689, 693, 690, 691, 692, 704, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 787, 788, - 789, 790, 791, 792, 718, 722, 721, 719, 720, 716, - 717, 670, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 778, 249, 779, 0, 0, 783, 0, - 0, 0, 785, 784, 0, 786, 752, 751, 0, 0, - 780, 781, 0, 782, 0, 0, 192, 193, 200, 212, + 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 793, 794, - 795, 796, 797, 798, 799, 800, 286, 517, 546, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, - 481, 217, 446, 277, 240, 818, 0, 202, 236, 220, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 682, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 669, 0, 0, 0, 257, 674, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 2068, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 681, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 677, 678, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 89, 0, 0, 819, 803, 769, - 770, 807, 820, 821, 822, 823, 808, 0, 228, 809, - 810, 235, 811, 0, 768, 709, 711, 710, 728, 729, - 730, 731, 732, 733, 734, 707, 816, 824, 825, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 0, 666, 0, 680, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 663, 664, 0, 0, 0, 0, 763, - 0, 665, 0, 0, 673, 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, 676, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 762, 0, 0, 542, 0, 0, 760, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 813, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, - 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, - 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, - 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 814, 815, 243, 563, 715, 537, 210, 0, 536, - 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 723, 724, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, - 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 773, 761, 686, 777, 688, 774, 775, 683, - 684, 687, 776, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 764, 672, 671, 0, 679, 0, 705, 706, - 708, 712, 713, 714, 725, 726, 727, 735, 737, 738, - 736, 739, 740, 741, 744, 745, 746, 747, 742, 743, - 748, 689, 693, 690, 691, 692, 704, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 787, 788, 789, - 790, 791, 792, 718, 722, 721, 719, 720, 716, 717, - 670, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 778, 249, 779, 0, 0, 783, 0, 0, - 0, 785, 784, 0, 786, 752, 751, 0, 0, 780, - 781, 0, 782, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 793, 794, 795, - 796, 797, 798, 799, 800, 286, 517, 546, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 818, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 979, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 0, 0, 0, 0, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3551,35 +4834,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 978, 542, 0, 0, 0, 0, - 0, 975, 976, 349, 936, 316, 191, 215, 969, 973, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, - 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, - 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, - 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, - 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, - 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, - 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, - 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, @@ -3588,9 +4871,9 @@ var yyAct = [...]int{ 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, - 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, @@ -3602,72 +4885,7 @@ var yyAct = [...]int{ 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1465, 803, 0, 0, 1462, - 0, 0, 0, 0, 1460, 0, 228, 1461, 1459, 235, - 1464, 0, 768, 335, 344, 343, 324, 325, 327, 329, - 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, - 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, - 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, - 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 0, 380, - 360, 497, 498, 302, 80, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, - 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, - 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, - 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 89, 0, 0, 0, 188, 0, 0, 0, + 273, 0, 0, 0, 0, 1523, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -3682,164 +4900,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 88, 434, 275, 561, 533, 528, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 2073, 0, - 0, 2072, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 1521, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 1523, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 1525, 630, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 1299, 0, 1300, 1301, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, - 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, - 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, - 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, - 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, - 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, - 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, - 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, - 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, - 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, - 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, - 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, - 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, - 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, - 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, - 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, - 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, - 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, - 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, - 487, 488, 489, 491, 379, 253, 416, 0, 380, 360, - 497, 498, 302, 80, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 89, 0, 1502, 0, 630, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, - 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, - 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, - 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, - 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, - 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, - 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 88, 434, 275, 561, 533, 528, 197, 213, 0, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, @@ -3847,10 +4935,10 @@ var yyAct = [...]int{ 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, - 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, @@ -3862,7 +4950,7 @@ var yyAct = [...]int{ 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 89, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -3870,106 +4958,41 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 2073, 0, 0, 2072, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 2023, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 1702, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 2021, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, - 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, - 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, @@ -3977,10 +5000,10 @@ var yyAct = [...]int{ 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, @@ -3992,114 +5015,49 @@ var yyAct = [...]int{ 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, - 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 542, 0, 0, 0, 0, 0, 0, 0, 349, 936, - 316, 191, 215, 934, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, - 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, - 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, - 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, - 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, - 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, - 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, - 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, - 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, - 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 2023, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 1702, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, - 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, + 318, 363, 431, 0, 190, 211, 352, 1805, 434, 275, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, @@ -4107,10 +5065,10 @@ var yyAct = [...]int{ 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, @@ -4121,8 +5079,8 @@ var yyAct = [...]int{ 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, - 311, 195, 396, 477, 273, 0, 0, 0, 1502, 0, - 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 311, 195, 396, 477, 273, 0, 0, 0, 0, 1797, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -4136,193 +5094,63 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, - 0, 0, 3305, 0, 0, 0, 349, 0, 316, 191, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, - 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, - 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, - 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, - 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, - 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, - 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 1856, 630, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1857, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, - 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, - 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, - 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, - 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, - 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, - 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, - 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, - 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, - 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, - 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, - 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 2426, 630, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, - 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, - 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2427, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, - 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, - 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, - 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, - 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, - 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, - 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, - 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, - 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, - 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 630, 0, 0, - 0, 0, 2411, 0, 0, 0, 0, 228, 0, 0, - 235, 2412, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, + 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, + 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, + 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, + 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, + 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, + 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, + 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, + 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 1667, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, + 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, + 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, + 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, + 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, + 252, 307, 259, 251, 501, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4330,35 +5158,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, - 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, - 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, - 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, + 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, - 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, - 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, - 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, - 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, @@ -4367,21 +5195,21 @@ var yyAct = [...]int{ 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, - 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 1544, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 1665, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1543, 630, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -4396,99 +5224,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 632, 633, 634, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, - 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, - 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, - 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, - 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, - 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, - 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, @@ -4496,22 +5259,22 @@ var yyAct = [...]int{ 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, - 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 1663, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, @@ -4526,99 +5289,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 542, 0, 0, 0, 3429, 0, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 1702, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, - 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, - 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, @@ -4626,22 +5324,22 @@ var yyAct = [...]int{ 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 1661, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -4656,99 +5354,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 542, 0, 0, 0, 3305, 0, 0, 0, 349, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, - 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, - 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, - 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, - 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, - 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, - 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, - 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, - 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, - 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 89, 0, 0, - 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, @@ -4756,22 +5389,22 @@ var yyAct = [...]int{ 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, - 0, 0, 0, 0, 2074, 0, 0, 0, 0, 0, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 1659, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -4785,100 +5418,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, - 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, - 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, - 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, - 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, - 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, - 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 1525, 630, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, @@ -4886,21 +5454,21 @@ var yyAct = [...]int{ 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 1655, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -4909,105 +5477,40 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, - 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, - 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, - 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, - 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, - 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, - 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, - 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 0, 0, 0, 0, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, - 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, - 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, - 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, - 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, - 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, - 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, - 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 1811, 434, 275, 561, 533, 528, 197, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, @@ -5016,21 +5519,21 @@ var yyAct = [...]int{ 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, - 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 1653, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, - 273, 0, 0, 0, 0, 1803, 630, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, @@ -5045,99 +5548,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 1669, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, - 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, - 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, - 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, - 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, - 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, - 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, @@ -5145,93 +5583,28 @@ var yyAct = [...]int{ 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, - 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 399, 0, 1667, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 1651, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, - 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, - 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, - 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, - 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, - 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, - 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, - 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, - 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, - 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 286, 517, 546, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 1665, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5239,35 +5612,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, - 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, - 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, @@ -5275,22 +5648,22 @@ var yyAct = [...]int{ 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 0, 1663, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, - 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, + 309, 237, 311, 195, 396, 477, 273, 0, 1626, 0, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, @@ -5305,99 +5678,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, 0, - 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, - 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, - 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, - 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, - 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, - 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, - 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, - 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, - 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, - 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 1661, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, @@ -5405,22 +5713,22 @@ var yyAct = [...]int{ 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 399, 0, 1657, 0, 0, 0, 0, 0, 0, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 1527, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -5434,100 +5742,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, - 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, - 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, - 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, - 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, - 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, - 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 1655, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 630, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, @@ -5535,21 +5778,21 @@ var yyAct = [...]int{ 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 1653, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 630, 0, + 396, 477, 273, 0, 89, 0, 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -5564,99 +5807,34 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, - 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, - 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, - 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, - 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, - 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, - 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, - 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, - 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, - 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, - 477, 273, 0, 1628, 0, 0, 0, 630, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, - 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, - 307, 259, 251, 501, 0, 0, 0, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 284, 0, 385, - 244, 0, 0, 0, 0, 542, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, - 395, 441, 453, 0, 0, 0, 242, 0, 451, 409, - 521, 223, 271, 438, 415, 449, 422, 274, 0, 0, - 450, 356, 506, 432, 518, 543, 544, 250, 389, 530, - 490, 538, 560, 216, 247, 403, 483, 524, 473, 381, - 502, 503, 315, 472, 282, 194, 353, 549, 214, 459, - 355, 232, 221, 509, 527, 276, 436, 556, 508, 203, - 485, 516, 229, 463, 0, 0, 562, 205, 514, 482, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, - 511, 512, 243, 563, 218, 537, 210, 0, 536, 391, - 505, 515, 378, 367, 209, 513, 376, 366, 320, 339, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, - 388, 198, 525, 0, 199, 0, 478, 526, 564, 224, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, - 351, 402, 428, 424, 433, 0, 500, 519, 531, 541, - 547, 548, 550, 551, 552, 553, 554, 557, 555, 390, - 297, 474, 319, 357, 0, 0, 408, 452, 230, 523, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, - 368, 465, 520, 321, 333, 336, 326, 345, 0, 346, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, - 493, 494, 495, 534, 535, 539, 442, 443, 444, 445, - 279, 529, 295, 448, 447, 317, 318, 363, 431, 0, - 190, 211, 352, 0, 434, 275, 561, 533, 528, 197, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, @@ -5665,15 +5843,15 @@ var yyAct = [...]int{ 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, - 507, 510, 522, 540, 545, 460, 287, 288, 426, 427, - 300, 301, 558, 559, 286, 517, 546, 0, 0, 362, - 0, 0, 365, 268, 291, 306, 0, 532, 481, 217, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 1529, 257, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, @@ -5693,100 +5871,35 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, - 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1280, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, - 441, 453, 0, 0, 0, 242, 0, 451, 409, 521, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, - 356, 506, 432, 518, 543, 544, 250, 389, 530, 490, - 538, 560, 216, 247, 403, 483, 524, 473, 381, 502, - 503, 315, 472, 282, 194, 353, 549, 214, 459, 355, - 232, 221, 509, 527, 276, 436, 556, 508, 203, 485, - 516, 229, 463, 0, 0, 562, 205, 514, 482, 377, - 312, 313, 204, 0, 437, 255, 280, 245, 398, 511, - 512, 243, 563, 218, 537, 210, 0, 536, 391, 505, - 515, 378, 367, 209, 513, 376, 366, 320, 339, 340, - 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, - 198, 525, 0, 199, 0, 478, 526, 564, 224, 225, - 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, - 402, 428, 424, 433, 0, 500, 519, 531, 541, 547, - 548, 550, 551, 552, 553, 554, 557, 555, 390, 297, - 474, 319, 357, 0, 0, 408, 452, 230, 523, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 583, 368, - 465, 520, 321, 333, 336, 326, 345, 0, 346, 322, - 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, - 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, - 494, 495, 534, 535, 539, 442, 443, 444, 445, 279, - 529, 295, 448, 447, 317, 318, 363, 431, 0, 190, - 211, 352, 0, 434, 275, 561, 533, 528, 197, 213, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, - 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, - 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, - 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, - 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, - 462, 467, 468, 469, 470, 471, 479, 480, 484, 507, - 510, 522, 540, 545, 460, 287, 288, 426, 427, 300, - 301, 558, 559, 286, 517, 546, 0, 0, 362, 0, - 0, 365, 268, 291, 306, 0, 532, 481, 217, 446, - 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, - 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, - 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, - 360, 497, 498, 302, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 350, 254, 0, 0, 413, 0, 196, 0, 466, 241, - 361, 358, 504, 269, 260, 256, 239, 303, 369, 411, - 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, - 0, 89, 0, 0, 0, 803, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, - 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, - 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, - 251, 501, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 0, 385, 244, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, - 453, 0, 0, 0, 242, 0, 451, 409, 521, 223, - 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, - 506, 432, 518, 543, 544, 250, 389, 530, 490, 538, - 560, 216, 247, 403, 483, 524, 473, 381, 502, 503, - 315, 472, 282, 194, 353, 549, 214, 459, 355, 232, - 221, 509, 527, 276, 436, 556, 508, 203, 485, 516, - 229, 463, 0, 0, 562, 205, 514, 482, 377, 312, - 313, 204, 0, 437, 255, 280, 245, 398, 511, 512, - 243, 563, 218, 537, 210, 0, 536, 391, 505, 515, - 378, 367, 209, 513, 376, 366, 320, 339, 340, 267, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, - 525, 0, 199, 0, 478, 526, 564, 224, 225, 227, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, - 428, 424, 433, 0, 500, 519, 531, 541, 547, 548, - 550, 551, 552, 553, 554, 557, 555, 390, 297, 474, - 319, 357, 0, 0, 408, 452, 230, 523, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 583, 368, 465, - 520, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, - 495, 534, 535, 539, 442, 443, 444, 445, 279, 529, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, - 352, 0, 434, 275, 561, 533, 528, 197, 213, 0, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, @@ -5794,10 +5907,10 @@ var yyAct = [...]int{ 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, - 467, 468, 469, 470, 471, 479, 480, 484, 507, 510, - 522, 540, 545, 460, 287, 288, 426, 427, 300, 301, - 558, 559, 286, 517, 546, 0, 0, 362, 0, 0, - 365, 268, 291, 306, 0, 532, 481, 217, 446, 277, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 1279, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, @@ -5823,111 +5936,46 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1282, 0, 284, 0, 385, 244, 0, 0, - 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, - 0, 0, 0, 242, 0, 451, 409, 521, 223, 271, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, - 432, 518, 543, 544, 250, 389, 530, 490, 538, 560, - 216, 247, 403, 483, 524, 473, 381, 502, 503, 315, - 472, 282, 194, 353, 549, 214, 459, 355, 232, 221, - 509, 527, 276, 436, 556, 508, 203, 485, 516, 229, - 463, 0, 0, 562, 205, 514, 482, 377, 312, 313, - 204, 0, 437, 255, 280, 245, 398, 511, 512, 243, - 563, 218, 537, 210, 0, 536, 391, 505, 515, 378, - 367, 209, 513, 376, 366, 320, 339, 340, 267, 293, - 429, 359, 430, 292, 294, 387, 386, 388, 198, 525, - 0, 199, 0, 478, 526, 564, 224, 225, 227, 0, - 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, - 424, 433, 0, 500, 519, 531, 541, 547, 548, 550, - 551, 552, 553, 554, 557, 555, 390, 297, 474, 319, - 357, 0, 0, 408, 452, 230, 523, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 368, 465, 520, - 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, - 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, - 382, 499, 298, 206, 207, 208, 492, 493, 494, 495, - 534, 535, 539, 442, 443, 444, 445, 279, 529, 295, - 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, - 0, 434, 275, 561, 533, 528, 197, 213, 0, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, - 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, - 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, - 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, - 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, - 468, 469, 470, 471, 479, 480, 484, 507, 510, 522, - 540, 545, 460, 287, 288, 426, 427, 300, 301, 558, - 559, 1281, 517, 546, 0, 0, 362, 0, 0, 365, - 268, 291, 306, 0, 532, 481, 217, 446, 277, 240, - 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, - 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, - 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, - 498, 302, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 0, 0, 350, 254, - 0, 0, 413, 0, 196, 0, 466, 241, 361, 358, - 504, 269, 260, 256, 239, 303, 369, 411, 486, 405, - 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, - 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, - 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 385, 244, 0, 0, 0, - 0, 542, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, - 0, 0, 242, 0, 451, 409, 521, 223, 271, 438, - 415, 449, 422, 274, 0, 0, 450, 356, 506, 432, - 518, 543, 544, 250, 389, 530, 490, 538, 560, 216, - 247, 403, 483, 524, 473, 381, 502, 503, 315, 472, - 282, 194, 353, 549, 214, 459, 355, 232, 221, 509, - 527, 276, 436, 556, 508, 203, 485, 516, 229, 463, - 0, 0, 562, 205, 514, 482, 377, 312, 313, 204, - 0, 437, 255, 280, 245, 398, 511, 512, 243, 563, - 218, 537, 210, 0, 536, 391, 505, 515, 378, 367, - 209, 513, 376, 366, 320, 339, 340, 267, 293, 429, - 359, 430, 292, 294, 387, 386, 388, 198, 525, 0, - 199, 0, 478, 526, 564, 224, 225, 227, 0, 266, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, - 433, 0, 500, 519, 531, 541, 547, 548, 550, 551, - 552, 553, 554, 557, 555, 390, 297, 474, 319, 357, - 0, 0, 408, 452, 230, 523, 475, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 368, 465, 520, 321, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, - 499, 298, 206, 207, 208, 492, 493, 494, 495, 534, - 535, 539, 442, 443, 444, 445, 279, 529, 295, 448, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, - 434, 275, 561, 533, 528, 197, 213, 0, 249, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 889, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 888, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, - 469, 470, 471, 479, 480, 484, 507, 510, 522, 540, - 545, 460, 287, 288, 426, 427, 300, 301, 558, 559, - 286, 517, 546, 0, 0, 362, 0, 0, 365, 268, - 291, 306, 0, 532, 481, 217, 446, 277, 240, 0, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, @@ -5953,111 +6001,46 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 0, 385, 244, 0, 0, 586, 0, - 542, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 0, 0, 284, 0, 385, 244, 0, 0, 585, 0, + 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, - 0, 242, 0, 451, 409, 521, 223, 271, 438, 415, - 449, 422, 274, 0, 0, 450, 356, 506, 432, 518, - 543, 544, 250, 389, 530, 490, 538, 560, 216, 247, - 403, 483, 524, 473, 381, 502, 503, 315, 472, 282, - 194, 353, 549, 214, 459, 355, 232, 221, 509, 527, - 276, 436, 556, 508, 203, 485, 516, 229, 463, 0, - 0, 562, 205, 514, 482, 377, 312, 313, 204, 0, - 437, 255, 280, 245, 398, 511, 512, 243, 563, 218, - 537, 210, 0, 536, 391, 505, 515, 378, 367, 209, - 513, 376, 366, 320, 339, 340, 267, 293, 429, 359, - 430, 292, 294, 387, 386, 388, 198, 525, 0, 199, - 0, 478, 526, 564, 224, 225, 227, 0, 266, 270, - 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, - 0, 500, 519, 531, 541, 547, 548, 550, 551, 552, - 553, 554, 557, 555, 390, 297, 474, 319, 357, 0, - 0, 408, 452, 230, 523, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 583, 368, 465, 520, 321, 333, - 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, - 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, - 298, 206, 207, 208, 492, 493, 494, 495, 534, 535, - 539, 442, 443, 444, 445, 279, 529, 295, 448, 447, - 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, - 275, 561, 533, 528, 197, 213, 0, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, - 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, - 373, 392, 393, 394, 397, 400, 401, 404, 406, 407, - 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, - 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, - 470, 471, 479, 480, 484, 507, 510, 522, 540, 545, - 460, 287, 288, 426, 427, 300, 301, 558, 559, 286, - 517, 546, 0, 0, 362, 0, 0, 365, 268, 291, - 306, 0, 532, 481, 217, 446, 277, 240, 0, 0, - 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, - 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, - 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 350, 254, 0, 0, - 413, 0, 196, 0, 466, 241, 361, 358, 504, 269, - 260, 256, 239, 303, 369, 411, 486, 405, 0, 354, - 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, - 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, - 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, - 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, - 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 0, 385, 244, 0, 0, 0, 0, 542, - 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, - 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, - 242, 0, 451, 409, 521, 223, 271, 438, 415, 449, - 422, 274, 0, 0, 450, 356, 506, 432, 518, 543, - 544, 250, 389, 530, 490, 538, 560, 216, 247, 403, - 483, 524, 473, 381, 502, 503, 315, 472, 282, 194, - 353, 549, 214, 459, 355, 232, 221, 509, 527, 276, - 436, 556, 508, 203, 485, 516, 229, 463, 0, 0, - 562, 205, 514, 482, 377, 312, 313, 204, 0, 437, - 255, 280, 245, 398, 511, 512, 243, 563, 218, 537, - 210, 0, 536, 391, 505, 515, 378, 367, 209, 513, + 0, 242, 0, 451, 409, 520, 223, 271, 438, 415, + 449, 422, 274, 0, 0, 450, 356, 506, 432, 517, + 542, 543, 250, 389, 529, 490, 537, 559, 216, 247, + 403, 483, 523, 473, 381, 502, 503, 315, 472, 282, + 194, 353, 548, 214, 459, 355, 232, 221, 508, 526, + 276, 436, 555, 203, 485, 515, 229, 463, 0, 0, + 561, 205, 513, 482, 377, 312, 313, 204, 0, 437, + 255, 280, 245, 398, 510, 511, 243, 562, 218, 536, + 210, 0, 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, - 292, 294, 387, 386, 388, 198, 525, 0, 199, 0, - 478, 526, 564, 224, 225, 227, 0, 266, 270, 278, + 292, 294, 387, 386, 388, 198, 524, 0, 199, 0, + 478, 525, 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, 433, 0, - 500, 519, 531, 541, 547, 548, 550, 551, 552, 553, - 554, 557, 555, 390, 297, 474, 319, 357, 0, 0, - 408, 452, 230, 523, 475, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 583, 368, 465, 520, 321, 333, 336, + 500, 518, 530, 540, 546, 547, 549, 550, 551, 552, + 553, 556, 554, 390, 297, 474, 319, 357, 0, 0, + 408, 452, 230, 522, 475, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, - 206, 207, 208, 492, 493, 494, 495, 534, 535, 539, - 442, 443, 444, 445, 279, 529, 295, 448, 447, 317, + 206, 207, 208, 492, 493, 494, 495, 533, 534, 538, + 442, 443, 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, 434, 275, - 561, 533, 528, 197, 213, 0, 249, 0, 0, 0, + 560, 532, 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, 372, 373, - 3437, 393, 394, 397, 400, 401, 404, 406, 407, 410, + 392, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, - 471, 479, 480, 484, 507, 510, 522, 540, 545, 460, - 287, 288, 426, 427, 300, 301, 558, 559, 286, 517, - 546, 0, 0, 362, 0, 0, 365, 268, 291, 306, - 0, 532, 481, 217, 446, 277, 240, 0, 0, 202, + 471, 479, 480, 484, 507, 509, 521, 539, 544, 460, + 287, 288, 426, 427, 300, 301, 557, 558, 286, 516, + 545, 0, 0, 362, 0, 0, 365, 268, 291, 306, + 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, 497, 498, 302, 496, @@ -6069,7 +6052,7 @@ var yyAct = [...]int{ 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, 0, 0, 0, 0, - 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, 501, 0, 0, 0, @@ -6083,110 +6066,45 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 0, 385, 244, 0, 0, 0, 0, 542, 0, + 284, 0, 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, - 0, 451, 409, 521, 223, 271, 438, 415, 449, 422, - 274, 0, 0, 450, 356, 506, 432, 518, 543, 544, - 250, 389, 530, 490, 538, 560, 216, 247, 403, 483, - 524, 473, 381, 502, 503, 315, 472, 282, 194, 353, - 549, 214, 459, 355, 232, 221, 509, 527, 276, 436, - 556, 508, 203, 485, 516, 229, 463, 0, 0, 562, - 205, 514, 482, 377, 312, 313, 204, 0, 437, 255, - 280, 245, 398, 511, 512, 243, 563, 218, 537, 210, - 0, 536, 391, 505, 515, 378, 367, 209, 513, 376, - 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, - 294, 387, 386, 388, 198, 525, 0, 199, 0, 478, - 526, 564, 224, 225, 227, 0, 266, 270, 278, 281, - 289, 290, 299, 351, 402, 428, 424, 433, 0, 500, - 519, 531, 541, 547, 548, 550, 551, 552, 553, 554, - 557, 555, 390, 297, 474, 319, 357, 0, 0, 408, - 452, 230, 523, 475, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 583, 368, 465, 520, 321, 333, 336, 326, - 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, - 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, - 207, 208, 492, 493, 494, 495, 534, 535, 539, 442, - 443, 444, 445, 279, 529, 295, 448, 447, 317, 318, - 363, 431, 0, 190, 211, 352, 0, 434, 275, 561, - 533, 528, 197, 213, 0, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, - 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, - 304, 305, 308, 314, 364, 370, 371, 372, 373, 392, - 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, - 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, - 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, - 479, 480, 484, 507, 510, 522, 540, 545, 460, 287, - 288, 426, 427, 300, 301, 558, 559, 286, 517, 546, - 0, 0, 362, 0, 0, 365, 268, 291, 306, 0, - 532, 481, 217, 446, 277, 240, 0, 0, 202, 236, - 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, - 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, - 253, 416, 380, 0, 360, 497, 498, 302, 496, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 350, 254, 0, 0, 413, 0, - 196, 0, 466, 241, 361, 358, 504, 269, 260, 256, - 239, 303, 369, 411, 486, 405, 0, 354, 0, 0, - 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, - 195, 396, 477, 273, 0, 0, 0, 0, 0, 803, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, - 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, - 0, 252, 307, 259, 251, 501, 0, 0, 0, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 0, 385, 244, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, - 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, - 451, 409, 521, 223, 271, 438, 415, 449, 422, 274, - 0, 0, 450, 356, 506, 432, 518, 543, 544, 250, - 389, 530, 490, 538, 560, 216, 247, 403, 483, 524, - 473, 381, 502, 503, 315, 472, 282, 194, 353, 549, - 214, 459, 355, 232, 221, 509, 527, 276, 436, 556, - 508, 203, 485, 516, 229, 463, 0, 0, 562, 205, - 514, 482, 377, 312, 313, 204, 0, 437, 255, 280, - 245, 398, 511, 512, 243, 563, 218, 537, 210, 0, - 536, 391, 505, 515, 378, 367, 209, 513, 376, 366, + 0, 451, 409, 520, 223, 271, 438, 415, 449, 422, + 274, 0, 0, 450, 356, 506, 432, 517, 542, 543, + 250, 389, 529, 490, 537, 559, 216, 247, 403, 483, + 523, 473, 381, 502, 503, 315, 472, 282, 194, 353, + 548, 214, 459, 355, 232, 221, 508, 526, 276, 436, + 555, 203, 485, 515, 229, 463, 0, 0, 561, 205, + 513, 482, 377, 312, 313, 204, 0, 437, 255, 280, + 245, 398, 510, 511, 243, 562, 218, 536, 210, 0, + 535, 391, 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, 359, 430, 292, 294, - 387, 386, 388, 198, 525, 0, 199, 0, 478, 526, - 564, 224, 225, 227, 0, 266, 270, 278, 281, 289, - 290, 299, 351, 402, 428, 424, 433, 0, 500, 519, - 531, 541, 547, 548, 550, 551, 552, 553, 554, 557, - 555, 390, 297, 474, 319, 357, 0, 0, 408, 452, - 230, 523, 475, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 583, 368, 465, 520, 321, 333, 336, 326, 345, + 387, 386, 388, 198, 524, 0, 199, 0, 478, 525, + 563, 224, 225, 227, 0, 266, 270, 278, 281, 289, + 290, 299, 351, 402, 428, 424, 433, 0, 500, 518, + 530, 540, 546, 547, 549, 550, 551, 552, 553, 556, + 554, 390, 297, 474, 319, 357, 0, 0, 408, 452, + 230, 522, 475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, 499, 298, 206, 207, - 208, 492, 493, 494, 495, 534, 535, 539, 442, 443, - 444, 445, 279, 529, 295, 448, 447, 317, 318, 363, - 431, 0, 190, 211, 352, 0, 434, 275, 561, 533, - 528, 197, 213, 0, 249, 0, 0, 0, 0, 0, + 208, 492, 493, 494, 495, 533, 534, 538, 442, 443, + 444, 445, 279, 528, 295, 448, 447, 317, 318, 363, + 431, 0, 190, 211, 352, 0, 434, 275, 560, 532, + 527, 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, 272, 285, 296, 304, - 305, 308, 314, 364, 370, 371, 372, 373, 392, 393, + 305, 308, 314, 364, 370, 371, 372, 373, 3429, 393, 394, 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, 469, 470, 471, 479, - 480, 484, 507, 510, 522, 540, 545, 460, 287, 288, - 426, 427, 300, 301, 558, 559, 286, 517, 546, 0, - 0, 362, 0, 0, 365, 268, 291, 306, 0, 532, + 480, 484, 507, 509, 521, 539, 544, 460, 287, 288, + 426, 427, 300, 301, 557, 558, 286, 516, 545, 0, + 0, 362, 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, 489, 491, 379, 253, @@ -6198,7 +6116,7 @@ var yyAct = [...]int{ 303, 369, 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 237, 311, 195, - 396, 477, 273, 0, 0, 0, 0, 0, 188, 0, + 396, 477, 273, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, 347, 0, 0, 0, 0, 0, @@ -6213,72 +6131,201 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, - 385, 244, 0, 0, 0, 0, 542, 0, 0, 0, + 385, 244, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, 0, 0, 0, 242, 0, 451, - 409, 521, 223, 271, 438, 415, 449, 422, 274, 0, - 0, 450, 356, 506, 432, 518, 543, 544, 250, 389, - 530, 490, 538, 560, 216, 247, 403, 483, 524, 473, - 381, 502, 503, 315, 472, 282, 194, 353, 549, 214, - 459, 355, 232, 221, 509, 527, 276, 436, 556, 508, - 203, 485, 516, 229, 463, 0, 0, 562, 205, 514, - 482, 377, 312, 313, 204, 0, 437, 255, 280, 245, - 398, 511, 512, 243, 563, 218, 537, 210, 0, 536, - 391, 505, 515, 378, 367, 209, 513, 376, 366, 320, - 339, 340, 267, 293, 429, 359, 430, 292, 294, 387, - 386, 388, 198, 525, 0, 199, 0, 478, 526, 564, - 224, 225, 227, 0, 266, 270, 278, 281, 289, 290, - 299, 351, 402, 428, 424, 433, 0, 500, 519, 531, - 541, 547, 548, 550, 551, 552, 553, 554, 557, 555, - 390, 297, 474, 319, 357, 0, 0, 408, 452, 230, - 523, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 565, 566, 567, 568, 569, 570, 571, + 409, 520, 223, 271, 438, 415, 449, 422, 274, 0, + 0, 450, 356, 506, 432, 517, 542, 543, 250, 389, + 529, 490, 537, 559, 216, 247, 403, 483, 523, 473, + 381, 502, 503, 315, 472, 282, 194, 353, 548, 214, + 459, 355, 232, 221, 508, 526, 276, 436, 555, 203, + 485, 515, 229, 463, 0, 0, 561, 205, 513, 482, + 377, 312, 313, 204, 0, 437, 255, 280, 245, 398, + 510, 511, 243, 562, 218, 536, 210, 0, 535, 391, + 505, 514, 378, 367, 209, 512, 376, 366, 320, 339, + 340, 267, 293, 429, 359, 430, 292, 294, 387, 386, + 388, 198, 524, 0, 199, 0, 478, 525, 563, 224, + 225, 227, 0, 266, 270, 278, 281, 289, 290, 299, + 351, 402, 428, 424, 433, 0, 500, 518, 530, 540, + 546, 547, 549, 550, 551, 552, 553, 556, 554, 390, + 297, 474, 319, 357, 0, 0, 408, 452, 230, 522, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 583, 368, 465, 520, 321, 333, 336, 326, 345, 0, - 346, 322, 323, 328, 330, 331, 332, 337, 338, 342, - 348, 238, 201, 374, 382, 499, 298, 206, 207, 208, - 492, 493, 494, 495, 534, 535, 539, 442, 443, 444, - 445, 279, 529, 295, 448, 447, 317, 318, 363, 431, - 0, 190, 211, 352, 0, 434, 275, 561, 533, 528, - 197, 213, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 368, 465, 519, 321, 333, 336, 326, 345, 0, 346, + 322, 323, 328, 330, 331, 332, 337, 338, 342, 348, + 238, 201, 374, 382, 499, 298, 206, 207, 208, 492, + 493, 494, 495, 533, 534, 538, 442, 443, 444, 445, + 279, 528, 295, 448, 447, 317, 318, 363, 431, 0, + 190, 211, 352, 0, 434, 275, 560, 532, 527, 197, + 213, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 200, 212, 222, - 226, 233, 248, 263, 265, 272, 285, 296, 304, 305, - 308, 314, 364, 370, 371, 372, 373, 392, 393, 394, - 397, 400, 401, 404, 406, 407, 410, 414, 418, 419, - 420, 421, 423, 425, 435, 440, 454, 455, 456, 457, - 458, 461, 462, 467, 468, 469, 470, 471, 479, 480, - 484, 507, 510, 522, 540, 545, 460, 287, 288, 426, - 427, 300, 301, 558, 559, 286, 517, 546, 0, 0, - 362, 0, 0, 365, 268, 291, 306, 0, 532, 481, - 217, 446, 277, 240, 0, 0, 202, 236, 220, 246, - 261, 264, 310, 375, 383, 412, 417, 283, 258, 234, - 439, 231, 464, 487, 488, 489, 491, 379, 253, 416, - 0, 0, 360, 497, 498, 302, + 0, 0, 0, 0, 192, 193, 200, 212, 222, 226, + 233, 248, 263, 265, 272, 285, 296, 304, 305, 308, + 314, 364, 370, 371, 372, 373, 392, 393, 394, 397, + 400, 401, 404, 406, 407, 410, 414, 418, 419, 420, + 421, 423, 425, 435, 440, 454, 455, 456, 457, 458, + 461, 462, 467, 468, 469, 470, 471, 479, 480, 484, + 507, 509, 521, 539, 544, 460, 287, 288, 426, 427, + 300, 301, 557, 558, 286, 516, 545, 0, 0, 362, + 0, 0, 365, 268, 291, 306, 0, 531, 481, 217, + 446, 277, 240, 0, 0, 202, 236, 220, 246, 261, + 264, 310, 375, 383, 412, 417, 283, 258, 234, 439, + 231, 464, 487, 488, 489, 491, 379, 253, 416, 380, + 0, 360, 497, 498, 302, 496, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 350, 254, 0, 0, 413, 0, 196, 0, 466, + 241, 361, 358, 504, 269, 260, 256, 239, 303, 369, + 411, 486, 405, 0, 354, 0, 0, 476, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 309, 237, 311, 195, 396, 477, + 273, 0, 0, 0, 0, 0, 802, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 235, + 0, 0, 0, 335, 344, 343, 324, 325, 327, 329, + 334, 341, 347, 0, 0, 0, 0, 0, 252, 307, + 259, 251, 501, 0, 0, 0, 0, 0, 0, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 0, 385, 244, + 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 316, 191, 215, 0, 0, 395, + 441, 453, 0, 0, 0, 242, 0, 451, 409, 520, + 223, 271, 438, 415, 449, 422, 274, 0, 0, 450, + 356, 506, 432, 517, 542, 543, 250, 389, 529, 490, + 537, 559, 216, 247, 403, 483, 523, 473, 381, 502, + 503, 315, 472, 282, 194, 353, 548, 214, 459, 355, + 232, 221, 508, 526, 276, 436, 555, 203, 485, 515, + 229, 463, 0, 0, 561, 205, 513, 482, 377, 312, + 313, 204, 0, 437, 255, 280, 245, 398, 510, 511, + 243, 562, 218, 536, 210, 0, 535, 391, 505, 514, + 378, 367, 209, 512, 376, 366, 320, 339, 340, 267, + 293, 429, 359, 430, 292, 294, 387, 386, 388, 198, + 524, 0, 199, 0, 478, 525, 563, 224, 225, 227, + 0, 266, 270, 278, 281, 289, 290, 299, 351, 402, + 428, 424, 433, 0, 500, 518, 530, 540, 546, 547, + 549, 550, 551, 552, 553, 556, 554, 390, 297, 474, + 319, 357, 0, 0, 408, 452, 230, 522, 475, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 368, 465, + 519, 321, 333, 336, 326, 345, 0, 346, 322, 323, + 328, 330, 331, 332, 337, 338, 342, 348, 238, 201, + 374, 382, 499, 298, 206, 207, 208, 492, 493, 494, + 495, 533, 534, 538, 442, 443, 444, 445, 279, 528, + 295, 448, 447, 317, 318, 363, 431, 0, 190, 211, + 352, 0, 434, 275, 560, 532, 527, 197, 213, 0, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 200, 212, 222, 226, 233, 248, + 263, 265, 272, 285, 296, 304, 305, 308, 314, 364, + 370, 371, 372, 373, 392, 393, 394, 397, 400, 401, + 404, 406, 407, 410, 414, 418, 419, 420, 421, 423, + 425, 435, 440, 454, 455, 456, 457, 458, 461, 462, + 467, 468, 469, 470, 471, 479, 480, 484, 507, 509, + 521, 539, 544, 460, 287, 288, 426, 427, 300, 301, + 557, 558, 286, 516, 545, 0, 0, 362, 0, 0, + 365, 268, 291, 306, 0, 531, 481, 217, 446, 277, + 240, 0, 0, 202, 236, 220, 246, 261, 264, 310, + 375, 383, 412, 417, 283, 258, 234, 439, 231, 464, + 487, 488, 489, 491, 379, 253, 416, 380, 0, 360, + 497, 498, 302, 496, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 350, + 254, 0, 0, 413, 0, 196, 0, 466, 241, 361, + 358, 504, 269, 260, 256, 239, 303, 369, 411, 486, + 405, 0, 354, 0, 0, 476, 384, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 237, 311, 195, 396, 477, 273, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 235, 0, 0, + 0, 335, 344, 343, 324, 325, 327, 329, 334, 341, + 347, 0, 0, 0, 0, 0, 252, 307, 259, 251, + 501, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 385, 244, 0, 0, + 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 316, 191, 215, 0, 0, 395, 441, 453, + 0, 0, 0, 242, 0, 451, 409, 520, 223, 271, + 438, 415, 449, 422, 274, 0, 0, 450, 356, 506, + 432, 517, 542, 543, 250, 389, 529, 490, 537, 559, + 216, 247, 403, 483, 523, 473, 381, 502, 503, 315, + 472, 282, 194, 353, 548, 214, 459, 355, 232, 221, + 508, 526, 276, 436, 555, 203, 485, 515, 229, 463, + 0, 0, 561, 205, 513, 482, 377, 312, 313, 204, + 0, 437, 255, 280, 245, 398, 510, 511, 243, 562, + 218, 536, 210, 0, 535, 391, 505, 514, 378, 367, + 209, 512, 376, 366, 320, 339, 340, 267, 293, 429, + 359, 430, 292, 294, 387, 386, 388, 198, 524, 0, + 199, 0, 478, 525, 563, 224, 225, 227, 0, 266, + 270, 278, 281, 289, 290, 299, 351, 402, 428, 424, + 433, 0, 500, 518, 530, 540, 546, 547, 549, 550, + 551, 552, 553, 556, 554, 390, 297, 474, 319, 357, + 0, 0, 408, 452, 230, 522, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 368, 465, 519, 321, + 333, 336, 326, 345, 0, 346, 322, 323, 328, 330, + 331, 332, 337, 338, 342, 348, 238, 201, 374, 382, + 499, 298, 206, 207, 208, 492, 493, 494, 495, 533, + 534, 538, 442, 443, 444, 445, 279, 528, 295, 448, + 447, 317, 318, 363, 431, 0, 190, 211, 352, 0, + 434, 275, 560, 532, 527, 197, 213, 0, 249, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 200, 212, 222, 226, 233, 248, 263, 265, + 272, 285, 296, 304, 305, 308, 314, 364, 370, 371, + 372, 373, 392, 393, 394, 397, 400, 401, 404, 406, + 407, 410, 414, 418, 419, 420, 421, 423, 425, 435, + 440, 454, 455, 456, 457, 458, 461, 462, 467, 468, + 469, 470, 471, 479, 480, 484, 507, 509, 521, 539, + 544, 460, 287, 288, 426, 427, 300, 301, 557, 558, + 286, 516, 545, 0, 0, 362, 0, 0, 365, 268, + 291, 306, 0, 531, 481, 217, 446, 277, 240, 0, + 0, 202, 236, 220, 246, 261, 264, 310, 375, 383, + 412, 417, 283, 258, 234, 439, 231, 464, 487, 488, + 489, 491, 379, 253, 416, 0, 0, 360, 497, 498, + 302, } var yyPact = [...]int{ - -1000, -1000, 5489, -1000, -460, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 4379, -1000, -457, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2132, 2414, - -1000, -1000, -1000, -1000, 2370, -1000, 830, 1836, -1000, 2157, - 310, -1000, 46717, 555, -1000, 44121, 552, 213, 29194, -1000, - 229, -1000, 198, 45419, 214, -1000, -1000, -1000, -308, 18808, - 2065, 88, 83, 46717, -1000, -1000, -1000, -1000, 2319, 1854, - -1000, 388, -1000, -1000, -1000, -1000, -1000, -1000, 43472, -1000, - 956, -1000, -1000, 2170, 2133, 2389, 708, 2093, -1000, 2243, - 1854, -1000, 18808, 2293, 2204, 18159, 18159, 488, -1000, -1000, - 238, -1000, -1000, 24651, 46717, 31790, 444, -1000, 2157, -1000, - -1000, -1000, 82, -1000, 371, 1774, -1000, 1770, -1000, 948, - 1040, 410, 521, 518, 408, 406, 404, 403, 396, 391, - 386, 384, 423, -1000, 733, 733, -126, -133, 2708, 486, - 476, 476, 833, 505, 2114, 2086, -1000, -1000, 733, 733, - 733, 392, 733, 733, 733, 733, 350, 348, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 398, 2157, 320, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2299, 2399, + -1000, -1000, -1000, -1000, 2442, -1000, 788, 1923, -1000, 2261, + 296, -1000, 47213, 530, -1000, 44621, 528, 216, 29717, -1000, + 235, -1000, 227, 45917, 230, -1000, -1000, -1000, -298, 19347, + 2165, 97, 86, 47213, -1000, -1000, -1000, -1000, 2402, 1892, + -1000, 390, -1000, -1000, -1000, -1000, -1000, -1000, 43973, -1000, + 955, -1000, -1000, 2271, 2248, 2437, 711, 2200, -1000, 2336, + 1892, -1000, 19347, 2393, 2326, 18699, 18699, 490, -1000, -1000, + 289, -1000, -1000, 25181, 47213, 32309, 714, -1000, 2261, -1000, + -1000, -1000, 111, -1000, 391, 1822, -1000, 1814, -1000, 768, + 742, 435, 561, 531, 434, 431, 426, 425, 417, 407, + 405, 397, 441, -1000, 737, 737, -125, -126, 697, 488, + 421, 421, 724, 509, 2211, 2192, -1000, -1000, 737, 737, + 737, 366, 737, 737, 737, 737, 368, 362, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 414, 2261, 322, -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, @@ -6317,62 +6364,61 @@ 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, 46717, 247, 46717, -1000, 631, 46717, - 887, 887, 123, 887, 887, 887, 887, 228, 667, 69, - -1000, 212, 286, 244, 304, 853, 429, -1000, -1000, 296, - 853, 1619, -1000, 717, 282, 173, -1000, 887, 887, -1000, - 12293, 152, 12293, 12293, -1000, 2125, -1000, -1000, -1000, -1000, - -1000, 1133, -1000, -1000, -1000, -1000, -1000, 503, -1000, -1000, - -1000, -1000, 45419, 42823, -1000, -1000, 143, -1000, -1000, 1658, - 1195, 18808, 1061, -1000, 1246, 661, -1000, -1000, -1000, -1000, - -1000, 599, -1000, 19457, 19457, 19457, 19457, -1000, -1000, 1778, - 42174, 1778, 1778, 19457, 1778, -1000, 19457, 1778, 1778, 1778, - 18808, 1778, 1778, 1778, 1778, -1000, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, -1000, -1000, -1000, -1000, 1778, 625, - 1778, 1778, 1778, 1778, 1778, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1778, 1778, 1778, 1778, 1778, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 20755, 1300, 1298, 1280, -1000, 16212, 1778, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 47213, 246, 47213, -1000, 631, 47213, 947, + 947, 91, 947, 947, 947, 947, 213, 708, 80, -1000, + 211, 323, 189, 334, 869, 253, -1000, -1000, 310, 869, + 1639, -1000, 715, 314, 179, -1000, 947, 947, -1000, 12842, + 191, 12842, 12842, -1000, 2244, -1000, -1000, -1000, -1000, -1000, + 1136, -1000, -1000, -1000, -1000, -1000, 507, -1000, -1000, -1000, + -1000, 45917, 43325, -1000, -1000, 159, -1000, -1000, 1652, 1225, + 19347, 1202, -1000, 1247, 684, -1000, -1000, -1000, -1000, -1000, + 576, -1000, 19995, 19995, 19995, 19995, -1000, -1000, 1297, 42677, + 1297, 1297, 19995, 1297, -1000, 19995, 1297, 1297, 1297, 19347, + 1297, 1297, 1297, 1297, -1000, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, -1000, -1000, -1000, -1000, 1297, 609, 1297, + 1297, 1297, 1297, 1297, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1297, 1297, 1297, 1297, 1297, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 21291, 1331, 1313, 1307, -1000, 16755, 1297, -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, 46717, - -1000, 1778, 251, 45419, 45419, 395, 2243, 1854, -1000, 2319, - 2273, 388, -1000, 2347, 1412, 1418, 1228, 1854, 1745, 46717, - -1000, 1785, -1000, -1000, -1000, -1000, 1978, 1222, 1610, -1000, - -1000, -1000, -1000, 1606, 18808, -1000, -1000, 2359, -1000, 22054, - 619, 2353, 41525, -1000, 488, 488, 1767, 455, 34, -1000, - -1000, -1000, -1000, 759, 28545, -1000, -1000, -1000, -1000, 1603, - 46717, -1000, -1000, 4371, 1138, -1000, 1835, -1000, 1593, -1000, - 1802, 18808, 1853, 539, 1138, 512, 511, 510, -1000, -23, - -1000, -1000, -1000, -1000, -1000, -1000, 733, 733, 733, -1000, - 416, 2287, 310, 3946, -1000, -1000, -1000, 40876, 1834, 1138, - -1000, 1830, -1000, 859, 589, 610, 610, 1138, -1000, -1000, - 46068, 1138, 858, 838, 1138, 1138, 45419, 45419, -1000, 40227, - -1000, 39578, 38929, 1107, 45419, 38280, 37631, 36982, 36333, 35684, - -1000, 2207, -1000, 1971, -1000, -1000, -1000, 46068, 1138, 1138, - 46068, 45419, 46068, 46717, 1138, -1000, -1000, 399, -1000, -1000, - 1099, 1095, 1094, 733, 733, 1080, 1588, 1578, 1576, 733, - 733, 1077, 1571, 30492, 1568, 352, 1076, 1069, 1067, 1071, - 1560, 187, 1519, 1058, 1026, 1062, 45419, 1829, 46717, -1000, - 279, 814, 746, 425, 753, 2157, 2063, 1764, 499, 534, - 1138, 480, 480, 45419, -1000, 14258, -1000, -1000, 1511, 18808, - -1000, 875, 853, 853, -1000, -1000, -1000, -1000, -1000, -1000, - 887, 46717, 875, -1000, -1000, -1000, 853, 887, 46717, 887, - 887, 887, 887, 853, 853, 853, 887, 46717, 46717, 46717, - 46717, 46717, 46717, 46717, 46717, 46717, 12293, 717, 887, -355, - -1000, 1509, -1000, -1000, 1944, -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, 47213, -1000, + 1297, 265, 45917, 45917, 387, 2336, 1892, -1000, 2402, 2347, + 390, -1000, 2659, 1833, 1419, 1342, 1892, 1796, 47213, -1000, + 1831, -1000, -1000, -1000, -1000, 2055, 1295, 1634, -1000, -1000, + -1000, -1000, 2137, 19347, -1000, -1000, 2425, -1000, 22588, 601, + 2424, 42029, -1000, 490, 490, 1811, 473, 61, -1000, -1000, + -1000, -1000, 804, 29069, -1000, -1000, -1000, -1000, 1745, 47213, + -1000, -1000, 3504, 1147, -1000, 1916, -1000, 1701, -1000, 1862, + 19347, 1930, 524, 1147, 516, 515, 514, -1000, -14, -1000, + -1000, -1000, -1000, -1000, -1000, 737, 737, 737, -1000, 415, + 2389, 296, 4863, -1000, -1000, -1000, 41381, 1914, 1147, -1000, + 1911, -1000, 890, 612, 598, 598, 1147, -1000, -1000, 46565, + 1147, 889, 874, 1147, 1147, 45917, 45917, -1000, 40733, -1000, + 40085, 39437, 1124, 45917, 38789, 38141, 37493, 36845, 36197, -1000, + 2081, -1000, 1883, -1000, -1000, -1000, 46565, 1147, 1147, 46565, + 45917, 46565, 47213, 1147, -1000, -1000, 383, -1000, -1000, 1120, + 1112, 1106, 737, 737, 1105, 1619, 1615, 1610, 737, 737, + 1097, 1600, 31013, 1595, 333, 1094, 1087, 1086, 1143, 1590, + 198, 1586, 1138, 1098, 1080, 45917, 1900, 47213, -1000, 302, + 774, 587, 787, 2261, 2159, 1810, 506, 523, 1147, 486, + 486, 45917, -1000, 14804, -1000, -1000, 1540, 19347, -1000, 878, + 869, 869, -1000, -1000, -1000, -1000, -1000, -1000, 947, 47213, + 878, -1000, -1000, -1000, 869, 947, 47213, 947, 947, 947, + 947, 869, 869, 869, 947, 47213, 47213, 47213, 47213, 47213, + 47213, 47213, 47213, 47213, 12842, 715, 947, -303, -1000, 1516, + -1000, -1000, 2069, -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, @@ -6386,281 +6432,282 @@ 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, 12293, 12293, -1000, -1000, -1000, -1000, 207, -1000, 35035, - 390, 749, -1000, 1758, 34386, -1000, -357, -359, -360, -361, - -1000, -1000, -1000, -362, -374, -1000, -1000, -1000, 18808, 18808, - 18808, 18808, -156, -1000, 847, 19457, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 147, 791, 19457, 19457, 19457, 19457, 19457, - 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, - -1000, -1000, 26598, 5983, 5983, 661, 661, 661, 661, -1000, - -86, 1757, 46068, -1000, -1000, -1000, 618, 18808, 18808, 661, - -1000, 1138, 16212, 33737, 18159, 18159, 18808, 766, 1195, 46068, - 18808, -1000, 1228, -1000, -1000, -1000, 987, -1000, 844, 2124, - 2124, 2124, 2124, 18808, 18808, 18808, 18808, 18808, 18808, 18808, - 18808, 18808, 18808, 2124, 45419, 45419, 592, 18808, 18808, 18808, - 18808, 18808, 18808, 14913, 18808, 18808, 19457, 18808, 18808, 18808, - 1228, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, - 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, - 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 1228, 18808, - 1021, 18808, 18808, 18159, 13603, 18159, 18159, 18159, 18159, 18159, - -1000, -1000, -1000, -1000, -1000, 18808, 18808, 18808, 18808, 18808, - 18808, 18808, 18808, 1228, 18808, 18808, 18808, 18808, 18808, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1415, - 1446, 1296, 18808, -1000, 1754, -1000, -157, 24002, 18808, 1453, - 2351, 1876, 45419, -1000, -1000, -1000, 2243, -1000, 2243, 1415, - 2285, 1999, 18159, -1000, -1000, 2285, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1543, -1000, 46717, 1745, 2200, 45419, - 2004, 1449, 447, -1000, 18808, 18808, 1744, -1000, 1119, 46717, - -1000, -156, -1000, 33088, -1000, -1000, 11638, 46717, 381, 46717, - -1000, 23353, 32439, 289, 34, -1000, 1714, -1000, 42, 21, - 15562, 579, -1000, -1000, -1000, 2708, 20106, 1632, 579, 138, - -1000, -1000, -1000, 1802, -1000, 1802, 1802, 1802, 1802, 447, - 447, 447, 447, -1000, -1000, -1000, -1000, -1000, 1828, 1825, - -1000, 1802, 1802, 1802, 1802, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1823, 1823, 1823, 1803, 1803, 463, -1000, 18808, - 246, 31790, 2183, 1060, 1972, 279, 481, 1868, 1138, 1138, - 1138, 481, -1000, 1242, 1220, 1153, -1000, -451, 1743, -1000, - -1000, 2282, -1000, -1000, 982, 918, 889, 734, 45419, 257, - 378, -1000, 460, -1000, 31790, 1138, 837, 610, 1138, -1000, - 1138, -1000, -1000, -1000, -1000, -1000, 1138, -1000, -1000, 1742, - -1000, 1733, 925, 877, 911, 876, 1742, -1000, -1000, -98, - 1742, -1000, 1742, -1000, 1742, -1000, 1742, -1000, 1742, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 764, 220, - -205, 45419, 257, 496, -1000, 495, 26598, -1000, -1000, -1000, - 26598, 26598, -1000, -1000, -1000, -1000, 1416, 1413, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 12842, + 12842, -1000, -1000, -1000, -1000, 221, -1000, 35549, 433, 769, + -1000, 1799, 34901, -1000, -304, -305, -307, -325, -1000, -1000, + -1000, -329, -357, -1000, -1000, -1000, 19347, 19347, 19347, 19347, + -153, -1000, 937, 19995, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 197, 901, 19995, 19995, 19995, 19995, 19995, 19995, 19995, + 19995, 19995, 19995, 19995, 19995, 19995, 19995, 19995, -1000, -1000, + 27125, 6289, 6289, 684, 684, 684, 684, -1000, -86, 1798, + 46565, -1000, -1000, -1000, 600, 19347, 19347, 684, -1000, 1147, + 16755, 34253, 18699, 18699, 19347, 819, 1225, 46565, 19347, -1000, + 1342, -1000, -1000, -1000, 1076, -1000, 875, 2228, 2228, 2228, + 2228, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, + 19347, 2228, 45917, 45917, 1379, 19347, 19347, 19347, 19347, 19347, + 19347, 15458, 19347, 19347, 19995, 19347, 19347, 19347, 1342, 19347, + 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, + 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, 19347, + 19347, 19347, 19347, 19347, 19347, 19347, 1342, 19347, 1113, 19347, + 19347, 18699, 14150, 18699, 18699, 18699, 18699, 18699, -1000, -1000, + -1000, -1000, -1000, 19347, 19347, 19347, 19347, 19347, 19347, 19347, + 19347, 1342, 19347, 19347, 19347, 19347, 19347, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1383, 1405, 1335, + 19347, -1000, 1797, -1000, -113, 24533, 19347, 1512, 2423, 1977, + 45917, -1000, -1000, -1000, 2336, -1000, 2336, 1383, 2296, 2095, + 18699, -1000, -1000, 2296, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1643, -1000, 47213, 1796, 2298, 45917, 2074, 1451, + 505, -1000, 19347, 19347, 1795, -1000, 1127, 47213, -1000, -153, + -1000, 33605, -1000, -1000, 12188, 47213, 393, 47213, -1000, 23885, + 32957, 299, 61, -1000, 1780, -1000, 41, 48, 16106, 681, + -1000, -1000, -1000, 697, 20643, 1644, 681, 163, -1000, -1000, + -1000, 1862, -1000, 1862, 1862, 1862, 1862, 505, 505, 505, + 505, -1000, -1000, -1000, -1000, -1000, 1897, 1893, -1000, 1862, + 1862, 1862, 1862, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1891, 1891, 1891, 1865, 1865, 479, -1000, 19347, 325, 32309, + 2268, 1075, 1021, 302, 495, 1963, 1147, 1147, 1147, 495, + -1000, 1220, 1217, 1188, -1000, -447, 1794, -1000, -1000, 2388, + -1000, -1000, 784, 918, 912, 936, 45917, 275, 386, -1000, + 466, -1000, 32309, 1147, 865, 598, 1147, -1000, 1147, -1000, + -1000, -1000, -1000, -1000, 1147, -1000, -1000, 1789, -1000, 1756, + 978, 907, 950, 892, 1789, -1000, -1000, -92, 1789, -1000, + 1789, -1000, 1789, -1000, 1789, -1000, 1789, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 738, 228, -222, 45917, + 275, 500, -1000, 499, 27125, -1000, -1000, -1000, 27125, 27125, + -1000, -1000, -1000, -1000, 1441, 1411, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -438, 46717, -1000, - 270, 748, 357, 379, 341, 46717, 657, 2242, 2237, 2232, - 2224, 2212, -1000, -1000, -1000, 1016, 328, 347, 46717, 46717, - 480, 1941, 46717, 2187, 46717, -1000, -1000, -1000, -1000, -1000, - 1195, 46717, -1000, -1000, 887, 887, -1000, -1000, 46717, 887, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 887, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 46717, -1000, -1000, -1000, -1000, 45419, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -105, - 162, 40, 368, -1000, -1000, -1000, -1000, -1000, 2229, -1000, - 1195, 782, 792, -1000, 1778, -1000, -1000, 968, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 147, 19457, 19457, 19457, 1645, - 524, 1178, 1158, 1209, 1012, 1012, 895, 895, 688, 688, - 688, 688, 688, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1410, -1000, 1778, 46068, 1567, 13603, 1253, 1283, 1228, - 2855, -1000, 1553, -1000, 1553, 1518, 772, -1000, 18808, 1228, - 2824, -1000, -1000, 1228, 1228, 1228, 18808, -1000, -1000, 18808, - 18808, 18808, 18808, 1972, 1972, 1972, 1972, 1972, 1972, 1972, - 1972, 1972, 1972, 18808, 1739, 1736, 2348, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -432, 47213, -1000, 294, 765, + 363, 410, 356, 47213, 320, 2318, 2315, 2312, 2306, 2302, + 361, 360, 47213, 47213, 486, 2029, 47213, 2281, 47213, -1000, + -1000, -1000, -1000, -1000, 1225, 47213, -1000, -1000, 947, 947, + -1000, -1000, 47213, 947, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 947, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 47213, -1000, + -1000, -1000, -1000, 45917, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -58, 192, 37, 384, -1000, -1000, -1000, + -1000, -1000, 2331, -1000, 1225, 837, 841, -1000, 1297, -1000, + -1000, 931, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 197, + 19995, 19995, 19995, 1207, 536, 1864, 1294, 1905, 1150, 1150, + 975, 975, 689, 689, 689, 689, 689, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1400, -1000, 1297, 46565, 1632, + 14150, 1254, 2050, 1342, 3035, -1000, 1628, -1000, 1628, 1855, + 856, -1000, 19347, 1342, 3029, -1000, -1000, 1342, 1342, 1342, + 19347, -1000, -1000, 19347, 19347, 19347, 19347, 1021, 1021, 1021, + 1021, 1021, 1021, 1021, 1021, 1021, 1021, 19347, 1788, 1787, + 2422, -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, 979, 1972, - 1972, 1972, 1972, 1972, 18808, 1699, -1000, -1000, -1000, 1309, - 2818, 1295, 2809, 1972, 1972, -1000, 1972, 2800, 2787, 1228, - 1658, 1228, 1734, -1000, 2751, 1972, 2744, 2737, 2722, 2045, - 2715, 2711, 2707, 1972, 1972, 1972, 1996, 2695, 2688, 2632, - 2622, 2597, 2593, 2435, 2315, 2304, 1972, -160, 1972, 1228, - -1000, -1000, -1000, -1000, -1000, 2249, 1982, 1228, 1717, 1778, - 612, -1000, -1000, 1553, 1228, 1228, 1553, 1553, 2240, 2234, - 2228, 2223, 2218, 2213, 1972, 1972, -1000, 1972, 2203, 2194, - 1977, 1964, 1228, -1000, 1296, 46717, -1000, -342, -1000, 23, - 666, 1778, -1000, 30492, 1228, -1000, 4075, -1000, 1001, -1000, - -1000, -1000, -1000, -1000, 27896, 1841, 2285, -1000, -1000, 1778, - 1550, -1000, -1000, 447, 112, 27247, 633, 633, 156, 1195, - 1195, 18808, -1000, -1000, -1000, -1000, -1000, -1000, 597, 2314, - 387, 1778, -1000, 1731, 2326, -1000, -1000, -1000, 2199, 21405, - -1000, -1000, 1778, 1778, 46717, 1703, 1702, -1000, 595, -1000, - 1141, 1714, 34, 80, -1000, -1000, -1000, -1000, 1195, -1000, - 1151, 382, 617, -1000, 464, -1000, -1000, -1000, -1000, 2074, - 117, -1000, -1000, -1000, 281, 447, -1000, -1000, -1000, -1000, - -1000, -1000, 1402, 1402, -1000, -1000, -1000, -1000, -1000, 1057, - -1000, -1000, -1000, 1055, -1000, -1000, 2108, 1893, 246, -1000, - -1000, 733, 1389, -1000, -1000, 2089, 733, 733, 45419, -1000, - -1000, 1630, 2183, 270, 46717, 775, 1939, -1000, 1868, 1868, - 1868, 46717, -1000, -1000, -1000, -1000, -1000, -1000, -440, 61, - 394, -1000, -1000, -1000, 3884, 45419, 1541, -1000, 248, -1000, - 1626, -1000, 45419, -1000, 1536, 1821, 1138, 1138, -1000, -1000, - -1000, 45419, 1778, -1000, -1000, -1000, -1000, 517, 2145, 295, - -1000, -1000, -184, -1000, -1000, 257, 248, 46068, 1138, 579, - -1000, -1000, -1000, -1000, -1000, -441, 1532, 507, 259, 335, - 46717, 46717, 46717, 46717, 46717, 578, -1000, -1000, 53, -1000, - -1000, 236, -1000, -1000, -1000, -1000, 236, -1000, -1000, -1000, - -1000, -1000, -1000, 314, 487, -1000, 46717, 46717, 626, -1000, - -1000, -1000, 853, -1000, -1000, 853, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 2137, 46717, 36, -404, - -1000, -400, 18808, -1000, -1000, -1000, -1000, 1131, 491, 1178, - 19457, 19457, 19457, -1000, -1000, -1000, 938, 938, 26598, -1000, - 18808, 18159, -1000, -1000, 18808, 18808, 735, -1000, 18808, 997, - -1000, 18808, -1000, -1000, -1000, 1296, 1972, 1972, 1972, 1972, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1718, 18808, 18808, 18808, 1228, 323, -1000, -1000, -1000, -1000, - -1000, 2331, -1000, 18808, -1000, 26598, 18808, 18808, 18808, -1000, - -1000, -1000, 18808, 18808, -1000, -1000, 18808, 18808, -1000, 18808, - 18808, 18808, -1000, 18808, 18808, 18808, 18808, -1000, -1000, -1000, - -1000, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, 18808, - 18808, -1000, -1000, 31790, 75, -160, 1021, 75, 1021, -1000, - 18159, 12948, -1000, -1000, -1000, -1000, -1000, 18808, 18808, 18808, - 18808, 18808, 18808, -1000, -1000, -1000, 18808, 18808, -1000, 18808, - -1000, 18808, -1000, -1000, -1000, -1000, -1000, 666, -1000, 610, - 610, 610, 45419, -1000, -1000, -1000, -1000, 1707, -1000, 2231, - -1000, 2017, 2014, 2328, 2314, -1000, 23353, 2285, -1000, -1000, - 45419, -296, -1000, 2047, 2044, 633, 633, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 10983, 2243, 18808, 1930, 46068, 148, - -1000, 22704, 45419, 46068, 23353, 23353, 23353, 23353, 23353, -1000, - 1959, 1956, -1000, 2009, 1975, 1981, 46717, -1000, 1415, 1530, - -1000, 18808, 25300, 1680, 23353, -1000, -1000, 23353, 46717, 10328, - -1000, -1000, 33, 16, -1000, -1000, -1000, -1000, 2708, -1000, - -1000, 383, 2193, 2057, -1000, -1000, -1000, -1000, -1000, 1526, - -1000, 1523, 1701, 1492, 220, -1000, 1846, 2135, 733, 733, - -1000, 1050, -1000, 1138, 1380, 1363, -1000, -1000, -1000, 492, - -1000, 2181, 46717, 1915, 1912, 1908, -1000, -449, 1045, 1820, - 1842, 18808, 1806, 2275, 1682, 45419, -1000, -1000, 46068, -1000, - 278, -1000, 246, 45419, -1000, -1000, -1000, 378, 46717, -1000, - 7041, -1000, -1000, -1000, 248, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 46717, 273, -1000, 1804, 1132, -1000, -1000, 1859, - -1000, -1000, -1000, -1000, 218, 353, 1353, 225, 1342, 225, - -1000, 46717, 616, 1893, 46717, -1000, -1000, -1000, 887, 887, - -1000, -1000, 2131, -1000, 1138, 1972, 19457, 19457, -1000, 661, - 299, -138, 1802, 1802, -1000, 1802, 1803, -1000, 1802, 197, - 1802, 189, 1802, -1000, -1000, 1228, 1228, 1296, -1000, 1949, - 1938, -1000, 1195, 18808, 2190, -1000, -1000, -1000, -1000, -1000, - -29, 2184, 2179, 1972, -1000, 1801, 1800, 18808, 1972, 1228, - 1921, 1972, 1972, 1972, 1972, -1000, 1195, 1296, 2121, 1296, - 1972, 1972, 2116, 313, 1972, 1435, 1435, 1435, 1435, 1435, - 1296, 1296, 1296, 1296, 45419, -1000, -160, -1000, -1000, -202, - -207, -1000, 1228, -160, 1686, 1228, -1000, 1902, 1860, 2092, - 1831, 1972, 2082, 1972, 1972, 1972, 1816, -1000, 2219, 2219, - 2219, 1420, 1001, 46717, -1000, -1000, -1000, -1000, 2314, 2300, - 1683, -1000, -1000, 112, 443, -1000, 2084, 2044, -1000, 2270, - 2048, 2269, -1000, -1000, -1000, -1000, -1000, 1195, -1000, 2160, - 1664, -1000, 741, 1667, -1000, -1000, 17510, 1422, 2010, 594, - 1420, 1704, 2326, 1861, 1907, 2904, -1000, -1000, -1000, -1000, - 1953, -1000, 1952, -1000, -1000, 1785, -1000, 2060, 381, 23353, - 1694, 1694, -1000, 583, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 930, 6853, 2385, -1000, 1340, -1000, 1116, 184, 1041, - -1000, -1000, 733, 733, -1000, 817, 801, -1000, 46717, 1796, - -1000, 447, 1303, 447, 1039, -1000, 1036, -1000, -1000, -1000, - -1000, 1950, 2095, -1000, -1000, -1000, -1000, 46717, -1000, -1000, - 46717, 46717, 46717, 1791, 2265, -1000, 18808, 1790, 738, 2054, - 45419, 45419, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 498, 733, -416, 339, 324, 733, 733, - 733, -450, -1000, -1000, 1408, 1400, -1000, -123, -1000, 18808, - -1000, -1000, -1000, 1064, 1064, 1300, 1298, 1280, -1000, 1785, - -1000, -1000, -1000, 1622, -1000, -1000, -104, 45419, 45419, 45419, - 45419, -1000, -1000, 1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 661, 1228, 338, -113, - 1228, -1000, -1000, 447, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 18808, -1000, 18808, -1000, 1195, 18808, - 2243, 1272, 18808, 18808, -1000, 1034, 1033, 1972, -1000, -1000, - -1000, 18808, -1000, -1000, -1000, -1000, -1000, 18808, -1000, -1000, - -1000, 18808, 294, 938, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1228, 380, -1000, -1000, -1000, -1000, - 2324, -1000, 1228, 18808, -1000, -1000, 18808, -1000, 18808, 18808, - -1000, 18808, -1000, 18808, -1000, -1000, -1000, -1000, 18808, 1778, - 2078, 1778, 1778, 25300, -1000, -1000, 2300, 2296, 2264, 2029, - 2034, 2034, 2084, -1000, 2260, 2256, -1000, 1268, 2255, 1229, - 798, -1000, 46068, 18808, 148, -1000, 389, 45419, 148, 45419, - -1000, 2286, -1000, -1000, 18808, 1789, -1000, 18808, -1000, -1000, - -1000, -1000, 5983, 2314, 1694, -1000, -1000, 695, -1000, 18808, - -1000, -1000, -1000, 7940, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1224, 1215, -1000, -1000, 1787, 18808, -1000, -1000, - -1000, 1527, 1436, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1785, -1000, -1000, -1000, -1000, 378, -445, 2018, 45419, - 1029, -1000, 1395, 1682, 363, 148, 1199, 733, 733, 733, - 1028, 983, 30492, 1393, -1000, 45419, 446, -1000, 378, -1000, - -134, -135, 1972, -1000, -1000, 2192, -1000, -1000, 12948, -1000, - -1000, 1782, 1865, -1000, -1000, -1000, -1000, 1994, -96, -120, - -1000, -1000, 1972, 1972, 1708, 1228, -1000, 1972, 1972, 1401, - 1396, -1000, 1972, 1296, 1772, -1000, 294, 1228, 1906, -1000, - -1000, 5983, -1000, -1000, 2286, 2254, 75, -1000, -1000, 264, - 75, 1195, 1740, 1972, 1712, 1695, 1972, 1972, 25949, -1000, - 2253, 2248, 31141, 31141, 666, 2296, -167, 18808, 18808, 2027, - 978, -1000, -1000, -1000, -1000, 1196, 1190, -1000, 1187, -1000, - 2374, -1000, 1195, -1000, 148, -1000, 577, 1667, -1000, 2243, - 1195, 45419, 1195, 104, 2286, -1000, 1972, -1000, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, -1000, -1000, - 45419, 2000, -1000, -1000, 2189, 1387, 59, -1000, 1339, 1682, - -1000, -1000, 145, -1000, 18808, -1000, 30492, 1185, 1155, -1000, - -1000, -1000, -1000, -450, -1000, -1000, -1000, -1000, -1000, -1000, - 388, 1681, -1000, 727, 45419, 46717, -1000, 1976, -1000, -1000, - -1000, 18808, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 18808, -1000, 1228, 1901, -1000, -272, -1000, -423, 18808, -160, - -1000, -1000, -160, -1000, 18808, -1000, -1000, 18808, -1000, 18808, - -1000, -1000, 1385, -1000, -1000, -1000, -1000, -1000, 1385, 1385, - -1000, -167, -1000, 1678, -1000, 45419, 1195, 1658, -1000, 937, - -1000, -1000, -1000, -1000, -1000, 46068, 1667, 45419, -1000, 1338, - 1228, 1778, 2243, -1000, 1314, -1000, 388, -1000, 1781, 1842, - -1000, -1000, -1000, 16861, -1000, -1000, -1000, -1000, -1000, 205, - -103, 12948, 9673, 1311, -1000, -99, 1972, 1296, -1000, -381, - -1000, -1000, -1000, -1000, 262, -1000, -1000, 1658, -1000, -1000, - 1684, 1618, 1563, 29843, -1000, -1000, -1000, -1000, -167, -1000, - -1000, 2180, -1000, -1000, 1635, -1000, -1000, 25300, 44770, -1000, - -84, 737, -103, 18808, 1780, 1228, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -22, -1000, -1000, -1000, -1000, -1000, - 1859, -114, -1000, -1000, -1000, 132, -407, -221, -224, -1000, - -1000, 19457, -1000, 18808, -1000, 18808, -1000, 18808, -1000, -1000, - -1000, 45419, 1778, -1000, 1276, -1000, 3875, -220, 1897, -1000, - -60, -1000, -1000, -1000, 883, 1149, -1000, -1000, -1000, -1000, - -1000, -1000, 1989, 45419, -1000, 454, -1000, -1000, -104, -121, - 790, -1000, -1000, -1000, -1000, -1000, 1227, 1218, 1972, -1000, - 45419, -1000, 44770, -213, 579, 5983, -1000, 1886, 1885, 2364, - -1000, -1000, -1000, -1000, -1000, -1000, -456, 1267, 276, -1000, - -1000, 132, -1000, 18808, -1000, 18808, -1000, 1228, -1000, -1000, - 2176, 104, -1000, 2367, -1000, 2320, 677, 677, -1000, 974, - -456, -1000, -1000, 1972, 1972, -1000, -233, -1000, -1000, -1000, - -1000, -1000, 421, 1025, -1000, -1000, -1000, -1000, -1000, 5983, - -1000, -1000, -1000, 192, 192, -1000, -1000, + -1000, -1000, 1107, 1021, 1021, 1021, 1021, 1021, 19347, 1103, + -1000, -1000, -1000, 1399, 2983, 1880, 2955, 1021, 1021, -1000, + 1021, 2895, 2889, 1342, 1652, 1342, 1785, -1000, 2825, 1021, + 2800, 2796, 2790, 2131, 2781, 2777, 2773, 1021, 1021, 1021, + 2127, 2767, 2738, 2729, 2725, 2715, 2711, 2702, 2698, 2686, + 1021, -156, 1021, 1342, -1000, -1000, -1000, -1000, -1000, 2682, + 2099, 1342, 1783, 1297, 572, -1000, -1000, 1628, 1342, 1342, + 1628, 1628, 2613, 2604, 2593, 2589, 2363, 2307, 1021, 1021, + -1000, 1021, 2255, 2250, 2090, 2059, 1342, -1000, 1335, 47213, + -1000, -295, -1000, 25, 792, 1297, -1000, 31013, 1342, -1000, + 6084, -1000, 1134, -1000, -1000, -1000, -1000, -1000, 28421, 1623, + 2296, -1000, -1000, 1297, 1614, -1000, -1000, 505, 115, 27773, + 656, 656, 171, 1225, 1225, 19347, -1000, -1000, -1000, -1000, + -1000, -1000, 570, 2408, 392, 1297, -1000, 1712, 2053, -1000, + -1000, -1000, 2290, 21940, -1000, -1000, 1297, 1297, 47213, 1784, + 1692, -1000, 567, -1000, 1156, 1780, 61, 54, -1000, -1000, + -1000, -1000, 1225, -1000, 1140, 394, 668, -1000, 470, -1000, + -1000, -1000, -1000, 2173, 120, -1000, -1000, -1000, 281, 505, + -1000, -1000, -1000, -1000, -1000, -1000, 1396, 1396, -1000, -1000, + -1000, -1000, -1000, 1065, -1000, -1000, -1000, 1057, -1000, -1000, + 2186, 2047, 325, -1000, -1000, 737, 1391, -1000, -1000, 2206, + 737, 737, 45917, -1000, -1000, 1629, 2268, 294, 47213, 826, + 2027, -1000, 1963, 1963, 1963, 47213, -1000, -1000, -1000, -1000, + -1000, -1000, -436, 63, 412, -1000, -1000, -1000, 4632, 45917, + 1607, -1000, 270, -1000, 1624, -1000, 45917, -1000, 1578, 1889, + 1147, 1147, -1000, -1000, -1000, 45917, 1297, -1000, -1000, -1000, + -1000, 521, 2249, 306, -1000, -1000, -178, -1000, -1000, 275, + 270, 46565, 1147, 681, -1000, -1000, -1000, -1000, -1000, -437, + 1576, 512, 280, 345, 47213, 47213, 47213, 47213, 47213, 590, + -1000, -1000, 55, -1000, -1000, 248, -1000, -1000, -1000, -1000, + 248, -1000, -1000, -1000, -1000, 350, 498, -1000, 47213, 47213, + 702, -1000, -1000, -1000, 869, -1000, -1000, 869, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2223, 47213, + 33, -404, -1000, -390, 19347, -1000, -1000, -1000, -1000, 1122, + 535, 1864, 19995, 19995, 19995, -1000, -1000, -1000, 882, 882, + 27125, -1000, 19347, 18699, -1000, -1000, 19347, 19347, 811, -1000, + 19347, 984, -1000, 19347, -1000, -1000, -1000, 1335, 1021, 1021, + 1021, 1021, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1817, 19347, 19347, 19347, 1342, 338, -1000, -1000, + -1000, -1000, -1000, 2421, -1000, 19347, -1000, 27125, 19347, 19347, + 19347, -1000, -1000, -1000, 19347, 19347, -1000, -1000, 19347, 19347, + -1000, 19347, 19347, 19347, -1000, 19347, 19347, 19347, 19347, -1000, + -1000, -1000, -1000, 19347, 19347, 19347, 19347, 19347, 19347, 19347, + 19347, 19347, 19347, -1000, -1000, 32309, 101, -156, 1113, 101, + 1113, -1000, 18699, 13496, -1000, -1000, -1000, -1000, -1000, 19347, + 19347, 19347, 19347, 19347, 19347, -1000, -1000, -1000, 19347, 19347, + -1000, 19347, -1000, 19347, -1000, -1000, -1000, -1000, -1000, 792, + -1000, 598, 598, 598, 45917, -1000, -1000, -1000, -1000, 1778, + -1000, 2330, -1000, 2112, 2105, 2420, 2408, -1000, 23885, 2296, + -1000, -1000, 45917, -283, -1000, 2147, 2188, 656, 656, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 11534, 2336, 19347, 2024, + 46565, 138, -1000, 23237, 45917, 46565, 23885, 23885, 23885, 23885, + 23885, -1000, 2051, 2041, -1000, 2084, 2044, 2136, 47213, -1000, + 1383, 1574, -1000, 19347, 25829, 1752, 23885, -1000, -1000, 23885, + 47213, 10880, -1000, -1000, 30, 27, -1000, -1000, -1000, -1000, + 697, -1000, -1000, 312, 2288, 2170, -1000, -1000, -1000, -1000, + -1000, 1571, -1000, 1567, 1777, 1559, 228, -1000, 1869, 2218, + 737, 737, -1000, 1055, -1000, 1147, 1389, 1381, -1000, -1000, + -1000, 491, -1000, 2279, 47213, 2020, 2018, 2016, -1000, -445, + 1053, 1888, 1849, 19347, 1882, 2384, 1769, 45917, -1000, -1000, + 46565, -1000, 301, -1000, 325, 45917, -1000, -1000, -1000, 386, + 47213, -1000, 5494, -1000, -1000, -1000, 270, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 47213, 292, -1000, 1876, 1135, -1000, + -1000, 1938, -1000, -1000, -1000, -1000, 219, 358, 1378, 255, + 1360, 255, -1000, 47213, 657, 2047, 47213, -1000, -1000, -1000, + 947, 947, -1000, -1000, 2214, -1000, 1147, 1021, 19995, 19995, + -1000, 684, 341, -135, 1862, 1862, -1000, 1862, 1865, -1000, + 1862, 212, 1862, 196, 1862, -1000, -1000, 1342, 1342, 1335, + -1000, 2054, 1259, -1000, 1225, 19347, 2246, -1000, -1000, -1000, + -1000, -1000, -20, 2235, 2231, 1021, -1000, 1861, 1860, 19347, + 1021, 1342, 2011, 1021, 1021, 1021, 1021, -1000, 1225, 1335, + 2217, 1335, 1021, 1021, 2207, 321, 1021, 1556, 1556, 1556, + 1556, 1556, 1335, 1335, 1335, 1335, 45917, -1000, -156, -1000, + -1000, -198, -199, -1000, 1342, -156, 1773, 1342, -1000, 1991, + 1973, 2176, 1968, 1021, 2161, 1021, 1021, 1021, 1844, -1000, + 2329, 2329, 2329, 1547, 1134, 47213, -1000, -1000, -1000, -1000, + 2408, 2400, 1770, -1000, -1000, 115, 489, -1000, 2151, 2188, + -1000, 2381, 2132, 2380, -1000, -1000, -1000, -1000, -1000, 1225, + -1000, 2263, 1751, -1000, 759, 1677, -1000, -1000, 18051, 1552, + 2100, 562, 1547, 1706, 2053, 1936, 2015, 2877, -1000, -1000, + -1000, -1000, 1903, -1000, 1875, -1000, -1000, 1831, -1000, 2085, + 393, 23885, 1681, 1681, -1000, 560, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 953, 5894, 2434, -1000, 1354, -1000, 1132, + 187, 1038, -1000, -1000, 737, 737, -1000, 860, 854, -1000, + 47213, 1853, -1000, 505, 1350, 505, 1032, -1000, 1026, -1000, + -1000, -1000, -1000, 1872, 1985, -1000, -1000, -1000, -1000, 47213, + -1000, -1000, 47213, 47213, 47213, 1850, 2379, -1000, 19347, 1848, + 746, 2145, 45917, 45917, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 493, 737, -416, 355, 354, + 737, 737, 737, -446, -1000, -1000, 1527, 1523, -1000, -111, + -1000, 19347, -1000, -1000, -1000, 1041, 1041, 1331, 1313, 1307, + -1000, 1831, -1000, -1000, -1000, 1560, -1000, -1000, -96, 45917, + 45917, 45917, 45917, -1000, -1000, 1001, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 684, 1342, + 344, -99, 1342, -1000, -1000, 505, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 19347, -1000, 19347, -1000, + 1225, 19347, 2336, 1296, 19347, 19347, -1000, 1020, 1006, 1021, + -1000, -1000, -1000, 19347, -1000, -1000, -1000, -1000, -1000, 19347, + -1000, -1000, -1000, 19347, 203, 882, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1342, 389, -1000, -1000, + -1000, -1000, 2413, -1000, 1342, 19347, -1000, -1000, 19347, -1000, + 19347, 19347, -1000, 19347, -1000, 19347, -1000, -1000, -1000, -1000, + 19347, 1297, 2166, 1297, 1297, 25829, -1000, -1000, 2400, 2396, + 2378, 2118, 2128, 2128, 2151, -1000, 2366, 2355, -1000, 1293, + 2351, 1292, 847, -1000, 46565, 19347, 138, -1000, 396, 45917, + 138, 45917, -1000, 2364, -1000, -1000, 19347, 1834, -1000, 19347, + -1000, -1000, -1000, -1000, 6289, 2408, 1681, -1000, -1000, 704, + -1000, 19347, -1000, -1000, -1000, 3703, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1278, 1256, -1000, -1000, 1832, 19347, + -1000, -1000, -1000, 1534, 1530, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1831, -1000, -1000, -1000, -1000, 386, -441, + 1949, 45917, 1005, -1000, 1434, 1769, 377, 138, 1250, 737, + 737, 737, 986, 979, 31013, 1418, -1000, 45917, 455, -1000, + 386, -1000, -127, -131, 1021, -1000, -1000, 2287, -1000, -1000, + 13496, -1000, -1000, 1827, 1943, -1000, -1000, -1000, -1000, 2071, + -90, -104, -1000, -1000, 1021, 1021, 1684, 1342, -1000, 1021, + 1021, 1524, 1420, -1000, 1021, 1335, 1767, -1000, 203, 1342, + 2010, -1000, -1000, 6289, -1000, -1000, 2364, 2349, 101, -1000, + -1000, 276, 101, 1225, 1708, 1021, 1704, 1690, 1021, 1021, + 26477, -1000, 2345, 2343, 31661, 31661, 792, 2396, -163, 19347, + 19347, 2116, 991, -1000, -1000, -1000, -1000, 1234, 1191, -1000, + 1180, -1000, 2432, -1000, 1225, -1000, 138, -1000, 549, 1677, + -1000, 2336, 1225, 45917, 1225, 113, 2364, -1000, 1021, -1000, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, + -1000, -1000, 45917, 1533, -1000, -1000, 2284, 1416, 60, -1000, + 1406, 1769, -1000, -1000, 137, -1000, 19347, -1000, 31013, 1175, + 1169, -1000, -1000, -1000, -1000, -446, -1000, -1000, -1000, -1000, + -1000, -1000, 390, 1736, -1000, 730, 45917, 47213, -1000, 2062, + -1000, -1000, -1000, 19347, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 19347, -1000, 1342, 2009, -1000, -277, -1000, -419, + 19347, -156, -1000, -1000, -156, -1000, 19347, -1000, -1000, 19347, + -1000, 19347, -1000, -1000, 1410, -1000, -1000, -1000, -1000, -1000, + 1410, 1410, -1000, -163, -1000, 1686, -1000, 45917, 1225, 1652, + -1000, 990, -1000, -1000, -1000, -1000, -1000, 46565, 1677, 45917, + -1000, 1385, 1342, 1297, 2336, -1000, 1359, -1000, 390, -1000, + 1826, 1849, -1000, -1000, -1000, 17403, -1000, -1000, -1000, -1000, + -1000, 208, -95, 13496, 10226, 1337, -1000, -94, 1021, 1335, + -1000, -367, -1000, -1000, -1000, -1000, 251, -1000, -1000, 1652, + -1000, -1000, 1646, 1642, 1529, 30365, -1000, -1000, -1000, -1000, + -163, -1000, -1000, 2283, -1000, -1000, 1649, -1000, -1000, 25829, + 45269, -1000, -75, 881, -95, 19347, 1824, 1342, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 26, -1000, -1000, -1000, + -1000, -1000, 1938, -101, -1000, -1000, -1000, 130, -408, -203, + -211, -1000, -1000, 19995, -1000, 19347, -1000, 19347, -1000, 19347, + -1000, -1000, -1000, 45917, 1297, -1000, 1300, -1000, 3399, -213, + 2006, -1000, -15, -1000, -1000, -1000, 946, 1160, -1000, -1000, + -1000, -1000, -1000, -1000, 1492, 45917, -1000, 476, -1000, -1000, + -96, -114, 828, -1000, -1000, -1000, -1000, -1000, 1341, 1115, + 1021, -1000, 45917, -1000, 45269, -205, 681, 6289, -1000, 2005, + 1982, 2412, -1000, -1000, -1000, -1000, -1000, -1000, -452, 1274, + 293, -1000, -1000, 130, -1000, 19347, -1000, 19347, -1000, 1342, + -1000, -1000, 2253, 113, -1000, 2414, -1000, 2427, 700, 700, + -1000, 973, -452, -1000, -1000, 1021, 1021, -1000, -236, -1000, + -1000, -1000, -1000, -1000, 471, 1068, -1000, -1000, -1000, -1000, + -1000, 6289, -1000, -1000, -1000, 247, 247, -1000, -1000, } var yyPgo = [...]int{ - 0, 2952, 2949, 37, 1, 36, 35, 2945, 91, 102, - 190, 39, 197, 101, 2944, 2940, 2938, 2937, 2936, 2934, - 2932, 175, 168, 165, 2931, 2930, 2927, 2921, 2920, 2919, - 2917, 2916, 2915, 2914, 164, 160, 191, 2911, 2910, 2909, - 118, 189, 89, 92, 187, 2908, 2907, 85, 2905, 2903, - 2902, 182, 181, 180, 853, 2901, 177, 116, 53, 2900, - 2899, 2896, 2895, 2894, 2891, 2889, 2887, 2884, 2882, 2881, - 2880, 2877, 2874, 2873, 2872, 2870, 291, 2869, 2865, 22, - 2862, 88, 2860, 2858, 2855, 2851, 7, 2842, 2841, 15, - 40, 2840, 2838, 51, 2833, 2823, 2815, 2814, 2811, 20, - 2805, 27, 2802, 38, 2801, 2798, 124, 2797, 2796, 2793, - 41, 2792, 2790, 2789, 2788, 2786, 2785, 2784, 140, 2782, - 2780, 2779, 303, 215, 2778, 2777, 314, 170, 107, 2775, - 2772, 117, 188, 2769, 121, 2767, 2765, 2762, 145, 2760, - 138, 2759, 2751, 67, 71, 2750, 406, 2749, 2747, 10, - 21, 63, 9, 18, 19, 2746, 2745, 66, 77, 2744, - 119, 2743, 2742, 100, 81, 2737, 97, 108, 2733, 2731, - 12, 4, 2727, 2, 6, 3, 68, 2725, 2724, 110, - 2723, 2722, 2714, 95, 2713, 2712, 3902, 2709, 96, 130, - 98, 76, 2708, 49, 65, 2707, 2706, 2705, 2702, 2701, - 54, 2700, 2698, 2696, 135, 222, 161, 2695, 47, 82, - 58, 133, 2694, 61, 80, 193, 155, 2690, 2687, 137, - 134, 2665, 2662, 60, 44, 45, 2655, 113, 129, 136, - 111, 112, 132, 2644, 2643, 59, 74, 2639, 2637, 2628, - 2623, 163, 2622, 2621, 72, 2619, 57, 2618, 200, 2616, - 16, 64, 2615, 48, 149, 2613, 75, 2599, 2598, 69, - 109, 70, 43, 2596, 179, 2585, 56, 159, 127, 154, - 2584, 2579, 2573, 2570, 195, 313, 2569, 2563, 78, 174, - 141, 144, 93, 2561, 322, 2560, 2558, 157, 2614, 4346, - 2553, 42, 162, 2548, 2534, 6514, 169, 50, 26, 2529, - 115, 2527, 2524, 2515, 2513, 225, 178, 106, 156, 62, - 2511, 2510, 2507, 17, 2506, 2504, 2502, 2501, 2499, 2497, - 90, 34, 33, 32, 233, 73, 30, 105, 148, 83, - 2481, 2478, 2474, 123, 79, 2473, 151, 150, 125, 166, - 2470, 176, 139, 126, 2469, 103, 31, 2468, 2464, 2463, - 2461, 99, 2459, 2458, 2455, 2453, 147, 143, 122, 84, - 2449, 87, 120, 146, 142, 55, 2448, 46, 2447, 2437, - 29, 186, 28, 2436, 14, 104, 238, 2434, 5483, 185, - 2431, 23, 315, 158, 2429, 2428, 8, 11, 13, 2426, - 2425, 2421, 2418, 131, 2417, 2416, 2410, 2409, 25, 52, - 24, 5, 114, 86, 2408, 2407, 2405, 3064, 0, 128, - 2404, 194, + 0, 3052, 3051, 38, 1, 37, 36, 3047, 90, 100, + 203, 30, 214, 102, 3041, 3040, 3038, 3035, 3027, 3025, + 3022, 176, 175, 164, 3019, 3014, 3013, 3010, 3008, 3007, + 3006, 3005, 3002, 3001, 166, 156, 198, 3000, 2998, 2997, + 115, 192, 79, 88, 190, 2996, 2995, 81, 2993, 2992, + 2991, 187, 186, 183, 866, 2989, 181, 114, 53, 2988, + 2986, 2985, 2984, 2982, 2981, 2980, 2978, 2976, 2975, 2974, + 2973, 2972, 2971, 2970, 2969, 2965, 277, 2963, 2962, 22, + 2961, 83, 2952, 2949, 2943, 2940, 8, 2936, 2930, 14, + 47, 2928, 2926, 51, 2924, 2921, 2911, 2910, 2907, 20, + 2901, 27, 2897, 40, 2896, 2895, 123, 2894, 2892, 2891, + 39, 2889, 2887, 2886, 2885, 2883, 2882, 2881, 140, 2876, + 2875, 2874, 239, 202, 2873, 2872, 167, 143, 116, 2862, + 2859, 105, 193, 2858, 120, 2851, 2848, 2845, 158, 2842, + 138, 2838, 2834, 69, 71, 2832, 432, 2830, 2820, 12, + 21, 63, 9, 18, 19, 2819, 2815, 66, 77, 2807, + 119, 2806, 2805, 101, 80, 2802, 98, 107, 2798, 2797, + 11, 7, 2795, 2, 6, 4, 65, 2793, 2789, 108, + 2788, 2787, 2784, 96, 2782, 2780, 173, 2779, 95, 129, + 103, 76, 2778, 48, 58, 2776, 2773, 2769, 2768, 2767, + 54, 2765, 2761, 2753, 135, 221, 160, 2751, 41, 82, + 59, 134, 2747, 64, 92, 195, 161, 2741, 2738, 137, + 131, 2736, 2726, 60, 45, 44, 2717, 112, 128, 118, + 111, 109, 139, 2716, 2714, 57, 74, 2712, 2711, 2708, + 2707, 163, 2705, 2700, 73, 2699, 61, 2694, 185, 2693, + 16, 68, 2691, 46, 174, 2689, 75, 2688, 2687, 70, + 97, 72, 43, 2685, 178, 2682, 56, 155, 125, 150, + 2679, 2676, 2675, 2672, 194, 356, 2671, 2657, 78, 177, + 136, 153, 94, 2654, 360, 2653, 2636, 132, 2606, 6246, + 2635, 42, 159, 2631, 2628, 7075, 157, 50, 33, 2620, + 106, 2619, 2618, 2615, 2614, 259, 162, 113, 154, 62, + 2613, 2612, 2609, 17, 2607, 2595, 2586, 2584, 2580, 2579, + 171, 35, 34, 32, 199, 67, 24, 133, 146, 84, + 2576, 2575, 2568, 122, 87, 2566, 148, 144, 124, 165, + 2565, 180, 141, 127, 2564, 91, 31, 2562, 2561, 2554, + 2549, 99, 2543, 2541, 2533, 2526, 168, 142, 121, 85, + 2525, 86, 117, 145, 151, 55, 2523, 49, 2521, 2519, + 29, 188, 28, 2516, 15, 104, 242, 2503, 5796, 189, + 2498, 23, 333, 147, 2497, 2496, 3, 10, 13, 2491, + 2490, 2481, 2473, 130, 2472, 2470, 2466, 2462, 26, 52, + 25, 5, 110, 89, 2461, 2460, 3801, 0, 126, 2453, + 196, } -//line sql.y:7929 +//line sql.y:7891 type yySymType struct { union any empty struct{} @@ -7340,7 +7387,7 @@ func (st *yySymType) withUnion() *With { } var yyR1 = [...]int{ - 0, 405, 406, 406, 7, 7, 7, 7, 7, 7, + 0, 404, 405, 405, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 256, 378, @@ -7349,7 +7396,7 @@ var yyR1 = [...]int{ 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 13, 13, 13, 13, 13, 19, 20, 12, 12, 21, 21, 104, 104, 22, 23, 23, 23, - 23, 409, 409, 181, 181, 179, 179, 180, 180, 259, + 23, 408, 408, 181, 181, 179, 179, 180, 180, 259, 259, 24, 25, 25, 269, 269, 268, 268, 268, 270, 270, 270, 270, 308, 308, 308, 26, 26, 26, 26, 26, 124, 124, 381, 381, 380, 374, 374, 373, 373, @@ -7390,68 +7437,67 @@ var yyR1 = [...]int{ 351, 351, 351, 351, 351, 351, 351, 351, 351, 277, 277, 277, 385, 385, 385, 385, 385, 385, 384, 384, 384, 350, 350, 350, 383, 383, 57, 57, 214, 214, - 402, 402, 403, 403, 403, 404, 404, 404, 45, 45, - 45, 45, 45, 45, 44, 44, 44, 40, 40, 40, + 402, 402, 403, 403, 403, 45, 45, 45, 45, 45, + 45, 44, 44, 44, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 46, 46, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 40, 40, 40, 40, 40, 46, 46, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 106, 106, 107, 107, 107, 107, 109, 109, 109, - 366, 366, 58, 58, 3, 3, 169, 171, 172, 172, - 170, 170, 170, 170, 170, 170, 60, 60, 59, 59, - 174, 173, 175, 175, 175, 1, 1, 2, 2, 4, - 4, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 27, 27, 27, 27, 27, 106, 106, 107, 107, 107, + 107, 109, 109, 109, 366, 366, 58, 58, 3, 3, + 169, 171, 172, 172, 170, 170, 170, 170, 170, 170, + 60, 60, 59, 59, 174, 173, 175, 175, 175, 1, + 1, 2, 2, 4, 4, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 332, 332, 332, 365, 365, 367, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 112, - 111, 111, 110, 113, 113, 113, 113, 113, 113, 113, - 113, 369, 369, 369, 61, 61, 370, 321, 322, 323, - 5, 6, 346, 368, 120, 120, 28, 37, 37, 29, - 29, 29, 29, 30, 30, 62, 63, 63, 63, 63, + 371, 371, 371, 371, 371, 371, 371, 332, 332, 332, + 365, 365, 367, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 112, 111, 111, 110, 113, 113, 113, + 113, 113, 113, 113, 113, 369, 369, 369, 61, 61, + 370, 321, 322, 323, 5, 6, 346, 368, 120, 120, + 28, 37, 37, 29, 29, 29, 29, 30, 30, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 276, 276, - 285, 285, 275, 275, 300, 300, 300, 278, 278, 278, - 279, 279, 395, 395, 395, 272, 272, 64, 64, 64, - 301, 301, 301, 301, 66, 66, 67, 68, 68, 303, - 303, 304, 304, 69, 70, 82, 82, 82, 82, 82, - 82, 82, 105, 105, 105, 15, 15, 15, 15, 78, - 78, 78, 14, 14, 65, 65, 72, 392, 392, 393, - 394, 394, 394, 394, 73, 75, 31, 31, 31, 31, - 31, 31, 130, 130, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 125, 125, 125, 119, - 119, 410, 76, 77, 77, 123, 123, 123, 116, 116, - 116, 122, 122, 122, 16, 16, 17, 258, 258, 18, - 18, 127, 127, 129, 129, 129, 129, 129, 131, 131, - 131, 131, 131, 131, 131, 126, 126, 128, 128, 128, - 128, 293, 293, 293, 292, 292, 163, 163, 165, 164, - 164, 166, 166, 167, 167, 167, 167, 212, 212, 189, - 189, 251, 251, 252, 252, 250, 250, 257, 257, 253, - 253, 253, 253, 260, 260, 168, 168, 168, 168, 176, - 176, 177, 177, 178, 178, 302, 302, 298, 298, 298, - 297, 297, 182, 182, 182, 184, 183, 183, 183, 183, - 185, 185, 187, 187, 186, 186, 188, 193, 193, 192, - 192, 190, 190, 190, 190, 191, 191, 191, 191, 194, - 194, 140, 140, 140, 140, 140, 140, 140, 155, 155, - 155, 155, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 241, 241, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 276, 276, 285, 285, 275, 275, 300, 300, + 300, 278, 278, 278, 279, 279, 395, 395, 395, 272, + 272, 64, 64, 64, 301, 301, 301, 301, 66, 66, + 67, 68, 68, 303, 303, 304, 304, 69, 70, 82, + 82, 82, 82, 82, 82, 82, 105, 105, 105, 15, + 15, 15, 15, 78, 78, 78, 14, 14, 65, 65, + 72, 392, 392, 393, 394, 394, 394, 394, 73, 75, + 31, 31, 31, 31, 31, 31, 130, 130, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 125, 125, 125, 119, 119, 409, 76, 77, 77, 123, + 123, 123, 116, 116, 116, 122, 122, 122, 16, 16, + 17, 258, 258, 18, 18, 127, 127, 129, 129, 129, + 129, 129, 131, 131, 131, 131, 131, 131, 131, 126, + 126, 128, 128, 128, 128, 293, 293, 293, 292, 292, + 163, 163, 165, 164, 164, 166, 166, 167, 167, 167, + 167, 212, 212, 189, 189, 251, 251, 252, 252, 250, + 250, 257, 257, 253, 253, 253, 253, 260, 260, 168, + 168, 168, 168, 176, 176, 177, 177, 178, 178, 302, + 302, 298, 298, 298, 297, 297, 182, 182, 182, 184, + 183, 183, 183, 183, 185, 185, 187, 187, 186, 186, + 188, 193, 193, 192, 192, 190, 190, 190, 190, 191, + 191, 191, 191, 194, 194, 140, 140, 140, 140, 140, + 140, 140, 155, 155, 155, 155, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 241, 241, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 149, 217, 217, 216, 216, 83, 83, - 83, 84, 84, 85, 85, 85, 85, 85, 86, 86, - 86, 86, 86, 141, 141, 88, 88, 87, 87, 207, - 207, 290, 290, 89, 90, 90, 93, 93, 92, 91, - 91, 97, 97, 94, 94, 96, 96, 95, 98, 98, - 99, 100, 100, 273, 273, 195, 195, 203, 203, 203, - 203, 196, 196, 196, 196, 196, 196, 196, 204, 204, - 204, 211, 205, 205, 201, 201, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, + 150, 150, 150, 150, 150, 150, 150, 149, 217, 217, + 216, 216, 83, 83, 83, 84, 84, 85, 85, 85, + 85, 85, 86, 86, 86, 86, 86, 141, 141, 88, + 88, 87, 87, 207, 207, 290, 290, 89, 90, 90, + 93, 93, 92, 91, 91, 97, 97, 94, 94, 96, + 96, 95, 98, 98, 99, 100, 100, 273, 273, 195, + 195, 203, 203, 203, 203, 196, 196, 196, 196, 196, + 196, 196, 204, 204, 204, 211, 205, 205, 201, 201, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, @@ -7460,34 +7506,34 @@ var yyR1 = [...]int{ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 160, 160, 160, 160, 222, 222, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 148, 148, 161, 161, 161, 161, 162, - 162, 162, 162, 162, 162, 162, 310, 310, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 411, - 411, 324, 324, 324, 324, 202, 202, 202, 202, 202, - 121, 121, 121, 121, 121, 307, 307, 307, 311, 311, - 311, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 312, 312, 220, 220, - 117, 117, 218, 218, 219, 221, 221, 213, 213, 213, - 213, 215, 215, 198, 198, 198, 223, 223, 224, 224, - 101, 102, 102, 103, 103, 225, 225, 227, 226, 226, - 228, 229, 229, 229, 230, 230, 231, 231, 231, 47, - 47, 47, 47, 47, 42, 42, 42, 42, 43, 43, - 43, 43, 132, 132, 132, 132, 134, 134, 133, 133, - 79, 79, 80, 80, 80, 138, 138, 139, 139, 139, - 136, 136, 137, 137, 248, 248, 232, 232, 232, 239, - 239, 239, 235, 235, 237, 237, 237, 238, 238, 238, - 236, 245, 245, 247, 247, 246, 246, 242, 242, 243, - 243, 244, 244, 244, 240, 240, 197, 197, 197, 197, - 197, 249, 249, 249, 249, 261, 261, 208, 208, 210, - 210, 209, 209, 159, 262, 262, 266, 263, 263, 267, - 267, 267, 267, 255, 255, 255, 264, 264, 265, 265, - 294, 294, 294, 271, 271, 284, 284, 280, 280, 281, - 281, 274, 274, 286, 286, 286, 74, 206, 206, 362, - 362, 359, 289, 289, 291, 291, 295, 295, 299, 299, - 296, 296, 287, 287, 287, 287, 287, 287, 287, 287, + 200, 200, 200, 200, 200, 200, 160, 160, 160, 160, + 222, 222, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 148, 148, 161, + 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, + 310, 310, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 410, 410, 324, 324, 324, 324, 202, + 202, 202, 202, 202, 121, 121, 121, 121, 121, 307, + 307, 307, 311, 311, 311, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 312, 312, 220, 220, 117, 117, 218, 218, 219, 221, + 221, 213, 213, 213, 213, 215, 215, 198, 198, 198, + 223, 223, 224, 224, 101, 102, 102, 103, 103, 225, + 225, 227, 226, 226, 228, 229, 229, 229, 230, 230, + 231, 231, 231, 47, 47, 47, 47, 47, 42, 42, + 42, 42, 43, 43, 43, 43, 132, 132, 132, 132, + 134, 134, 133, 133, 79, 79, 80, 80, 80, 138, + 138, 139, 139, 139, 136, 136, 137, 137, 248, 248, + 232, 232, 232, 239, 239, 239, 235, 235, 237, 237, + 237, 238, 238, 238, 236, 245, 245, 247, 247, 246, + 246, 242, 242, 243, 243, 244, 244, 244, 240, 240, + 197, 197, 197, 197, 197, 249, 249, 249, 249, 261, + 261, 208, 208, 210, 210, 209, 209, 159, 262, 262, + 266, 263, 263, 267, 267, 267, 267, 255, 255, 255, + 264, 264, 265, 265, 294, 294, 294, 271, 271, 284, + 284, 280, 280, 281, 281, 274, 274, 286, 286, 286, + 74, 206, 206, 362, 362, 359, 289, 289, 291, 291, + 295, 295, 299, 299, 296, 296, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, @@ -7502,7 +7548,7 @@ var yyR1 = [...]int{ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 287, 287, 287, 287, 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, @@ -7541,8 +7587,8 @@ var yyR1 = [...]int{ 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 407, 408, 305, 306, 306, - 306, + 288, 288, 288, 288, 288, 288, 288, 288, 406, 407, + 305, 306, 306, 306, } var yyR2 = [...]int{ @@ -7596,103 +7642,103 @@ var yyR2 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, - 0, 2, 0, 2, 2, 0, 2, 2, 0, 1, - 5, 1, 3, 7, 1, 3, 3, 1, 2, 2, - 2, 5, 5, 5, 6, 8, 5, 5, 4, 4, - 4, 6, 5, 5, 5, 2, 2, 2, 2, 3, - 3, 3, 4, 3, 3, 1, 3, 5, 1, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 3, 4, 4, 2, 11, 3, 6, 8, 6, 6, - 6, 13, 8, 6, 10, 5, 5, 5, 7, 5, - 5, 5, 5, 5, 7, 7, 5, 5, 4, 4, - 4, 0, 6, 5, 6, 4, 5, 0, 8, 9, - 0, 3, 0, 1, 0, 3, 8, 4, 1, 3, - 3, 6, 7, 7, 8, 4, 0, 1, 0, 1, - 3, 3, 1, 1, 2, 1, 1, 0, 2, 0, - 2, 5, 3, 7, 4, 4, 4, 4, 3, 3, - 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 0, 2, 2, 1, 3, 2, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 1, 3, 3, 0, 2, 2, 2, 2, 2, 2, - 2, 4, 4, 3, 0, 1, 4, 3, 4, 4, - 3, 3, 3, 2, 1, 3, 3, 3, 5, 7, - 7, 6, 5, 3, 2, 3, 3, 3, 7, 3, - 3, 3, 3, 4, 7, 5, 2, 4, 4, 4, - 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, - 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, - 3, 3, 3, 3, 5, 2, 3, 3, 2, 3, - 4, 4, 4, 3, 4, 4, 5, 3, 0, 1, - 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, - 0, 2, 0, 1, 1, 1, 1, 2, 1, 3, - 1, 1, 1, 1, 1, 2, 1, 1, 5, 0, - 1, 0, 1, 2, 3, 0, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 4, 4, 2, 2, 3, 1, 3, 2, - 1, 2, 1, 2, 2, 4, 3, 3, 6, 4, - 7, 6, 1, 3, 2, 2, 2, 2, 1, 1, - 1, 3, 2, 1, 1, 1, 0, 1, 1, 0, - 3, 0, 2, 0, 2, 1, 2, 2, 0, 1, - 1, 0, 1, 1, 5, 5, 4, 0, 2, 4, - 4, 0, 1, 0, 1, 2, 3, 4, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, - 5, 0, 1, 2, 1, 1, 0, 1, 2, 1, - 3, 1, 1, 1, 4, 3, 1, 1, 2, 3, - 7, 0, 3, 0, 1, 1, 3, 1, 3, 1, - 1, 3, 3, 1, 3, 4, 4, 4, 3, 2, - 4, 0, 1, 0, 2, 0, 1, 0, 1, 2, - 1, 1, 1, 2, 2, 1, 2, 3, 2, 3, - 2, 2, 2, 1, 1, 3, 3, 0, 1, 1, - 2, 6, 5, 6, 6, 0, 2, 3, 3, 0, - 2, 3, 3, 3, 2, 3, 1, 6, 3, 4, - 3, 1, 3, 4, 5, 6, 3, 4, 5, 6, - 3, 4, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, - 1, 1, 2, 7, 7, 6, 6, 2, 2, 1, - 6, 3, 3, 3, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 1, 1, 0, 1, 2, 5, 0, - 3, 0, 1, 4, 4, 2, 0, 1, 1, 2, - 2, 1, 1, 2, 2, 0, 1, 1, 1, 1, - 5, 1, 3, 0, 3, 1, 1, 1, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 4, 6, 4, 4, 8, 6, - 8, 6, 5, 4, 10, 2, 2, 1, 2, 2, - 2, 4, 5, 5, 5, 5, 5, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, - 6, 5, 4, 4, 4, 4, 4, 7, 4, 4, - 6, 6, 6, 8, 6, 6, 4, 4, 3, 4, - 6, 6, 4, 4, 4, 6, 8, 6, 4, 6, - 6, 8, 10, 7, 8, 8, 9, 4, 4, 4, - 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 4, 4, 6, 5, 9, 6, 9, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 6, 8, - 10, 12, 14, 6, 8, 8, 10, 12, 14, 6, - 8, 10, 12, 6, 8, 4, 4, 3, 4, 6, - 6, 4, 6, 4, 6, 8, 0, 2, 1, 1, + 0, 2, 0, 2, 2, 0, 1, 5, 1, 3, + 7, 1, 3, 3, 1, 2, 2, 2, 5, 5, + 5, 6, 8, 5, 5, 4, 4, 4, 6, 5, + 5, 5, 2, 2, 2, 2, 3, 3, 3, 4, + 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 3, 4, 4, + 2, 11, 3, 6, 8, 6, 6, 6, 13, 8, + 6, 10, 5, 5, 5, 7, 5, 5, 5, 5, + 5, 7, 7, 5, 5, 0, 6, 5, 6, 4, + 5, 0, 8, 9, 0, 3, 0, 1, 0, 3, + 8, 4, 1, 3, 3, 6, 7, 7, 8, 4, + 0, 1, 0, 1, 3, 3, 1, 1, 2, 1, + 1, 0, 2, 0, 2, 5, 3, 7, 4, 4, + 4, 4, 3, 3, 3, 7, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 0, 2, 2, + 1, 3, 2, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 1, 3, 3, 0, 2, 2, + 2, 2, 2, 2, 2, 4, 4, 3, 0, 1, + 4, 3, 4, 4, 3, 3, 3, 2, 1, 3, + 3, 3, 5, 7, 7, 6, 5, 3, 2, 3, + 3, 3, 7, 3, 3, 3, 3, 4, 7, 5, + 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, + 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, + 4, 4, 4, 2, 3, 3, 3, 3, 5, 2, + 3, 3, 2, 3, 4, 4, 4, 3, 4, 4, + 5, 3, 0, 1, 0, 1, 1, 1, 0, 2, + 2, 0, 2, 2, 0, 2, 0, 1, 1, 1, + 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, + 1, 1, 5, 0, 1, 0, 1, 2, 3, 0, + 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 4, 4, 2, 2, + 3, 1, 3, 2, 1, 2, 1, 2, 2, 4, + 3, 3, 6, 4, 7, 6, 1, 3, 2, 2, + 2, 2, 1, 1, 1, 3, 2, 1, 1, 1, + 0, 1, 1, 0, 3, 0, 2, 0, 2, 1, + 2, 2, 0, 1, 1, 0, 1, 1, 5, 5, + 4, 0, 2, 4, 4, 0, 1, 0, 1, 2, + 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 2, 3, 5, 0, 1, 2, 1, 1, + 0, 1, 2, 1, 3, 1, 1, 1, 4, 3, + 1, 1, 2, 3, 7, 0, 3, 0, 1, 1, + 3, 1, 3, 1, 1, 3, 3, 1, 3, 4, + 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, + 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, + 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, + 3, 0, 1, 1, 2, 6, 5, 6, 6, 0, + 2, 3, 3, 0, 2, 3, 3, 3, 2, 3, + 1, 6, 3, 4, 3, 1, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 2, 2, 2, 2, 1, 1, 2, 7, 7, 6, + 6, 2, 2, 1, 6, 3, 3, 3, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, + 1, 2, 5, 0, 3, 0, 1, 4, 4, 2, + 0, 1, 1, 2, 2, 1, 1, 2, 2, 0, + 1, 1, 1, 1, 5, 1, 3, 0, 3, 1, + 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 4, 6, + 4, 4, 8, 6, 8, 6, 5, 4, 10, 2, + 2, 1, 2, 2, 2, 4, 5, 5, 5, 5, + 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 8, 8, 8, 6, 5, 4, 4, 4, 4, + 4, 7, 4, 4, 6, 6, 6, 8, 6, 6, + 4, 4, 3, 4, 6, 6, 4, 4, 4, 6, + 8, 6, 4, 6, 6, 8, 10, 7, 8, 8, + 9, 4, 4, 4, 4, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 4, 4, 6, 5, 9, + 6, 9, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 6, 8, 10, 12, 14, 6, 8, 8, + 10, 12, 14, 6, 8, 10, 12, 6, 8, 4, + 4, 3, 4, 6, 6, 4, 6, 4, 6, 8, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 0, 2, 3, 3, 4, 4, 4, 4, 4, - 0, 3, 4, 7, 3, 1, 1, 1, 0, 5, - 5, 2, 3, 1, 2, 2, 1, 2, 1, 2, - 2, 1, 2, 2, 1, 1, 0, 1, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 1, 3, - 5, 1, 1, 1, 2, 2, 0, 3, 0, 2, - 2, 1, 3, 0, 1, 0, 1, 3, 1, 3, - 2, 0, 1, 1, 0, 1, 2, 4, 4, 0, - 2, 2, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 0, 3, 3, 3, 0, 3, 1, 1, - 0, 4, 0, 1, 1, 0, 3, 1, 3, 2, - 1, 1, 0, 1, 2, 4, 9, 3, 5, 0, - 3, 3, 0, 1, 0, 2, 2, 0, 2, 2, - 2, 0, 2, 1, 2, 3, 3, 0, 2, 1, - 2, 3, 4, 3, 0, 1, 2, 1, 5, 4, - 4, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 4, 1, 1, 3, 3, 1, 3, 3, - 3, 3, 3, 1, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 0, 2, 0, - 3, 0, 1, 0, 1, 1, 5, 0, 1, 0, - 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 0, 2, 0, 2, 3, 3, 4, + 4, 4, 4, 4, 0, 3, 4, 7, 3, 1, + 1, 1, 0, 5, 5, 2, 3, 1, 2, 2, + 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, + 0, 1, 0, 1, 0, 2, 1, 2, 4, 0, + 2, 1, 1, 3, 5, 1, 1, 1, 2, 2, + 0, 3, 0, 2, 2, 1, 3, 0, 1, 0, + 1, 3, 1, 3, 2, 0, 1, 1, 0, 1, + 2, 4, 4, 0, 2, 2, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, + 0, 3, 1, 1, 0, 4, 0, 1, 1, 0, + 3, 1, 3, 2, 1, 1, 0, 1, 2, 4, + 9, 3, 5, 0, 3, 3, 0, 1, 0, 2, + 2, 0, 2, 2, 2, 0, 2, 1, 2, 3, + 3, 0, 2, 1, 2, 3, 4, 3, 0, 1, + 2, 1, 5, 4, 4, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 4, 1, 1, 3, + 3, 1, 3, 3, 3, 3, 3, 1, 1, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 0, 2, 0, 3, 0, 1, 0, 1, 1, + 5, 0, 1, 0, 1, 2, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -7747,722 +7793,719 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, - 1, + 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -405, -76, -410, -7, -11, -19, -20, -21, -22, + -1000, -404, -76, -409, -7, -11, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -62, -63, -64, -66, -67, -68, -69, -70, -14, -65, -31, -32, -71, -72, -73, -74, -75, -16, -17, -18, -9, -8, -13, 10, 11, -104, -33, 33, -38, -48, 225, -49, - -39, 226, -50, 228, 227, 264, 229, 257, 75, 313, - 314, 316, 317, 318, 319, -105, 262, 263, 231, 37, + -39, 226, -50, 228, 227, 264, 229, 257, 75, 312, + 313, 315, 316, 317, 318, -105, 262, 263, 231, 37, 46, 34, 35, 38, 235, 270, 271, 234, -10, -34, - 9, -407, 12, 445, 259, 258, 29, -12, 507, 87, - -77, -406, 659, -248, -232, 23, 34, 30, -231, -227, + 9, -406, 12, 444, 259, 258, 29, -12, 506, 87, + -77, -405, 658, -248, -232, 23, 34, 30, -231, -227, -123, -232, 21, 19, 8, -76, -76, -76, 13, 14, -76, -347, -349, 87, 159, 87, -76, -55, -54, -52, -51, -53, -56, 32, -45, -46, -371, -44, -41, 230, 227, 274, 123, 124, 264, 265, 266, 229, 248, 263, - 267, 262, 283, -40, 82, 34, 507, 510, -354, 226, - 232, 233, 228, 446, 126, 125, 76, -351, 368, 540, - 629, -56, 631, 101, 104, 630, 45, 238, 632, 633, - 634, 547, 635, 247, 636, 637, 638, 639, 645, 588, - 646, 647, 648, 127, 8, -76, -299, -295, 91, -288, - 504, 250, 538, 539, 299, 82, 42, 513, 365, 368, - 540, 475, 629, 313, 327, 321, 480, 481, 482, 348, - 340, 505, 541, 514, 302, 251, 287, 623, 338, 135, - 631, 306, 542, 265, 373, 374, 543, 375, 101, 316, - 412, 644, 305, 544, 642, 104, 630, 80, 474, 52, - 626, 45, 260, 336, 234, 332, 632, 288, 545, 516, - 281, 126, 123, 651, 37, 330, 51, 31, 641, 125, - 50, 633, 150, 546, 634, 547, 377, 355, 617, 49, - 378, 266, 548, 85, 271, 509, 309, 625, 379, 494, - 331, 380, 298, 640, 231, 549, 608, 600, 601, 381, - 382, 618, 360, 356, 361, 496, 550, 404, 479, 383, - 604, 605, 658, 53, 551, 552, 619, 124, 553, 79, - 635, 81, 325, 326, 554, 296, 249, 499, 500, 406, - 352, 457, 464, 465, 111, 112, 460, 113, 466, 114, - 467, 468, 469, 458, 115, 108, 459, 470, 471, 353, - 354, 116, 472, 110, 109, 461, 463, 117, 473, 247, - 36, 384, 506, 300, 59, 304, 275, 407, 47, 358, - 655, 46, 613, 501, 555, 616, 351, 347, 454, 54, - 556, 557, 558, 559, 476, 636, 350, 324, 346, 650, - 4, 293, 477, 637, 63, 233, 363, 362, 364, 282, - 403, 343, 560, 561, 562, 254, 83, 563, 333, 22, - 564, 565, 385, 289, 566, 57, 567, 568, 410, 263, - 569, 55, 638, 40, 570, 268, 652, 639, 571, 572, - 573, 574, 270, 575, 387, 576, 602, 603, 386, 357, - 359, 502, 277, 388, 508, 577, 310, 329, 267, 643, - 578, 255, 490, 491, 492, 493, 624, 498, 497, 269, - 274, 262, 411, 256, 579, 580, 581, 582, 583, 303, - 599, 584, 585, 317, 645, 455, 44, 586, 587, 588, - 589, 590, 297, 292, 405, 414, 62, 84, 370, 591, - 592, 622, 323, 290, 593, 314, 56, 646, 647, 648, - 284, 649, 483, 484, 485, 486, 10, 656, 657, 478, - 390, 127, 294, 295, 48, 344, 276, 594, 312, 307, - 595, 334, 335, 349, 322, 345, 315, 609, 278, 391, - 456, 264, 596, 413, 291, 366, 371, 308, 512, 495, - 283, 392, 621, 511, 487, 488, 342, 339, 285, 489, - 597, 393, 239, 279, 280, 598, 610, 394, 395, 301, - 396, 397, 398, 399, 400, 402, 311, 401, 606, 607, - 286, 510, 320, 337, 372, 426, 427, 428, 429, 430, + 267, 262, 283, -40, 82, 34, 506, 509, -354, 226, + 232, 233, 228, 445, 126, 125, 76, -351, 367, 539, + 628, -56, 630, 101, 104, 629, 45, 238, 631, 632, + 633, 546, 634, 247, 635, 636, 637, 638, 644, 587, + 645, 646, 647, 127, 8, -76, -299, -295, 91, -288, + 503, 250, 537, 538, 299, 82, 42, 512, 364, 367, + 539, 474, 628, 312, 326, 320, 479, 480, 481, 347, + 339, 504, 540, 513, 302, 251, 287, 622, 337, 135, + 630, 306, 541, 265, 372, 373, 542, 374, 101, 315, + 411, 643, 305, 543, 641, 104, 629, 80, 473, 52, + 625, 45, 260, 335, 234, 331, 631, 288, 544, 515, + 281, 126, 123, 650, 37, 329, 51, 31, 640, 125, + 50, 632, 150, 545, 633, 546, 376, 354, 616, 49, + 377, 266, 547, 85, 271, 508, 309, 624, 378, 493, + 330, 379, 298, 639, 231, 548, 607, 599, 600, 380, + 381, 617, 359, 355, 360, 495, 549, 403, 478, 382, + 603, 604, 657, 53, 550, 551, 618, 124, 552, 79, + 634, 81, 324, 325, 553, 296, 249, 498, 499, 405, + 351, 456, 463, 464, 111, 112, 459, 113, 465, 114, + 466, 467, 468, 457, 115, 108, 458, 469, 470, 352, + 353, 116, 471, 110, 109, 460, 462, 117, 472, 247, + 36, 383, 505, 300, 59, 304, 275, 406, 47, 357, + 654, 46, 612, 500, 554, 615, 350, 346, 453, 54, + 555, 556, 557, 558, 475, 635, 349, 323, 345, 649, + 4, 293, 476, 636, 63, 233, 362, 361, 363, 282, + 402, 342, 559, 560, 561, 254, 83, 562, 332, 22, + 563, 564, 384, 289, 565, 57, 566, 567, 409, 263, + 568, 55, 637, 40, 569, 268, 651, 638, 570, 571, + 572, 573, 270, 574, 386, 575, 601, 602, 385, 356, + 358, 501, 277, 387, 507, 576, 310, 328, 267, 642, + 577, 255, 489, 490, 491, 492, 623, 497, 496, 269, + 274, 262, 410, 256, 578, 579, 580, 581, 582, 303, + 598, 583, 584, 316, 644, 454, 44, 585, 586, 587, + 588, 589, 297, 292, 404, 413, 62, 84, 369, 590, + 591, 621, 322, 290, 592, 313, 56, 645, 646, 647, + 284, 648, 482, 483, 484, 485, 10, 655, 656, 477, + 389, 127, 294, 295, 48, 343, 276, 593, 307, 594, + 333, 334, 348, 321, 344, 314, 608, 278, 390, 455, + 264, 595, 412, 291, 365, 370, 308, 511, 494, 283, + 391, 620, 510, 486, 487, 341, 338, 285, 488, 596, + 392, 239, 279, 280, 597, 609, 393, 394, 301, 395, + 396, 397, 398, 399, 401, 311, 400, 605, 606, 286, + 509, 319, 336, 371, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 453, 237, -76, 237, -186, -295, 237, - -264, 374, -285, 376, 389, 384, 394, 382, -276, 385, - 387, 277, -395, 404, 237, 391, 225, 377, 386, 395, - 396, 301, 402, 397, 311, 401, 286, 398, 399, 400, - -378, 177, 634, 649, 135, 341, 381, 379, 405, 613, - 91, -301, 91, 92, 93, -288, 315, -303, 320, -289, - -378, -288, 318, -76, -305, -305, -125, 613, 615, -205, - -140, 143, -155, -158, -146, -150, -199, -200, -201, -202, - -156, -215, -254, 166, 167, 174, 144, -211, -159, 27, - 503, 447, 446, 177, 32, -149, 220, 69, 70, 449, - 146, 58, 12, 422, 423, -157, 417, 424, 419, 474, - 476, 477, 478, 475, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 479, 451, 452, 118, 453, 108, - 110, 109, 454, 455, 456, 338, 501, 502, 496, 499, - 500, 498, 497, 353, 354, 457, 458, 459, 111, 112, - 113, 114, 115, 116, 117, 460, 463, 461, 462, 464, - 465, 466, 471, 472, 467, 468, 469, 470, 473, -85, - -97, 529, 528, -98, -147, -148, -161, -162, -289, -295, - 242, 416, 236, 172, 445, -151, -144, -213, 107, 92, - 93, -8, -209, 415, 420, 421, 425, 418, 515, 517, - 532, 533, 535, 520, 525, 524, 527, 490, 491, 492, - 493, 494, 495, 600, 601, 602, 603, 604, 605, 606, - 607, -378, -288, 91, -153, -152, -195, 94, 99, 102, - 103, 105, -401, 260, 334, 335, 119, -407, 627, 90, - 95, 96, 97, 98, 120, 121, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 45, 390, - 390, -186, -76, -76, -76, -76, -225, -123, -227, -10, - -8, -407, 9, -76, -8, -9, -13, -34, -36, 534, - -35, -295, 100, -232, -248, 13, 162, 43, 51, -230, - -231, -12, -8, -140, 20, 24, 25, -128, 168, -140, - -295, -128, -274, 241, -76, -76, -263, -308, 315, -267, - 405, 613, 404, -255, -265, 91, -254, -264, 403, -348, - 159, -334, -338, -289, 252, -364, 248, -186, -357, -356, - -289, -407, -124, -284, 238, 246, 245, 136, -382, 139, - 294, 416, 236, -51, -52, -53, -264, 176, 633, -106, - 269, 273, 88, 88, -338, -337, -336, -383, 273, 252, - -363, -355, 244, 253, -344, 245, 246, -339, 238, 137, - -383, -339, 243, 253, 248, 252, 273, 273, 127, 273, - 127, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 268, -345, 151, -345, 511, 511, -351, -383, 248, 238, - -383, -383, 244, -286, -339, 240, 26, 240, 36, 36, - -345, -345, -345, -264, 176, -345, -345, -345, -345, 281, - 281, -345, -345, -345, -345, -345, -345, -345, -345, -345, - -345, -345, -345, -345, -345, -345, -345, -345, 237, -382, - -132, 401, 301, 311, 82, -54, 283, -37, -186, -284, - 238, 239, -382, 270, -186, 221, -186, -278, 159, 16, - -278, -275, 390, 388, 375, 380, -278, -278, -278, -278, - 284, 373, -340, 238, 36, 249, 390, 284, 373, 284, - 285, 284, 285, 383, 393, 284, -300, 15, 162, 416, - 378, 382, 277, 237, 278, 239, 392, 285, -300, 90, - -279, 159, 284, 390, 280, -278, -278, -306, -407, -291, - -289, -287, 230, 24, 142, 26, 28, 145, 177, 130, - 20, 146, 38, 232, 341, 248, 176, 244, 446, 225, - 73, 515, 417, 419, 415, 422, 448, 449, 416, 376, - 32, 14, 517, 29, 258, 25, 39, 170, 227, 149, - 518, 261, 27, 259, 118, 121, 520, 23, 76, 253, - 15, 246, 41, 17, 521, 522, 18, 242, 241, 162, - 238, 71, 12, 220, 30, 158, 67, 523, 137, 524, - 525, 526, 527, 131, 69, 159, 21, 653, 420, 421, - 34, 614, 503, 272, 172, 74, 60, 615, 143, 418, - 528, 529, 119, 530, 122, 77, 620, 139, 19, 72, - 43, 531, 273, 532, 243, 654, 533, 408, 534, 160, - 228, 445, 70, 161, 627, 535, 628, 236, 389, 9, - 450, 33, 257, 245, 129, 68, 536, 237, 148, 451, - 452, 240, 132, 120, 8, 136, 35, 13, 75, 78, - 423, 424, 425, 58, 128, 507, 147, 16, 537, 409, - 141, -378, 616, -306, -306, 33, 92, 240, -289, -186, - -82, 608, 229, -130, 390, -118, 177, 634, 617, 618, - 619, 616, 387, 624, 622, 620, 284, 621, 88, 139, - 141, 142, 4, -140, 158, -196, 151, 152, 153, 154, - 155, 156, 157, 162, 143, 145, 159, -241, 140, 163, - 164, 165, 166, 167, 168, 169, 171, 170, 172, 173, - 160, 161, 176, 223, 224, -150, -150, -150, -150, -211, - -217, -216, -407, -213, -378, -288, -295, -407, -407, -150, - -273, -407, -407, -150, -407, -407, -407, -220, -140, -407, - -407, -411, -407, -411, -411, -324, -407, -324, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, -407, - -407, -407, -407, -407, 221, -407, -407, -407, -407, -407, - -324, -324, -324, -324, -324, -407, -407, -407, -407, -407, - -407, -407, -407, -407, -407, -407, -407, -407, -407, 103, - 99, 102, 94, -215, 105, 90, 90, 90, 90, -8, - -9, -205, -407, -305, -392, -393, -189, -186, -407, 301, - -289, -289, 270, -230, -12, -8, -225, -231, -227, -8, - -76, -116, -129, 64, 65, -131, 25, 39, 68, 66, - 24, -408, 89, -408, -248, -408, 88, -36, -251, 87, - 62, 44, 90, 90, 88, 22, -226, -228, -140, 15, - -293, 4, -292, 26, -289, 90, 221, 15, -187, 30, - -186, -274, -274, 88, 315, 91, -269, -268, 406, 408, - 151, -294, -289, 90, 32, 89, 88, -186, -313, -316, - -318, -317, -319, -314, -315, 338, 339, 177, 342, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 355, 33, - 260, 334, 335, 336, 337, 356, 357, 358, 359, 361, - 362, 363, 364, 321, 340, 505, 322, 323, 324, 325, - 326, 327, 329, 330, 331, 332, 333, -379, -378, 87, - 89, 88, -320, 87, -140, -132, 237, -378, 238, 238, - 238, -76, 445, -345, -345, -345, 268, 20, -44, -41, - -371, 19, -40, -41, 230, 123, 124, 227, 87, -334, - 87, -343, -379, -378, 87, 137, 243, 136, -342, -339, - -342, -343, -378, -213, -378, 137, 137, -378, -378, -260, - -289, -260, -260, 24, -260, 24, -260, 24, 96, -289, - -260, 24, -260, 24, -260, 24, -260, 24, -260, 24, - 32, 79, 80, 81, 32, 83, 84, 85, -213, -378, - -378, -213, -334, -213, -186, -378, -264, 96, 96, 96, - -345, -345, 96, 90, 90, 90, -345, -345, 96, 90, - -297, -295, 90, 90, -384, 254, 298, 300, 96, 96, - 96, 96, 32, 90, -385, 32, 641, 640, 642, 643, - 644, 90, 96, 32, 96, 32, 96, -289, 87, -186, - -138, 288, 225, 227, 230, 77, 90, 304, 305, 302, - 307, 308, 126, 125, -404, 312, 151, 45, 88, 240, - 237, -378, -280, 242, -280, -289, -296, -295, -287, 90, - -140, -341, 15, 162, -300, -300, -278, -186, -341, -300, - -278, -186, -278, -278, -278, -278, -300, -300, -300, -278, - -295, -295, -186, -186, -186, -186, -186, -186, -186, -306, - -279, -278, 616, 90, -272, 15, 77, -306, -306, -304, - 318, -78, -289, 90, -15, -11, -22, -21, -23, 151, - 88, 507, -179, -186, 616, 616, 616, 616, 616, 616, - -140, -140, -140, -140, 530, -203, 119, 143, 120, 121, - -158, -204, -209, -211, 106, 162, 145, 159, -241, -146, - -150, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, -146, -307, -289, 90, 177, -154, -153, - 105, -401, -154, 504, 88, -216, 221, -140, -140, -378, - -140, -289, -126, -128, -126, -140, -218, -219, 147, -213, - -140, -408, -408, 96, 105, 168, -122, 25, 39, -122, - -122, -122, -122, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -122, -289, -289, -115, -114, 427, 428, - 429, 430, 432, 433, 434, 437, 438, 442, 443, 426, - 444, 431, 436, 439, 440, 441, 435, 337, -140, -140, - -140, -140, -140, -140, -83, -140, 130, 131, 132, -205, - -140, -146, -140, -140, -140, -408, -140, -140, -140, -206, - -205, -377, -376, -375, -140, -140, -140, -140, -140, -140, + 441, 442, 452, 237, -76, 237, -186, -295, 237, -264, + 373, -285, 375, 388, 383, 393, 381, -276, 384, 386, + 277, -395, 403, 237, 390, 225, 376, 385, 394, 395, + 301, 401, 396, 311, 400, 286, 397, 398, 399, -378, + 177, 633, 648, 135, 340, 380, 378, 404, 612, 91, + -301, 91, 92, 93, -288, 314, -303, 319, -289, -378, + -288, 317, -76, -305, -305, -125, 612, 614, -205, -140, + 143, -155, -158, -146, -150, -199, -200, -201, -202, -156, + -215, -254, 166, 167, 174, 144, -211, -159, 27, 502, + 446, 445, 177, 32, -149, 220, 69, 70, 448, 146, + 58, 12, 421, 422, -157, 416, 423, 418, 473, 475, + 476, 477, 474, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 478, 450, 451, 118, 452, 108, 110, + 109, 453, 454, 455, 337, 500, 501, 495, 498, 499, + 497, 496, 352, 353, 456, 457, 458, 111, 112, 113, + 114, 115, 116, 117, 459, 462, 460, 461, 463, 464, + 465, 470, 471, 466, 467, 468, 469, 472, -85, -97, + 528, 527, -98, -147, -148, -161, -162, -289, -295, 242, + 415, 236, 172, 444, -151, -144, -213, 107, 92, 93, + -8, -209, 414, 419, 420, 424, 417, 514, 516, 531, + 532, 534, 519, 524, 523, 526, 489, 490, 491, 492, + 493, 494, 599, 600, 601, 602, 603, 604, 605, 606, + -378, -288, 91, -153, -152, -195, 94, 99, 102, 103, + 105, -401, 260, 333, 334, 119, -406, 626, 90, 95, + 96, 97, 98, 120, 121, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 45, 389, 389, + -186, -76, -76, -76, -76, -225, -123, -227, -10, -8, + -406, 9, -76, -8, -9, -13, -34, -36, 533, -35, + -295, 100, -232, -248, 13, 162, 43, 51, -230, -231, + -12, -8, -140, 20, 24, 25, -128, 168, -140, -295, + -128, -274, 241, -76, -76, -263, -308, 314, -267, 404, + 612, 403, -255, -265, 91, -254, -264, 402, -348, 159, + -334, -338, -289, 252, -364, 248, -186, -357, -356, -289, + -406, -124, -284, 238, 246, 245, 136, -382, 139, 294, + 415, 236, -51, -52, -53, -264, 176, 632, -106, 269, + 273, 88, 88, -338, -337, -336, -383, 273, 252, -363, + -355, 244, 253, -344, 245, 246, -339, 238, 137, -383, + -339, 243, 253, 248, 252, 273, 273, 127, 273, 127, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 268, + -345, 151, -345, 510, 510, -351, -383, 248, 238, -383, + -383, 244, -286, -339, 240, 26, 240, 36, 36, -345, + -345, -345, -264, 176, -345, -345, -345, -345, 281, 281, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, 237, -382, -132, + 400, 301, 82, -54, 283, -37, -186, -284, 238, 239, + -382, 270, -186, 221, -186, -278, 159, 16, -278, -275, + 389, 387, 374, 379, -278, -278, -278, -278, 284, 372, + -340, 238, 36, 249, 389, 284, 372, 284, 285, 284, + 285, 382, 392, 284, -300, 15, 162, 415, 377, 381, + 277, 237, 278, 239, 391, 285, -300, 90, -279, 159, + 284, 389, 280, -278, -278, -306, -406, -291, -289, -287, + 230, 24, 142, 26, 28, 145, 177, 130, 20, 146, + 38, 232, 340, 248, 176, 244, 445, 225, 73, 514, + 416, 418, 414, 421, 447, 448, 415, 375, 32, 14, + 516, 29, 258, 25, 39, 170, 227, 149, 517, 261, + 27, 259, 118, 121, 519, 23, 76, 253, 15, 246, + 41, 17, 520, 521, 18, 242, 241, 162, 238, 71, + 12, 220, 30, 158, 67, 522, 137, 523, 524, 525, + 526, 131, 69, 159, 21, 652, 419, 420, 34, 613, + 502, 272, 172, 74, 60, 614, 143, 417, 527, 528, + 119, 529, 122, 77, 619, 139, 19, 72, 43, 530, + 273, 531, 243, 653, 532, 407, 533, 160, 228, 444, + 70, 161, 626, 534, 627, 236, 388, 9, 449, 33, + 257, 245, 129, 68, 535, 237, 148, 450, 451, 240, + 132, 120, 8, 136, 35, 13, 75, 78, 422, 423, + 424, 58, 128, 506, 147, 16, 536, 408, 141, -378, + 615, -306, -306, 33, 92, 240, -289, -186, -82, 607, + 229, -130, 389, -118, 177, 633, 616, 617, 618, 615, + 386, 623, 621, 619, 284, 620, 88, 139, 141, 142, + 4, -140, 158, -196, 151, 152, 153, 154, 155, 156, + 157, 162, 143, 145, 159, -241, 140, 163, 164, 165, + 166, 167, 168, 169, 171, 170, 172, 173, 160, 161, + 176, 223, 224, -150, -150, -150, -150, -211, -217, -216, + -406, -213, -378, -288, -295, -406, -406, -150, -273, -406, + -406, -150, -406, -406, -406, -220, -140, -406, -406, -410, + -406, -410, -410, -324, -406, -324, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, 221, -406, -406, -406, -406, -406, -324, -324, + -324, -324, -324, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -406, -406, 103, 99, 102, + 94, -215, 105, 90, 90, 90, 90, -8, -9, -205, + -406, -305, -392, -393, -189, -186, -406, 301, -289, -289, + 270, -230, -12, -8, -225, -231, -227, -8, -76, -116, + -129, 64, 65, -131, 25, 39, 68, 66, 24, -407, + 89, -407, -248, -407, 88, -36, -251, 87, 62, 44, + 90, 90, 88, 22, -226, -228, -140, 15, -293, 4, + -292, 26, -289, 90, 221, 15, -187, 30, -186, -274, + -274, 88, 314, 91, -269, -268, 405, 407, 151, -294, + -289, 90, 32, 89, 88, -186, -313, -316, -318, -317, + -319, -314, -315, 337, 338, 177, 341, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 354, 33, 260, 333, + 334, 335, 336, 355, 356, 357, 358, 360, 361, 362, + 363, 320, 339, 504, 321, 322, 323, 324, 325, 326, + 328, 329, 330, 331, 332, -379, -378, 87, 89, 88, + -320, 87, -140, -132, 237, -378, 238, 238, 238, -76, + 444, -345, -345, -345, 268, 20, -44, -41, -371, 19, + -40, -41, 230, 123, 124, 227, 87, -334, 87, -343, + -379, -378, 87, 137, 243, 136, -342, -339, -342, -343, + -378, -213, -378, 137, 137, -378, -378, -260, -289, -260, + -260, 24, -260, 24, -260, 24, 96, -289, -260, 24, + -260, 24, -260, 24, -260, 24, -260, 24, 32, 79, + 80, 81, 32, 83, 84, 85, -213, -378, -378, -213, + -334, -213, -186, -378, -264, 96, 96, 96, -345, -345, + 96, 90, 90, 90, -345, -345, 96, 90, -297, -295, + 90, 90, -384, 254, 298, 300, 96, 96, 96, 96, + 32, 90, -385, 32, 640, 639, 641, 642, 643, 90, + 96, 32, 96, 32, 96, -289, 87, -186, -138, 288, + 225, 227, 230, 77, 90, 304, 305, 302, 307, 308, + 151, 45, 88, 240, 237, -378, -280, 242, -280, -289, + -296, -295, -287, 90, -140, -341, 15, 162, -300, -300, + -278, -186, -341, -300, -278, -186, -278, -278, -278, -278, + -300, -300, -300, -278, -295, -295, -186, -186, -186, -186, + -186, -186, -186, -306, -279, -278, 615, 90, -272, 15, + 77, -306, -306, -304, 317, -78, -289, 90, -15, -11, + -22, -21, -23, 151, 88, 506, -179, -186, 615, 615, + 615, 615, 615, 615, -140, -140, -140, -140, 529, -203, + 119, 143, 120, 121, -158, -204, -209, -211, 106, 162, + 145, 159, -241, -146, -150, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -307, -289, + 90, 177, -154, -153, 105, -401, -154, 503, 88, -216, + 221, -140, -140, -378, -140, -289, -126, -128, -126, -140, + -218, -219, 147, -213, -140, -407, -407, 96, 105, 168, + -122, 25, 39, -122, -122, -122, -122, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -122, -289, -289, + -115, -114, 426, 427, 428, 429, 431, 432, 433, 436, + 437, 441, 442, 425, 443, 430, 435, 438, 439, 440, + 434, 336, -140, -140, -140, -140, -140, -140, -83, -140, + 130, 131, 132, -205, -140, -146, -140, -140, -140, -407, + -140, -140, -140, -206, -205, -377, -376, -375, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -408, -140, -160, - -144, 96, -256, 105, 92, -140, -140, -127, -126, -291, - -296, -287, -288, -126, -127, -127, -126, -126, -140, -140, - -140, -140, -140, -140, -140, -140, -408, -140, -140, -140, - -140, -140, -248, -408, -205, 88, -394, 408, 409, 614, - -298, 273, -297, 26, -206, 90, 15, -258, 78, -289, - -230, -230, 64, 65, 60, -126, -131, -408, -35, 26, - -250, -289, 63, 90, -325, -264, 365, 366, 177, -140, - -140, 88, -229, 28, 29, -186, -292, 168, -296, -186, - -259, 273, -186, -164, -166, -167, -168, -189, -212, -407, - -169, -8, 526, 523, 15, -179, -180, -188, -295, -267, - -308, -269, 88, 407, 409, 410, 77, 122, -140, -326, - 176, -353, -352, -351, -334, -336, -337, -338, 89, -326, - -330, 371, 370, -320, -320, -320, -320, -320, -325, -325, - -325, -325, 87, 87, -320, -320, -320, -320, -328, 87, - -328, -328, -329, 87, -329, -364, -140, -361, -360, -358, - -359, 247, 101, 598, 554, 507, 547, 588, 78, -356, - -229, 96, -408, -138, -281, 242, -362, -359, -378, -378, - -378, -281, 91, 90, 91, 90, 91, 90, -107, -58, - -1, 653, 654, 655, 88, 20, -335, -334, -57, 298, - -367, -368, 273, -363, -357, -343, 137, -342, -343, -343, - -378, 88, 30, 127, 127, 127, 127, 507, 227, 33, - -282, 546, 143, 598, 554, -334, -57, 240, 240, -307, - -307, -307, 90, 90, -277, 649, -179, -134, 290, 151, - 279, 279, 237, 237, 292, -186, 303, 306, 304, 305, - 302, 307, 308, 24, 24, 24, 24, 24, 96, 98, - 291, 293, 295, 281, -186, -186, -280, 77, -181, -186, - 27, -295, -186, -278, -278, -186, -278, -278, -186, -289, - 352, 609, 610, 612, 611, -118, 408, 88, 507, 23, - -119, 23, -407, 119, 120, 121, -204, -146, -150, -146, - 142, 261, -407, -213, -408, -291, 26, 88, 78, -408, - 88, 88, -408, -408, 88, 15, -221, -219, 149, -140, - -408, 88, -408, -408, -408, -205, -140, -140, -140, -140, - -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, - -205, 88, 88, 15, -311, 26, -408, -408, -408, -408, - -408, -220, -408, 15, -408, 78, 88, 162, 88, -408, - -408, -408, 88, 88, -408, -408, 88, 88, -408, 88, - 88, 88, -408, 88, 88, 88, 88, -408, -408, -408, - -408, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, -408, -90, 531, -408, -408, 88, -408, 88, -408, - -407, 221, -408, -408, -408, -408, -408, 88, 88, 88, - 88, 88, 88, -408, -408, -408, 88, 88, -408, 88, - -408, 88, -408, -393, 613, 409, -193, -192, -190, 75, - 241, 76, -407, -297, -408, -154, -256, -257, -256, -198, - -289, 96, 105, -232, -163, -165, 15, -131, -211, 89, - 88, -325, -236, -242, -275, -289, 90, 177, -327, 177, - -327, 365, 366, -228, 221, -194, 16, -197, 33, 58, - -11, -407, -407, 33, 88, -182, -184, -183, -185, 67, - 71, 73, 68, 69, 70, 74, -302, 26, -8, -164, - -8, -407, -186, -179, -409, 15, 78, -409, 88, 221, - -268, -270, 411, 408, 414, -378, 90, -106, 88, -351, - -338, -233, -135, 41, -331, 372, -325, 514, -325, -333, - 90, -333, 96, 96, 89, -47, -42, -43, 34, 82, - -358, -345, 90, 40, -345, -345, -289, 89, -229, -134, - -186, 143, 77, -362, -362, -362, -295, -2, 652, 658, - 137, 87, 375, 19, -250, 88, 89, -214, 299, 89, - -108, -289, 89, 87, -343, -343, -289, -407, 237, 32, - 32, 598, 554, 546, -57, -214, -213, -378, -326, 651, - 650, 89, 239, 297, -139, 422, -136, 90, 91, -186, - -186, -186, -186, -186, 230, 227, 398, -402, 309, -402, - 282, 240, -179, -186, 88, -81, 256, 251, -300, -300, - 34, -186, 408, 625, 623, -140, 142, 261, -158, -150, - -146, -309, 177, 338, 260, 336, 332, 352, 343, 370, - 334, 371, 331, 330, 329, -309, -307, -205, -128, -140, - -140, 150, -140, 148, -140, -408, -408, -408, -408, -408, - -225, -140, -140, -140, -408, 177, 338, 15, -140, -307, - -140, -140, -140, -140, -140, -375, -140, -205, -140, -205, - -140, -140, -140, -140, -140, -376, -376, -376, -376, -376, - -205, -205, -205, -205, -407, -289, -93, -92, -91, 581, - 241, -90, -160, -93, -160, -127, -291, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -190, -339, -339, - -339, -260, 88, -271, 23, 15, 58, 58, -163, -194, - -164, -131, -289, -239, 608, -245, 47, -243, -244, 48, - -240, 49, 57, -327, -327, 168, -230, -140, -261, 77, - -262, -266, -213, -208, -210, -209, -407, -249, -408, -289, - -260, -262, -166, -167, -167, -166, -167, 67, 67, 67, - 72, 67, 72, 67, -183, -295, -408, -140, -298, 78, - -164, -164, -188, -295, 168, 408, 412, 413, -351, -400, - 119, 143, 32, 77, 368, 101, -398, 176, 543, 593, - 598, 554, 547, 588, -399, 243, 136, 137, 255, 26, - 42, 89, 88, 89, 88, 89, 88, -283, -282, -43, - -42, -345, -345, 96, -378, 90, 90, 239, 27, -186, - 77, 77, 77, -109, 656, 96, 87, -3, 82, -140, - 87, 20, -334, -213, -369, -321, -370, -322, -323, -5, - -6, -346, -112, 58, 101, -61, 45, 238, 636, 637, - 127, -407, 649, -361, -250, -365, -367, -186, -143, -407, - -142, -144, -151, 166, 167, 260, 334, 335, -214, -186, - -133, 288, 296, 87, -137, 92, -381, 78, 279, 368, - 279, 90, -403, 310, 90, -403, -186, -81, -47, -186, - -278, -278, 34, -378, -408, -158, -150, -121, 162, 507, - -312, 513, -320, -320, -320, -329, -320, 326, -320, 326, - -320, -408, -408, -408, 88, -408, 23, -408, -140, 88, - -117, 450, 88, 88, -408, 87, 87, -140, -408, -408, - -408, 88, -408, -408, -408, -408, -408, 88, -408, -408, - -408, 88, -310, 599, -408, -408, -408, -408, -408, -408, - -408, -408, -408, -408, -89, -290, -289, -90, 563, 563, - -408, -90, -222, 88, -408, -408, 88, -408, 88, 88, - -408, 88, -408, 88, -408, -408, -408, -408, 88, -191, - 23, -191, -191, -408, -256, -186, -194, -223, 17, -236, - 52, 344, -247, -246, 56, 48, -244, 20, 50, 20, - 31, -261, 88, 151, 88, -408, -408, 88, 58, 221, - -408, -194, -177, -176, 77, 78, -178, 77, -176, 67, - 67, -251, 88, -259, -164, -194, -194, 221, 119, -407, - -145, -157, -143, 13, 90, 90, -378, -397, 640, 641, - 32, 96, -345, -345, 137, 137, -186, 87, -325, 90, - -325, 96, 96, 32, 83, 84, 85, 32, 79, 80, - 81, -186, -186, -186, -186, -366, 87, 20, -140, 87, - 151, 89, -250, -250, 275, 162, -345, 634, 281, 281, - -345, -345, -345, -111, -110, 656, 89, -408, 88, -332, - 507, 510, -140, -152, -152, -251, 89, -374, 507, -380, - -289, -289, -289, -289, 96, 98, -408, 505, 74, 508, - -408, -325, -140, -140, -140, -230, 90, -140, -140, 96, - 96, -408, -140, -205, -140, -408, -174, -173, -175, 617, - 119, 32, -309, -408, -207, 273, -96, -95, -94, 15, - -408, -140, -140, -140, -140, -140, -140, -140, -407, 67, - 19, 17, -407, -407, -298, -223, -224, 18, 20, -237, - 54, -235, 53, -235, -246, 20, 20, 90, 20, 90, - 137, -266, -140, -210, 58, -11, -289, -208, -289, -225, - -140, 87, -140, -154, -194, -194, -140, -200, 474, 476, - 477, 478, 475, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 479, 453, 108, 110, 109, 454, 455, - 456, 338, 501, 502, 496, 499, 500, 498, 497, 353, - 354, 457, 458, 459, 111, 112, 113, 114, 115, 116, - 117, 460, 463, 461, 464, 465, 466, 471, 472, 467, - 468, 469, 470, 473, 490, 491, 492, 493, 494, 495, - 600, 601, 602, 603, 604, 605, 606, 607, 90, 90, - 87, -140, 89, 89, -251, -365, -58, 89, -252, -250, - 96, 89, 276, -209, -407, 90, -345, -345, -345, 96, - 96, -297, -408, 88, -289, -399, -367, 511, 511, -408, - 26, -373, -372, -291, 87, 78, 63, 506, 509, -408, - -408, 88, -408, -408, -408, 89, 89, -408, -408, -408, - 88, -408, -173, -175, -408, 77, -154, -225, 20, -93, - 298, 300, -93, -408, 88, -408, -408, 88, -408, 88, - -408, -408, -253, -408, -289, 243, 20, 20, -253, -253, - -193, -224, -103, -102, -101, 537, -140, -205, -238, 55, - 77, 122, 90, 90, 90, 13, -208, 221, -230, -250, - -171, 375, -225, -408, -250, 89, 26, 89, 658, 137, - 89, -209, -120, -407, 272, -297, 90, 90, -110, -113, - -11, 88, 151, -250, -186, 63, -140, -205, -408, 77, - 518, 617, -88, -87, -84, 628, 654, -205, -90, -90, - -140, -140, -140, 88, -408, -408, -408, -103, 88, -100, - -99, -289, 77, 122, -262, -289, 89, -408, -407, -230, - 89, -234, -11, 87, -3, 272, -321, -370, -322, -323, - -5, -6, -346, -79, 507, -372, -350, -291, 90, 96, - 89, 507, -408, -408, -86, 145, 626, 596, -141, -152, - -149, 220, -408, 88, -408, 88, -408, 88, -289, 243, - -101, 88, 26, -298, -172, -170, -289, 560, -390, -389, - 503, -400, -396, 119, 143, 101, -398, 598, 554, 128, - 129, -79, -140, 87, -408, -80, 287, 613, -381, 508, - -86, 627, 574, 549, 574, 549, -140, -140, -140, -99, - -407, -408, 88, 23, -313, -60, 571, -387, -388, 77, - -391, 381, 570, 591, 119, 90, 89, -250, 248, -374, - 509, 142, -408, 88, -408, 88, -408, -89, -170, 567, - -326, -154, -388, 77, -387, 77, 14, 13, -4, 657, - 89, 289, -86, -140, -140, -408, -59, 27, -171, -386, - 256, 251, 254, 33, -386, 96, -4, -408, -408, 571, - 250, 32, 119, -154, -174, -173, -173, + -140, -407, -140, -160, -144, 96, -256, 105, 92, -140, + -140, -127, -126, -291, -296, -287, -288, -126, -127, -127, + -126, -126, -140, -140, -140, -140, -140, -140, -140, -140, + -407, -140, -140, -140, -140, -140, -248, -407, -205, 88, + -394, 407, 408, 613, -298, 273, -297, 26, -206, 90, + 15, -258, 78, -289, -230, -230, 64, 65, 60, -126, + -131, -407, -35, 26, -250, -289, 63, 90, -325, -264, + 364, 365, 177, -140, -140, 88, -229, 28, 29, -186, + -292, 168, -296, -186, -259, 273, -186, -164, -166, -167, + -168, -189, -212, -406, -169, -8, 525, 522, 15, -179, + -180, -188, -295, -267, -308, -269, 88, 406, 408, 409, + 77, 122, -140, -326, 176, -353, -352, -351, -334, -336, + -337, -338, 89, -326, -330, 370, 369, -320, -320, -320, + -320, -320, -325, -325, -325, -325, 87, 87, -320, -320, + -320, -320, -328, 87, -328, -328, -329, 87, -329, -364, + -140, -361, -360, -358, -359, 247, 101, 597, 553, 506, + 546, 587, 78, -356, -229, 96, -407, -138, -281, 242, + -362, -359, -378, -378, -378, -281, 91, 90, 91, 90, + 91, 90, -107, -58, -1, 652, 653, 654, 88, 20, + -335, -334, -57, 298, -367, -368, 273, -363, -357, -343, + 137, -342, -343, -343, -378, 88, 30, 127, 127, 127, + 127, 506, 227, 33, -282, 545, 143, 597, 553, -334, + -57, 240, 240, -307, -307, -307, 90, 90, -277, 648, + -179, -134, 290, 151, 279, 279, 237, 237, 292, -186, + 303, 306, 304, 305, 302, 307, 308, 24, 24, 24, + 24, 24, 291, 293, 295, 281, -186, -186, -280, 77, + -181, -186, 27, -295, -186, -278, -278, -186, -278, -278, + -186, -289, 351, 608, 609, 611, 610, -118, 407, 88, + 506, 23, -119, 23, -406, 119, 120, 121, -204, -146, + -150, -146, 142, 261, -406, -213, -407, -291, 26, 88, + 78, -407, 88, 88, -407, -407, 88, 15, -221, -219, + 149, -140, -407, 88, -407, -407, -407, -205, -140, -140, + -140, -140, -407, -407, -407, -407, -407, -407, -407, -407, + -407, -407, -205, 88, 88, 15, -311, 26, -407, -407, + -407, -407, -407, -220, -407, 15, -407, 78, 88, 162, + 88, -407, -407, -407, 88, 88, -407, -407, 88, 88, + -407, 88, 88, 88, -407, 88, 88, 88, 88, -407, + -407, -407, -407, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, -407, -90, 530, -407, -407, 88, -407, + 88, -407, -406, 221, -407, -407, -407, -407, -407, 88, + 88, 88, 88, 88, 88, -407, -407, -407, 88, 88, + -407, 88, -407, 88, -407, -393, 612, 408, -193, -192, + -190, 75, 241, 76, -406, -297, -407, -154, -256, -257, + -256, -198, -289, 96, 105, -232, -163, -165, 15, -131, + -211, 89, 88, -325, -236, -242, -275, -289, 90, 177, + -327, 177, -327, 364, 365, -228, 221, -194, 16, -197, + 33, 58, -11, -406, -406, 33, 88, -182, -184, -183, + -185, 67, 71, 73, 68, 69, 70, 74, -302, 26, + -8, -164, -8, -406, -186, -179, -408, 15, 78, -408, + 88, 221, -268, -270, 410, 407, 413, -378, 90, -106, + 88, -351, -338, -233, -135, 41, -331, 371, -325, 513, + -325, -333, 90, -333, 96, 96, 89, -47, -42, -43, + 34, 82, -358, -345, 90, 40, -345, -345, -289, 89, + -229, -134, -186, 143, 77, -362, -362, -362, -295, -2, + 651, 657, 137, 87, 374, 19, -250, 88, 89, -214, + 299, 89, -108, -289, 89, 87, -343, -343, -289, -406, + 237, 32, 32, 597, 553, 545, -57, -214, -213, -378, + -326, 650, 649, 89, 239, 297, -139, 421, -136, 90, + 91, -186, -186, -186, -186, -186, 230, 227, 397, -402, + 309, -402, 282, 240, -179, -186, 88, -81, 256, 251, + -300, -300, 34, -186, 407, 624, 622, -140, 142, 261, + -158, -150, -146, -309, 177, 337, 260, 335, 331, 351, + 342, 369, 333, 370, 330, 329, 328, -309, -307, -205, + -128, -140, -140, 150, -140, 148, -140, -407, -407, -407, + -407, -407, -225, -140, -140, -140, -407, 177, 337, 15, + -140, -307, -140, -140, -140, -140, -140, -375, -140, -205, + -140, -205, -140, -140, -140, -140, -140, -376, -376, -376, + -376, -376, -205, -205, -205, -205, -406, -289, -93, -92, + -91, 580, 241, -90, -160, -93, -160, -127, -291, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -190, + -339, -339, -339, -260, 88, -271, 23, 15, 58, 58, + -163, -194, -164, -131, -289, -239, 607, -245, 47, -243, + -244, 48, -240, 49, 57, -327, -327, 168, -230, -140, + -261, 77, -262, -266, -213, -208, -210, -209, -406, -249, + -407, -289, -260, -262, -166, -167, -167, -166, -167, 67, + 67, 67, 72, 67, 72, 67, -183, -295, -407, -140, + -298, 78, -164, -164, -188, -295, 168, 407, 411, 412, + -351, -400, 119, 143, 32, 77, 367, 101, -398, 176, + 542, 592, 597, 553, 546, 587, -399, 243, 136, 137, + 255, 26, 42, 89, 88, 89, 88, 89, 88, -283, + -282, -43, -42, -345, -345, 96, -378, 90, 90, 239, + 27, -186, 77, 77, 77, -109, 655, 96, 87, -3, + 82, -140, 87, 20, -334, -213, -369, -321, -370, -322, + -323, -5, -6, -346, -112, 58, 101, -61, 45, 238, + 635, 636, 127, -406, 648, -361, -250, -365, -367, -186, + -143, -406, -142, -144, -151, 166, 167, 260, 333, 334, + -214, -186, -133, 288, 296, 87, -137, 92, -381, 78, + 279, 367, 279, 90, -403, 310, 90, -403, -186, -81, + -47, -186, -278, -278, 34, -378, -407, -158, -150, -121, + 162, 506, -312, 512, -320, -320, -320, -329, -320, 325, + -320, 325, -320, -407, -407, -407, 88, -407, 23, -407, + -140, 88, -117, 449, 88, 88, -407, 87, 87, -140, + -407, -407, -407, 88, -407, -407, -407, -407, -407, 88, + -407, -407, -407, 88, -310, 598, -407, -407, -407, -407, + -407, -407, -407, -407, -407, -407, -89, -290, -289, -90, + 562, 562, -407, -90, -222, 88, -407, -407, 88, -407, + 88, 88, -407, 88, -407, 88, -407, -407, -407, -407, + 88, -191, 23, -191, -191, -407, -256, -186, -194, -223, + 17, -236, 52, 343, -247, -246, 56, 48, -244, 20, + 50, 20, 31, -261, 88, 151, 88, -407, -407, 88, + 58, 221, -407, -194, -177, -176, 77, 78, -178, 77, + -176, 67, 67, -251, 88, -259, -164, -194, -194, 221, + 119, -406, -145, -157, -143, 13, 90, 90, -378, -397, + 639, 640, 32, 96, -345, -345, 137, 137, -186, 87, + -325, 90, -325, 96, 96, 32, 83, 84, 85, 32, + 79, 80, 81, -186, -186, -186, -186, -366, 87, 20, + -140, 87, 151, 89, -250, -250, 275, 162, -345, 633, + 281, 281, -345, -345, -345, -111, -110, 655, 89, -407, + 88, -332, 506, 509, -140, -152, -152, -251, 89, -374, + 506, -380, -289, -289, -289, -289, 96, 98, -407, 504, + 74, 507, -407, -325, -140, -140, -140, -230, 90, -140, + -140, 96, 96, -407, -140, -205, -140, -407, -174, -173, + -175, 616, 119, 32, -309, -407, -207, 273, -96, -95, + -94, 15, -407, -140, -140, -140, -140, -140, -140, -140, + -406, 67, 19, 17, -406, -406, -298, -223, -224, 18, + 20, -237, 54, -235, 53, -235, -246, 20, 20, 90, + 20, 90, 137, -266, -140, -210, 58, -11, -289, -208, + -289, -225, -140, 87, -140, -154, -194, -194, -140, -200, + 473, 475, 476, 477, 474, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 478, 452, 108, 110, 109, + 453, 454, 455, 337, 500, 501, 495, 498, 499, 497, + 496, 352, 353, 456, 457, 458, 111, 112, 113, 114, + 115, 116, 117, 459, 462, 460, 463, 464, 465, 470, + 471, 466, 467, 468, 469, 472, 489, 490, 491, 492, + 493, 494, 599, 600, 601, 602, 603, 604, 605, 606, + 90, 90, 87, -140, 89, 89, -251, -365, -58, 89, + -252, -250, 96, 89, 276, -209, -406, 90, -345, -345, + -345, 96, 96, -297, -407, 88, -289, -399, -367, 510, + 510, -407, 26, -373, -372, -291, 87, 78, 63, 505, + 508, -407, -407, 88, -407, -407, -407, 89, 89, -407, + -407, -407, 88, -407, -173, -175, -407, 77, -154, -225, + 20, -93, 298, 300, -93, -407, 88, -407, -407, 88, + -407, 88, -407, -407, -253, -407, -289, 243, 20, 20, + -253, -253, -193, -224, -103, -102, -101, 536, -140, -205, + -238, 55, 77, 122, 90, 90, 90, 13, -208, 221, + -230, -250, -171, 374, -225, -407, -250, 89, 26, 89, + 657, 137, 89, -209, -120, -406, 272, -297, 90, 90, + -110, -113, -11, 88, 151, -250, -186, 63, -140, -205, + -407, 77, 517, 616, -88, -87, -84, 627, 653, -205, + -90, -90, -140, -140, -140, 88, -407, -407, -407, -103, + 88, -100, -99, -289, 77, 122, -262, -289, 89, -407, + -406, -230, 89, -234, -11, 87, -3, 272, -321, -370, + -322, -323, -5, -6, -346, -79, 506, -372, -350, -291, + 90, 96, 89, 506, -407, -407, -86, 145, 625, 595, + -141, -152, -149, 220, -407, 88, -407, 88, -407, 88, + -289, 243, -101, 88, 26, -298, -172, -170, -289, 559, + -390, -389, 502, -400, -396, 119, 143, 101, -398, 597, + 553, 128, 129, -79, -140, 87, -407, -80, 287, 612, + -381, 507, -86, 626, 573, 548, 573, 548, -140, -140, + -140, -99, -406, -407, 88, 23, -313, -60, 570, -387, + -388, 77, -391, 380, 569, 590, 119, 90, 89, -250, + 248, -374, 508, 142, -407, 88, -407, 88, -407, -89, + -170, 566, -326, -154, -388, 77, -387, 77, 14, 13, + -4, 656, 89, 289, -86, -140, -140, -407, -59, 27, + -171, -386, 256, 251, 254, 33, -386, 96, -4, -407, + -407, 570, 250, 32, 119, -154, -174, -173, -173, } var yyDef = [...]int{ - 851, -2, -2, 853, 2, 4, 5, 6, 7, 8, + 845, -2, -2, 847, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 69, 71, - 72, 851, 851, 851, 0, 851, 0, 0, 851, -2, - -2, 851, 1468, 0, 851, 0, 0, -2, 778, 784, - 0, 786, -2, 0, 0, 851, 2017, 2017, 846, 0, - 0, 0, 0, 0, 851, 851, 851, 851, 1325, 49, - 851, 0, 84, 85, 802, 803, 804, 64, 0, 2015, - 852, 1, 3, 70, 74, 0, 0, 0, 57, 1334, - 0, 77, 0, 0, 855, 0, 0, 1451, 851, 851, + 72, 845, 845, 845, 0, 845, 0, 0, 845, -2, + -2, 845, 1462, 0, 845, 0, 0, -2, 772, 778, + 0, 780, -2, 0, 0, 845, 2010, 2010, 840, 0, + 0, 0, 0, 0, 845, 845, 845, 845, 1319, 49, + 845, 0, 84, 85, 796, 797, 798, 64, 0, 2008, + 846, 1, 3, 70, 74, 0, 0, 0, 57, 1328, + 0, 77, 0, 0, 849, 0, 0, 1445, 845, 845, 0, 116, 117, 0, 0, 0, -2, 120, -2, 149, - 150, 151, 0, 156, 591, 511, 563, 509, 548, -2, + 150, 151, 0, 156, 585, 508, 560, 506, 545, -2, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 514, 384, 384, 0, 0, -2, 494, - 494, 494, 1453, 0, 0, 0, 545, 446, 384, 384, + 0, 0, 0, 511, 384, 384, 0, 0, -2, 494, + 494, 494, 1447, 0, 0, 0, 542, 446, 384, 384, 384, 0, 384, 384, 384, 384, 0, 0, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 1352, 155, 1469, 1466, 1467, - 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, - 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, - 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, - 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, - 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, - 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, - 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, - 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, - 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, - 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, - 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, - 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, - 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, - 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, - 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, - 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, - 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, - 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, - 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, - 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, - 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, - 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, - 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, - 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, - 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, - 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, - 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, - 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, - 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, - 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, - 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, - 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 2012, 2013, 2014, 0, 1445, 0, 704, 954, 0, - 767, 767, 0, 767, 767, 767, 767, 0, 0, 0, - 716, 0, 0, 0, 0, 764, 0, 732, 733, 0, - 764, 0, 739, 770, 0, 0, 745, 767, 767, 748, - 2018, 0, 2018, 2018, 1436, 0, 761, 759, 773, 774, - 39, 777, 780, 781, 782, 783, 785, 0, 790, 793, - 1462, 1463, 0, 795, 814, 815, 0, 847, 848, 44, - 1102, 0, 976, 981, 992, 1007, 1008, 1009, 1010, 1011, - 1013, 1014, 1015, 0, 0, 0, 0, 1020, 1021, 0, - 0, 0, 0, 0, 1083, 1029, 0, 0, 0, 0, - 1298, 0, 0, 1259, 1259, 1117, 1259, 1261, 1261, 1669, - 1805, 1813, 1930, 1632, 1637, 1638, 1639, 1923, 1924, 1925, - 1926, 1965, 1966, 1970, 1729, 0, 0, 0, 2014, 1766, - 1774, 1775, 1799, 1896, 1951, 1649, 1794, 1862, 1726, 1748, - 1749, 1878, 1879, 1770, 1771, 1752, 1764, 1767, 1755, 1756, - 1758, 1760, 1765, 1772, 1778, 1757, 1777, 1776, 0, 1753, - 1754, 1759, 1769, 1773, 1761, 1762, 1763, 1768, 1779, 0, - 0, 0, 0, 0, 1198, 1199, 1200, 1201, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 1311, 1312, 42, - 43, 1101, 1423, 1261, 1261, 1261, 1261, 1261, 1043, 1044, - 1045, 1046, 1047, 1071, 1072, 1078, 1079, 1873, 1874, 1875, - 1876, 1710, 1960, 1718, 1719, 1857, 1858, 1731, 1732, 1989, - 1990, -2, -2, -2, 221, 222, 223, 224, 225, 226, - 227, 228, 0, 1673, 1942, 1943, 217, 0, 0, 285, - 286, 282, 283, 284, 1085, 1086, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 2017, 0, - 824, 0, 0, 0, 0, 0, 1334, 0, 1326, 1325, - 62, 0, 851, -2, 0, 0, 0, 0, 46, 0, - 51, 911, 854, 76, 75, 1374, 0, 0, 0, 58, - 1335, 66, 68, 1336, 0, 856, 857, 0, 887, 891, - 0, 0, 0, 1452, 1451, 1451, 101, 0, 0, 1427, - 113, 114, 115, 0, 0, 1433, 1434, 1438, 1439, 0, - 0, 167, 168, 0, 40, 411, 0, 163, 0, 404, - 345, 0, 1352, 0, 0, 0, 0, 0, 851, 0, - 1446, 144, 145, 152, 153, 154, 384, 384, 384, 560, - 0, 0, 155, 155, 518, 519, 520, 0, 0, -2, - 409, 0, 495, 0, 0, 398, 398, 402, 400, 401, - 0, 0, 0, 0, 0, 0, 0, 0, 537, 0, - 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 652, 0, 385, 0, 558, 559, 447, 0, 0, 0, - 0, 0, 0, 0, 0, 1454, 1455, 0, 535, 536, - 0, 0, 0, 384, 384, 0, 0, 0, 0, 384, - 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 1365, 0, 0, 505, 0, -2, 0, 696, 0, 0, - 0, 1447, 1447, 0, 703, 0, 705, 706, 0, 0, - 707, 0, 764, 764, 762, 763, 709, 710, 711, 712, - 767, 0, 0, 393, 394, 395, 764, 767, 0, 767, - 767, 767, 767, 764, 764, 764, 767, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2018, 770, 767, 0, - 740, 0, 741, 742, 743, 746, 747, 749, 2019, 2020, - 1464, 1465, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, - 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, - 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, - 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, - 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, - 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, - 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, - 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, - 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, - 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, - 1620, 2018, 2018, 753, 757, 1437, 779, 791, 794, 809, - 48, 1717, 801, 826, 827, 832, 0, 0, 0, 0, - 838, 839, 840, 0, 0, 843, 844, 845, 0, 0, - 0, 0, 0, 974, 0, 0, 1091, 1092, 1093, 1094, - 1095, 1096, 1097, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 993, 994, 0, 0, 0, 1016, 1017, 1018, 1019, 1022, - 0, 1034, 0, 1036, 1307, -2, 0, 0, 0, 1027, - 1028, 0, 0, 0, 0, 0, 0, 0, 1299, 0, - 0, 1115, 0, 1116, 1118, 1119, 0, 1120, 861, 861, - 861, 861, 861, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 861, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1457, 131, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 871, 0, 0, 871, 871, 0, 0, - 210, 211, 212, 213, 214, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, - 230, 231, 232, 233, 234, 287, 235, 236, 237, 1101, - 0, 0, 0, 45, 816, 817, 0, 937, 1457, 0, - 0, 867, 0, 56, 65, 67, 1334, 60, 1334, 0, - 873, 0, 0, -2, -2, 874, 880, 881, 882, 883, - 884, 53, 2016, 54, 0, 73, 0, 47, 0, 0, - 0, 0, 357, 1377, 0, 0, 1327, 1328, 1331, 0, - 888, 1811, 892, 0, 894, 895, 0, 0, 99, 0, - 953, 0, 0, 0, 0, 1435, 103, 104, 0, 0, - 0, 368, 1440, 1441, 1442, -2, 391, 0, 368, 352, - 295, 296, 297, 345, 299, 345, 345, 345, 345, 357, - 357, 357, 357, 328, 329, 330, 331, 332, 0, 0, - 314, 345, 345, 345, 345, 335, 336, 337, 338, 339, - 340, 341, 342, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 347, 347, 347, 349, 349, 0, 41, 0, - 372, 0, 1331, 0, 0, 1365, 1449, 1459, 0, 0, - 0, 1449, 122, 0, 0, 0, 561, 602, 512, 549, - 562, 0, 515, 516, -2, 0, 0, 494, 0, 496, - 0, 392, 0, -2, 0, 402, 0, 398, 402, 399, - 402, 390, 403, 539, 540, 541, 0, 543, 544, 632, - 923, 0, 0, 0, 0, 0, 638, 639, 640, 0, - 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 550, 551, 552, 553, 554, 555, 556, 557, 0, 0, - 0, 0, 496, 0, 546, 0, 0, 448, 449, 450, - 0, 0, 453, 454, 455, 456, 0, 0, 459, 460, - 461, 940, 941, 462, 463, 488, 489, 490, 464, 465, - 466, 467, 468, 469, 470, 482, 483, 484, 485, 486, - 487, 471, 472, 473, 474, 475, 476, 479, 0, 137, - 1356, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 588, 589, 590, 0, 0, 0, 0, 0, - 1447, 0, 0, 0, 0, 870, 955, 1470, 1471, 768, - 769, 0, 396, 397, 767, 767, 713, 754, 0, 767, - 717, 755, 718, 720, 719, 721, 734, 735, 767, 724, - 765, 766, 725, 726, 727, 728, 729, 730, 731, 750, - 736, 737, 738, 771, 0, 775, 776, 751, 752, 0, - 792, 812, 810, 811, 813, 805, 806, 807, 808, 0, - 0, 0, 829, 95, 834, 835, 836, 837, 849, 842, - 1103, 971, 972, 973, 0, 975, 978, 0, 1087, 1089, - 980, 982, 1098, 1099, 1100, 0, 0, 0, 0, 0, - 986, 990, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1012, 1275, 1276, 1277, 1031, 288, - 289, 0, 1032, 0, 0, 0, 0, 0, 0, 0, - 1102, 1033, 0, 885, 0, 0, 1305, 1302, 0, 0, - 0, 1260, 1262, 0, 0, 0, 0, 862, 863, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1238, 1239, 1240, + 384, 384, 384, 384, 384, 1346, 155, 1463, 1460, 1461, + 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, + 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, + 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, + 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, + 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, + 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, + 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, + 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, + 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, + 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, + 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, + 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, + 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, + 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, + 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, + 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, + 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, + 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, + 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, + 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, + 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, + 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, + 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, + 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, + 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, + 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, + 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, + 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, + 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, + 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, + 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, + 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, + 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007, 0, 1439, 0, 698, 948, 0, 761, + 761, 0, 761, 761, 761, 761, 0, 0, 0, 710, + 0, 0, 0, 0, 758, 0, 726, 727, 0, 758, + 0, 733, 764, 0, 0, 739, 761, 761, 742, 2011, + 0, 2011, 2011, 1430, 0, 755, 753, 767, 768, 39, + 771, 774, 775, 776, 777, 779, 0, 784, 787, 1456, + 1457, 0, 789, 808, 809, 0, 841, 842, 44, 1096, + 0, 970, 975, 986, 1001, 1002, 1003, 1004, 1005, 1007, + 1008, 1009, 0, 0, 0, 0, 1014, 1015, 0, 0, + 0, 0, 0, 1077, 1023, 0, 0, 0, 0, 1292, + 0, 0, 1253, 1253, 1111, 1253, 1255, 1255, 1663, 1799, + 1807, 1924, 1626, 1631, 1632, 1633, 1917, 1918, 1919, 1920, + 1958, 1959, 1963, 1723, 0, 0, 0, 2007, 1760, 1768, + 1769, 1793, 1890, 1944, 1643, 1788, 1856, 1720, 1742, 1743, + 1872, 1873, 1764, 1765, 1746, 1758, 1761, 1749, 1750, 1752, + 1754, 1759, 1766, 1772, 1751, 1771, 1770, 0, 1747, 1748, + 1753, 1763, 1767, 1755, 1756, 1757, 1762, 1773, 0, 0, + 0, 0, 0, 1192, 1193, 1194, 1195, 0, 0, 0, + 0, 0, 0, 0, 280, 281, 1305, 1306, 42, 43, + 1095, 1417, 1255, 1255, 1255, 1255, 1255, 1037, 1038, 1039, + 1040, 1041, 1065, 1066, 1072, 1073, 1867, 1868, 1869, 1870, + 1704, 1953, 1712, 1713, 1851, 1852, 1725, 1726, 1982, 1983, + -2, -2, -2, 221, 222, 223, 224, 225, 226, 227, + 228, 0, 1667, 1935, 1936, 217, 0, 0, 285, 286, + 282, 283, 284, 1079, 1080, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 2010, 0, 818, + 0, 0, 0, 0, 0, 1328, 0, 1320, 1319, 62, + 0, 845, -2, 0, 0, 0, 0, 46, 0, 51, + 905, 848, 76, 75, 1368, 0, 0, 0, 58, 1329, + 66, 68, 1330, 0, 850, 851, 0, 881, 885, 0, + 0, 0, 1446, 1445, 1445, 101, 0, 0, 1421, 113, + 114, 115, 0, 0, 1427, 1428, 1432, 1433, 0, 0, + 167, 168, 0, 40, 411, 0, 163, 0, 404, 345, + 0, 1346, 0, 0, 0, 0, 0, 845, 0, 1440, + 144, 145, 152, 153, 154, 384, 384, 384, 557, 0, + 0, 155, 155, 515, 516, 517, 0, 0, -2, 409, + 0, 495, 0, 0, 398, 398, 402, 400, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 534, 0, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, + 0, 385, 0, 555, 556, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 1448, 1449, 0, 532, 533, 0, + 0, 0, 384, 384, 0, 0, 0, 0, 384, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 1359, + 0, 0, 0, -2, 0, 690, 0, 0, 0, 1441, + 1441, 0, 697, 0, 699, 700, 0, 0, 701, 0, + 758, 758, 756, 757, 703, 704, 705, 706, 761, 0, + 0, 393, 394, 395, 758, 761, 0, 761, 761, 761, + 761, 758, 758, 758, 761, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2011, 764, 761, 0, 734, 0, + 735, 736, 737, 740, 741, 743, 2012, 2013, 1458, 1459, + 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, + 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, + 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, + 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, + 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, + 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, + 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, + 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, + 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, + 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, + 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, + 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, + 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, + 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, + 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 2011, + 2011, 747, 751, 1431, 773, 785, 788, 803, 48, 1711, + 795, 820, 821, 826, 0, 0, 0, 0, 832, 833, + 834, 0, 0, 837, 838, 839, 0, 0, 0, 0, + 0, 968, 0, 0, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 987, 988, + 0, 0, 0, 1010, 1011, 1012, 1013, 1016, 0, 1028, + 0, 1030, 1301, -2, 0, 0, 0, 1021, 1022, 0, + 0, 0, 0, 0, 0, 0, 1293, 0, 0, 1109, + 0, 1110, 1112, 1113, 0, 1114, 855, 855, 855, 855, + 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 855, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1451, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 865, 0, 0, 865, 865, 0, 0, 210, 211, + 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 287, 235, 236, 237, 1095, 0, 0, + 0, 45, 810, 811, 0, 931, 1451, 0, 0, 861, + 0, 56, 65, 67, 1328, 60, 1328, 0, 867, 0, + 0, -2, -2, 868, 874, 875, 876, 877, 878, 53, + 2009, 54, 0, 73, 0, 47, 0, 0, 0, 0, + 357, 1371, 0, 0, 1321, 1322, 1325, 0, 882, 1805, + 886, 0, 888, 889, 0, 0, 99, 0, 947, 0, + 0, 0, 0, 1429, 103, 104, 0, 0, 0, 368, + 1434, 1435, 1436, -2, 391, 0, 368, 352, 295, 296, + 297, 345, 299, 345, 345, 345, 345, 357, 357, 357, + 357, 328, 329, 330, 331, 332, 0, 0, 314, 345, + 345, 345, 345, 335, 336, 337, 338, 339, 340, 341, + 342, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 347, 347, 347, 349, 349, 0, 41, 0, 372, 0, + 1325, 0, 0, 1359, 1443, 1453, 0, 0, 0, 1443, + 122, 0, 0, 0, 558, 596, 509, 546, 559, 0, + 512, 513, -2, 0, 0, 494, 0, 496, 0, 392, + 0, -2, 0, 402, 0, 398, 402, 399, 402, 390, + 403, 536, 537, 538, 0, 540, 541, 626, 917, 0, + 0, 0, 0, 0, 632, 633, 634, 0, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 645, 547, 548, + 549, 550, 551, 552, 553, 554, 0, 0, 0, 0, + 496, 0, 543, 0, 0, 448, 449, 450, 0, 0, + 453, 454, 455, 456, 0, 0, 459, 460, 461, 934, + 935, 462, 463, 488, 489, 490, 464, 465, 466, 467, + 468, 469, 470, 482, 483, 484, 485, 486, 487, 471, + 472, 473, 474, 475, 476, 479, 0, 137, 1350, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1441, 0, 0, 0, 0, 864, + 949, 1464, 1465, 762, 763, 0, 396, 397, 761, 761, + 707, 748, 0, 761, 711, 749, 712, 714, 713, 715, + 728, 729, 761, 718, 759, 760, 719, 720, 721, 722, + 723, 724, 725, 744, 730, 731, 732, 765, 0, 769, + 770, 745, 746, 0, 786, 806, 804, 805, 807, 799, + 800, 801, 802, 0, 0, 0, 823, 95, 828, 829, + 830, 831, 843, 836, 1097, 965, 966, 967, 0, 969, + 972, 0, 1081, 1083, 974, 976, 1092, 1093, 1094, 0, + 0, 0, 0, 0, 980, 984, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1006, 1269, + 1270, 1271, 1025, 288, 289, 0, 1026, 0, 0, 0, + 0, 0, 0, 0, 1096, 1027, 0, 879, 0, 0, + 1299, 1296, 0, 0, 0, 1254, 1256, 0, 0, 0, + 0, 856, 857, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, - 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1278, 0, - 0, 0, 0, 0, 1298, 0, 1038, 1039, 1040, 0, - 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0, - 1458, 0, 132, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1202, 1203, 1204, 1205, 38, 0, 0, 0, 872, 1309, - 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, - 0, 0, 0, 1421, 0, 0, 819, 820, 822, 0, - 957, 0, 938, 0, 0, 825, 0, 866, 0, 869, - 59, 61, 878, 879, 0, 896, 875, 55, 50, 0, - 0, 915, 1375, 357, 1397, 0, 366, 366, 363, 1337, - 1338, 0, 1330, 1332, 1333, 78, 893, 889, 0, 969, - 0, 0, 952, 0, 899, 901, 902, 903, 935, 0, - 906, 907, 0, 0, 0, 0, 0, 97, 954, 1428, - 0, 102, 0, 0, 107, 108, 1429, 1430, 1431, 1432, - 0, 591, -2, 443, 169, 171, 172, 173, 164, -2, - 355, 353, 354, 298, 357, 357, 322, 323, 324, 325, - 326, 327, 0, 0, 315, 316, 317, 318, 309, 0, - 310, 311, 312, 0, 313, 410, 0, 1339, 373, 374, - 376, 384, 0, 379, 380, 0, 384, 384, 0, 405, - 406, 0, 1331, 1356, 0, 0, 0, 1460, 1459, 1459, - 1459, 0, 157, 158, 159, 160, 161, 162, 627, 0, - 0, 603, 625, 626, 155, 0, 0, 165, 498, 497, - 0, 659, 0, 408, 0, 0, 402, 402, 387, 388, - 542, 0, 0, 634, 635, 636, 637, 0, 0, 0, - 528, 437, 0, 529, 530, 496, 498, 0, 0, 368, - 451, 452, 457, 458, 477, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 575, 576, 577, 580, - 582, 500, 586, 579, 581, 583, 500, 587, 506, 507, - 1353, 1354, 1355, 0, 0, 697, 0, 0, 434, 93, - 1448, 702, 764, 723, 756, 764, 715, 722, 744, 788, - 796, 797, 798, 799, 800, 833, 0, 0, 0, 0, - 841, 0, 0, 979, 1088, 1090, 983, 0, 987, 991, - 0, 0, 0, 1037, 1035, 1309, 0, 0, 0, 1084, - 0, 0, 1106, 1107, 0, 0, 0, 1303, 0, 0, - 1113, 0, 1263, 1264, 1121, 0, 0, 0, 0, 0, - 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1325, 0, 0, 0, 0, 0, 1142, 1143, 1144, 1145, - 1146, 0, 1148, 0, 1149, 0, 0, 0, 0, 1156, - 1157, 1159, 0, 0, 1162, 1163, 0, 0, 1164, 0, - 0, 0, 1168, 0, 0, 0, 0, 1177, 1178, 1179, - 1180, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1191, 1192, 0, 1066, 0, 0, 1066, 0, 1104, - 871, 0, 1265, 1266, 1267, 1268, 1269, 0, 0, 0, - 0, 0, 0, 1225, 1226, 1228, 0, 0, 1231, 0, - 1233, 0, 1422, 818, 821, 823, 909, 958, 959, 0, - 0, 0, 0, 939, 1456, 864, 865, 868, 917, 0, - 1313, 0, 0, 896, 969, 897, 0, 876, 52, 912, - 0, 1379, 1378, 1391, 1404, 366, 366, 360, 361, 367, - 362, 364, 365, 1329, 0, 1334, 0, 1415, 0, 0, - 1407, 0, 0, 0, 0, 0, 0, 0, 0, 942, - 0, 0, 945, 0, 0, 0, 0, 936, 907, 0, - 908, 0, -2, 0, 0, 91, 92, 0, 0, 0, - 105, 106, 0, 0, 112, 369, 370, 146, 155, 445, - 170, 418, 0, 0, 294, 356, 319, 320, 321, 0, - 343, 0, 0, 0, 439, 118, 1343, 1342, 384, 384, - 375, 0, 378, 0, 0, 0, 1461, 346, 407, 0, - 136, 0, 0, 0, 0, 0, 142, 597, 0, 0, - 604, 0, 0, 0, 510, 0, 521, 522, 0, 631, - -2, 693, 372, 0, 386, 389, 924, 0, 0, 523, - 0, 526, 527, 438, 498, 532, 533, 547, 534, 480, - 481, 478, 0, 0, 1366, 1367, 1372, 1370, 1371, 123, - 568, 570, 569, 573, 0, 0, 0, 502, 0, 502, - 566, 0, 434, 1339, 0, 701, 435, 436, 767, 767, - 828, 96, 0, 831, 0, 0, 0, 0, 984, 988, - 1270, 1296, 345, 345, 1283, 345, 349, 1286, 345, 1288, - 345, 1291, 345, 1294, 1295, 0, 0, 0, 886, 0, - 0, 1112, 1306, 0, 0, 1122, 1123, 1124, 1125, 1126, - 1300, 0, 0, 0, 1141, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, - 0, 0, 0, 1236, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 1065, 0, 1067, 1068, 0, - 0, 1194, 0, 0, 1206, 0, 1310, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 960, 965, 965, - 965, 0, 0, 0, 1443, 1444, 1314, 1315, 969, 1316, - 898, 877, 916, 1397, 0, 1390, 0, -2, 1399, 0, - 0, 0, 1405, 358, 359, 890, 79, 970, 82, 0, - 1415, 1424, 0, 1406, 1417, 1419, 0, 0, 0, 1411, - 0, 969, 900, 931, 933, 0, 928, 943, 944, 946, - 0, 948, 0, 950, 951, 911, 905, 0, 99, 0, - 969, 969, 98, 0, 956, 109, 110, 111, 444, 174, - 179, 0, 0, 0, 184, 0, 186, 0, 0, 0, - 191, 192, 384, 384, 419, 0, 291, 293, 0, 0, - 177, 357, 0, 357, 0, 350, 0, 420, 440, 1340, - 1341, 0, 0, 377, 381, 382, 383, 0, 1450, 138, - 0, 0, 0, 600, 0, 628, 0, 0, 0, 0, - 0, 0, 166, 499, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 0, 384, 0, 0, 0, 384, 384, - 384, 0, 685, 371, 0, 0, 656, 653, 524, 0, - 215, 216, 218, 0, 0, 0, 0, 0, 531, 911, - 1357, 1358, 1359, 0, 1369, 1373, 126, 0, 0, 0, - 0, 578, 584, 0, 501, 585, 698, 699, 700, 94, - 708, 714, 830, 850, 977, 985, 989, 0, 0, 0, - 0, 1297, 1281, 357, 1284, 1285, 1287, 1289, 1290, 1292, - 1293, 1025, 1026, 1030, 0, 1109, 0, 1111, 1304, 0, - 1334, 0, 0, 0, 1140, 0, 0, 0, 1151, 1150, - 1152, 0, 1154, 1155, 1160, 1161, 1165, 0, 1167, 1169, - 1170, 0, 0, 0, 1181, 1182, 1183, 1184, 1185, 1186, - 1187, 1188, 1189, 1190, 0, 1059, 1062, 1193, 1069, 1070, - 1075, 1196, 0, 0, 1105, 1208, 0, 1213, 0, 0, - 1219, 0, 1223, 0, 1229, 1230, 1232, 1234, 0, 0, - 0, 0, 0, 937, 918, 63, 1316, 1318, 0, 1384, - 1382, 1382, 1392, 1393, 0, 0, 1400, 0, 0, 0, - 0, 83, 0, 0, 0, 1420, 0, 0, 0, 0, - 100, 1325, 925, 932, 0, 0, 926, 0, 927, 947, - 949, 904, 0, 969, 969, 89, 90, 0, 180, 0, - 182, 208, 209, 0, 185, 187, 188, 189, 195, 196, - 197, 190, 0, 0, 290, 292, 0, 0, 333, 344, - 334, 0, 0, 1344, 1345, 1346, 1347, 1348, 1349, 1350, - 1351, 911, 139, 140, 141, 592, 0, 602, 0, 913, - 0, 595, 0, 513, 0, 0, 0, 384, 384, 384, - 0, 0, 0, 0, 670, 0, 0, 633, 0, 641, - 0, 0, 0, 219, 220, 0, 1368, 567, 0, 124, - 125, 0, 0, 572, 503, 504, 1023, 0, 0, 0, - 1024, 1282, 0, 0, 0, 0, 1301, 0, 0, 0, - 0, 1147, 0, 0, 0, 1173, 0, 0, 0, 622, - 623, 0, 1237, 1064, 1325, 0, 1066, 1076, 1077, 0, - 1066, 1207, 0, 0, 0, 0, 0, 0, 0, 966, - 0, 0, 0, 0, 957, 1318, 1323, 0, 0, 1387, - 0, 1380, 1383, 1381, 1394, 0, 0, 1401, 0, 1403, - 0, 1425, 1426, 1418, 0, 1410, 1413, 1409, 1412, 1334, - 929, 0, 934, 0, 1325, 88, 0, 183, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, - 0, 0, 348, 351, 0, 0, 0, 593, 0, 914, - 605, 596, 0, 683, 0, 687, 0, 0, 0, 690, - 691, 692, 669, 0, 673, 412, 657, 654, 655, 525, - 0, 127, 128, 0, 0, 0, 1271, 0, 1274, 1108, - 1110, 0, 1137, 1138, 1139, 1279, 1280, 1153, 1166, 1171, - 0, 1174, 0, 0, 1175, 0, 624, 1055, 0, 0, - 1073, 1074, 0, 1209, 0, 1214, 1215, 0, 1220, 0, - 1224, 1235, 0, 962, 919, 920, 967, 968, 0, 0, - 910, 1323, 81, 1324, 1321, 0, 1319, 1317, 1376, 0, - 1385, 1386, 1395, 1396, 1402, 0, 1408, 0, 86, 0, - 0, 0, 1334, 181, 0, 200, 0, 601, 0, 604, - 594, 681, 682, 0, 694, 686, 688, 689, 671, -2, - 1360, 0, 0, 0, 574, 1272, 0, 0, 1176, 0, - 620, 621, 1063, 1056, 0, 1041, 1042, 1060, 1195, 1197, - 0, 0, 0, 0, 961, 963, 964, 80, 0, 1320, - 1081, 0, 1388, 1389, 1416, 1414, 930, 937, 0, 87, - 425, 418, 1360, 0, 0, 0, 674, 675, 676, 677, - 678, 679, 680, 564, 1362, 129, 130, 491, 492, 493, - 123, 0, 1114, 1172, 1057, 0, 0, 0, 0, 1053, - 1054, 0, 1210, 0, 1216, 0, 1221, 0, 921, 922, - 1322, 0, 0, 606, 0, 608, 0, -2, 413, 426, - 0, 175, 201, 202, 0, 0, 205, 206, 207, 198, - 199, 119, 0, 0, 695, 0, 1363, 1364, 126, 0, - 0, 1048, 1049, 1050, 1051, 1052, 0, 0, 0, 1082, - 1061, 607, 0, 0, 368, 0, 617, 414, 415, 0, - 421, 422, 423, 424, 203, 204, 629, 0, 0, 571, - 1273, 0, 1211, 0, 1217, 0, 1222, 0, 609, 610, - 618, 0, 416, 0, 417, 0, 0, 0, 598, 0, - 629, 1361, 1058, 0, 0, 1080, 0, 619, 615, 427, - 429, 430, 0, 0, 428, 630, 599, 1212, 1218, 0, - 431, 432, 433, 611, 612, 613, 614, + 1251, 1252, 1272, 0, 0, 0, 0, 0, 1292, 0, + 1032, 1033, 1034, 0, 0, 0, 0, 0, 0, 1152, + 0, 0, 0, 0, 1452, 0, 132, 133, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1196, 1197, 1198, 1199, 38, 0, + 0, 0, 866, 1303, 0, -2, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1221, 0, 0, 0, 0, 0, 0, 1415, 0, 0, + 813, 814, 816, 0, 951, 0, 932, 0, 0, 819, + 0, 860, 0, 863, 59, 61, 872, 873, 0, 890, + 869, 55, 50, 0, 0, 909, 1369, 357, 1391, 0, + 366, 366, 363, 1331, 1332, 0, 1324, 1326, 1327, 78, + 887, 883, 0, 963, 0, 0, 946, 0, 893, 895, + 896, 897, 929, 0, 900, 901, 0, 0, 0, 0, + 0, 97, 948, 1422, 0, 102, 0, 0, 107, 108, + 1423, 1424, 1425, 1426, 0, 585, -2, 443, 169, 171, + 172, 173, 164, -2, 355, 353, 354, 298, 357, 357, + 322, 323, 324, 325, 326, 327, 0, 0, 315, 316, + 317, 318, 309, 0, 310, 311, 312, 0, 313, 410, + 0, 1333, 373, 374, 376, 384, 0, 379, 380, 0, + 384, 384, 0, 405, 406, 0, 1325, 1350, 0, 0, + 0, 1454, 1453, 1453, 1453, 0, 157, 158, 159, 160, + 161, 162, 621, 0, 0, 597, 619, 620, 155, 0, + 0, 165, 498, 497, 0, 653, 0, 408, 0, 0, + 402, 402, 387, 388, 539, 0, 0, 628, 629, 630, + 631, 0, 0, 0, 525, 437, 0, 526, 527, 496, + 498, 0, 0, 368, 451, 452, 457, 458, 477, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 572, 573, 574, 577, 579, 500, 583, 576, 578, 580, + 500, 584, 1347, 1348, 1349, 0, 0, 691, 0, 0, + 434, 93, 1442, 696, 758, 717, 750, 758, 709, 716, + 738, 782, 790, 791, 792, 793, 794, 827, 0, 0, + 0, 0, 835, 0, 0, 973, 1082, 1084, 977, 0, + 981, 985, 0, 0, 0, 1031, 1029, 1303, 0, 0, + 0, 1078, 0, 0, 1100, 1101, 0, 0, 0, 1297, + 0, 0, 1107, 0, 1257, 1258, 1115, 0, 0, 0, + 0, 0, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, + 1129, 1130, 1319, 0, 0, 0, 0, 0, 1136, 1137, + 1138, 1139, 1140, 0, 1142, 0, 1143, 0, 0, 0, + 0, 1150, 1151, 1153, 0, 0, 1156, 1157, 0, 0, + 1158, 0, 0, 0, 1162, 0, 0, 0, 0, 1171, + 1172, 1173, 1174, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1185, 1186, 0, 1060, 0, 0, 1060, + 0, 1098, 865, 0, 1259, 1260, 1261, 1262, 1263, 0, + 0, 0, 0, 0, 0, 1219, 1220, 1222, 0, 0, + 1225, 0, 1227, 0, 1416, 812, 815, 817, 903, 952, + 953, 0, 0, 0, 0, 933, 1450, 858, 859, 862, + 911, 0, 1307, 0, 0, 890, 963, 891, 0, 870, + 52, 906, 0, 1373, 1372, 1385, 1398, 366, 366, 360, + 361, 367, 362, 364, 365, 1323, 0, 1328, 0, 1409, + 0, 0, 1401, 0, 0, 0, 0, 0, 0, 0, + 0, 936, 0, 0, 939, 0, 0, 0, 0, 930, + 901, 0, 902, 0, -2, 0, 0, 91, 92, 0, + 0, 0, 105, 106, 0, 0, 112, 369, 370, 146, + 155, 445, 170, 418, 0, 0, 294, 356, 319, 320, + 321, 0, 343, 0, 0, 0, 439, 118, 1337, 1336, + 384, 384, 375, 0, 378, 0, 0, 0, 1455, 346, + 407, 0, 136, 0, 0, 0, 0, 0, 142, 591, + 0, 0, 598, 0, 0, 0, 507, 0, 518, 519, + 0, 625, -2, 687, 372, 0, 386, 389, 918, 0, + 0, 520, 0, 523, 524, 438, 498, 529, 530, 544, + 531, 480, 481, 478, 0, 0, 1360, 1361, 1366, 1364, + 1365, 123, 565, 567, 566, 570, 0, 0, 0, 502, + 0, 502, 563, 0, 434, 1333, 0, 695, 435, 436, + 761, 761, 822, 96, 0, 825, 0, 0, 0, 0, + 978, 982, 1264, 1290, 345, 345, 1277, 345, 349, 1280, + 345, 1282, 345, 1285, 345, 1288, 1289, 0, 0, 0, + 880, 0, 0, 1106, 1300, 0, 0, 1116, 1117, 1118, + 1119, 1120, 1294, 0, 0, 0, 1135, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, + 0, 0, 0, 0, 0, 1230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1055, 1059, 0, 1061, + 1062, 0, 0, 1188, 0, 0, 1200, 0, 1304, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 954, + 959, 959, 959, 0, 0, 0, 1437, 1438, 1308, 1309, + 963, 1310, 892, 871, 910, 1391, 0, 1384, 0, -2, + 1393, 0, 0, 0, 1399, 358, 359, 884, 79, 964, + 82, 0, 1409, 1418, 0, 1400, 1411, 1413, 0, 0, + 0, 1405, 0, 963, 894, 925, 927, 0, 922, 937, + 938, 940, 0, 942, 0, 944, 945, 905, 899, 0, + 99, 0, 963, 963, 98, 0, 950, 109, 110, 111, + 444, 174, 179, 0, 0, 0, 184, 0, 186, 0, + 0, 0, 191, 192, 384, 384, 419, 0, 291, 293, + 0, 0, 177, 357, 0, 357, 0, 350, 0, 420, + 440, 1334, 1335, 0, 0, 377, 381, 382, 383, 0, + 1444, 138, 0, 0, 0, 594, 0, 622, 0, 0, + 0, 0, 0, 0, 166, 499, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 0, 384, 0, 0, 0, + 384, 384, 384, 0, 679, 371, 0, 0, 650, 647, + 521, 0, 215, 216, 218, 0, 0, 0, 0, 0, + 528, 905, 1351, 1352, 1353, 0, 1363, 1367, 126, 0, + 0, 0, 0, 575, 581, 0, 501, 582, 692, 693, + 694, 94, 702, 708, 824, 844, 971, 979, 983, 0, + 0, 0, 0, 1291, 1275, 357, 1278, 1279, 1281, 1283, + 1284, 1286, 1287, 1019, 1020, 1024, 0, 1103, 0, 1105, + 1298, 0, 1328, 0, 0, 0, 1134, 0, 0, 0, + 1145, 1144, 1146, 0, 1148, 1149, 1154, 1155, 1159, 0, + 1161, 1163, 1164, 0, 0, 0, 1175, 1176, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1184, 0, 1053, 1056, 1187, + 1063, 1064, 1069, 1190, 0, 0, 1099, 1202, 0, 1207, + 0, 0, 1213, 0, 1217, 0, 1223, 1224, 1226, 1228, + 0, 0, 0, 0, 0, 931, 912, 63, 1310, 1312, + 0, 1378, 1376, 1376, 1386, 1387, 0, 0, 1394, 0, + 0, 0, 0, 83, 0, 0, 0, 1414, 0, 0, + 0, 0, 100, 1319, 919, 926, 0, 0, 920, 0, + 921, 941, 943, 898, 0, 963, 963, 89, 90, 0, + 180, 0, 182, 208, 209, 0, 185, 187, 188, 189, + 195, 196, 197, 190, 0, 0, 290, 292, 0, 0, + 333, 344, 334, 0, 0, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1345, 905, 139, 140, 141, 586, 0, 596, + 0, 907, 0, 589, 0, 510, 0, 0, 0, 384, + 384, 384, 0, 0, 0, 0, 664, 0, 0, 627, + 0, 635, 0, 0, 0, 219, 220, 0, 1362, 564, + 0, 124, 125, 0, 0, 569, 503, 504, 1017, 0, + 0, 0, 1018, 1276, 0, 0, 0, 0, 1295, 0, + 0, 0, 0, 1141, 0, 0, 0, 1167, 0, 0, + 0, 616, 617, 0, 1231, 1058, 1319, 0, 1060, 1070, + 1071, 0, 1060, 1201, 0, 0, 0, 0, 0, 0, + 0, 960, 0, 0, 0, 0, 951, 1312, 1317, 0, + 0, 1381, 0, 1374, 1377, 1375, 1388, 0, 0, 1395, + 0, 1397, 0, 1419, 1420, 1412, 0, 1404, 1407, 1403, + 1406, 1328, 923, 0, 928, 0, 1319, 88, 0, 183, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 194, 0, 0, 348, 351, 0, 0, 0, 587, + 0, 908, 599, 590, 0, 677, 0, 681, 0, 0, + 0, 684, 685, 686, 663, 0, 667, 412, 651, 648, + 649, 522, 0, 127, 128, 0, 0, 0, 1265, 0, + 1268, 1102, 1104, 0, 1131, 1132, 1133, 1273, 1274, 1147, + 1160, 1165, 0, 1168, 0, 0, 1169, 0, 618, 1049, + 0, 0, 1067, 1068, 0, 1203, 0, 1208, 1209, 0, + 1214, 0, 1218, 1229, 0, 956, 913, 914, 961, 962, + 0, 0, 904, 1317, 81, 1318, 1315, 0, 1313, 1311, + 1370, 0, 1379, 1380, 1389, 1390, 1396, 0, 1402, 0, + 86, 0, 0, 0, 1328, 181, 0, 200, 0, 595, + 0, 598, 588, 675, 676, 0, 688, 680, 682, 683, + 665, -2, 1354, 0, 0, 0, 571, 1266, 0, 0, + 1170, 0, 614, 615, 1057, 1050, 0, 1035, 1036, 1054, + 1189, 1191, 0, 0, 0, 0, 955, 957, 958, 80, + 0, 1314, 1075, 0, 1382, 1383, 1410, 1408, 924, 931, + 0, 87, 425, 418, 1354, 0, 0, 0, 668, 669, + 670, 671, 672, 673, 674, 561, 1356, 129, 130, 491, + 492, 493, 123, 0, 1108, 1166, 1051, 0, 0, 0, + 0, 1047, 1048, 0, 1204, 0, 1210, 0, 1215, 0, + 915, 916, 1316, 0, 0, 600, 0, 602, 0, -2, + 413, 426, 0, 175, 201, 202, 0, 0, 205, 206, + 207, 198, 199, 119, 0, 0, 689, 0, 1357, 1358, + 126, 0, 0, 1042, 1043, 1044, 1045, 1046, 0, 0, + 0, 1076, 1055, 601, 0, 0, 368, 0, 611, 414, + 415, 0, 421, 422, 423, 424, 203, 204, 623, 0, + 0, 568, 1267, 0, 1205, 0, 1211, 0, 1216, 0, + 603, 604, 612, 0, 416, 0, 417, 0, 0, 0, + 592, 0, 623, 1355, 1052, 0, 0, 1074, 0, 613, + 609, 427, 429, 430, 0, 0, 428, 624, 593, 1206, + 1212, 0, 431, 432, 433, 605, 606, 607, 608, } var yyTok1 = [...]int{ @@ -8471,7 +8514,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 144, 3, 3, 3, 171, 163, 3, 87, 89, 168, 166, 88, 167, 221, 169, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 659, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 658, 152, 151, 153, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -8587,7 +8630,7 @@ var yyTok3 = [...]int{ 57965, 640, 57966, 641, 57967, 642, 57968, 643, 57969, 644, 57970, 645, 57971, 646, 57972, 647, 57973, 648, 57974, 649, 57975, 650, 57976, 651, 57977, 652, 57978, 653, 57979, 654, - 57980, 655, 57981, 656, 57982, 657, 57983, 658, 0, + 57980, 655, 57981, 656, 57982, 657, 0, } var yyErrorMessages = [...]struct { @@ -8937,7 +8980,7 @@ yydefault: case 1: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:601 +//line sql.y:600 { stmt := yyDollar[2].statementUnion() // If the statement is empty and we have comments @@ -8951,58 +8994,58 @@ yydefault: } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:614 +//line sql.y:613 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:615 +//line sql.y:614 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:619 +//line sql.y:618 { yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL case 37: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:655 +//line sql.y:654 { setParseTree(yylex, nil) } case 38: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:661 +//line sql.y:660 { yyLOCAL = NewVariableExpression(yyDollar[1].str, SingleAt) } yyVAL.union = yyLOCAL case 39: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:667 +//line sql.y:666 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } case 40: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:672 +//line sql.y:671 { yyVAL.identifierCI = NewIdentifierCI("") } case 41: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:676 +//line sql.y:675 { yyVAL.identifierCI = yyDollar[1].identifierCI } case 42: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:682 +//line sql.y:681 { yyLOCAL = NewVariableExpression(string(yyDollar[1].str), SingleAt) } @@ -9010,7 +9053,7 @@ yydefault: case 43: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:686 +//line sql.y:685 { yyLOCAL = NewVariableExpression(string(yyDollar[1].str), DoubleAt) } @@ -9018,7 +9061,7 @@ yydefault: case 44: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:692 +//line sql.y:691 { yyLOCAL = &OtherAdmin{} } @@ -9026,7 +9069,7 @@ yydefault: case 45: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:698 +//line sql.y:697 { yyLOCAL = &Load{} } @@ -9034,7 +9077,7 @@ yydefault: case 46: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *With -//line sql.y:704 +//line sql.y:703 { yyLOCAL = &With{ctes: yyDollar[2].ctesUnion(), Recursive: false} } @@ -9042,7 +9085,7 @@ yydefault: case 47: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *With -//line sql.y:708 +//line sql.y:707 { yyLOCAL = &With{ctes: yyDollar[3].ctesUnion(), Recursive: true} } @@ -9050,7 +9093,7 @@ yydefault: case 48: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *With -//line sql.y:713 +//line sql.y:712 { yyLOCAL = nil } @@ -9058,14 +9101,14 @@ yydefault: case 49: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *With -//line sql.y:717 +//line sql.y:716 { yyLOCAL = yyDollar[1].withUnion() } yyVAL.union = yyLOCAL case 50: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:723 +//line sql.y:722 { yySLICE := (*[]*CommonTableExpr)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].cteUnion()) @@ -9073,7 +9116,7 @@ yydefault: case 51: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*CommonTableExpr -//line sql.y:727 +//line sql.y:726 { yyLOCAL = []*CommonTableExpr{yyDollar[1].cteUnion()} } @@ -9081,7 +9124,7 @@ yydefault: case 52: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *CommonTableExpr -//line sql.y:733 +//line sql.y:732 { yyLOCAL = &CommonTableExpr{ID: yyDollar[1].identifierCS, Columns: yyDollar[2].columnsUnion(), Subquery: yyDollar[4].subqueryUnion()} } @@ -9089,7 +9132,7 @@ yydefault: case 53: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:739 +//line sql.y:738 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9097,7 +9140,7 @@ yydefault: case 54: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:743 +//line sql.y:742 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9105,7 +9148,7 @@ yydefault: case 55: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:747 +//line sql.y:746 { setLockInSelect(yyDollar[2].selStmtUnion(), yyDollar[3].lockUnion()) yyLOCAL = yyDollar[2].selStmtUnion() @@ -9114,7 +9157,7 @@ yydefault: case 56: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:770 +//line sql.y:769 { yyDollar[1].selStmtUnion().SetOrderBy(yyDollar[2].orderByUnion()) yyDollar[1].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9124,7 +9167,7 @@ yydefault: case 57: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:776 +//line sql.y:775 { yyDollar[1].selStmtUnion().SetLimit(yyDollar[2].limitUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9133,7 +9176,7 @@ yydefault: case 58: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:781 +//line sql.y:780 { yyDollar[1].selStmtUnion().SetOrderBy(yyDollar[2].orderByUnion()) yyDollar[1].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9143,7 +9186,7 @@ yydefault: case 59: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:787 +//line sql.y:786 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetOrderBy(yyDollar[3].orderByUnion()) @@ -9154,7 +9197,7 @@ yydefault: case 60: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:794 +//line sql.y:793 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetLimit(yyDollar[3].limitUnion()) @@ -9164,7 +9207,7 @@ yydefault: case 61: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:800 +//line sql.y:799 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) yyDollar[2].selStmtUnion().SetOrderBy(yyDollar[3].orderByUnion()) @@ -9174,14 +9217,14 @@ yydefault: yyVAL.union = yyLOCAL case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:807 +//line sql.y:806 { yyDollar[2].selStmtUnion().SetWith(yyDollar[1].withUnion()) } case 63: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:811 +//line sql.y:810 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), SelectExprs{&Nextval{Expr: yyDollar[5].exprUnion()}}, []string{yyDollar[3].str} /*options*/, nil, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/, nil) } @@ -9189,7 +9232,7 @@ yydefault: case 64: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:817 +//line sql.y:816 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9197,7 +9240,7 @@ yydefault: case 65: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:821 +//line sql.y:820 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9205,7 +9248,7 @@ yydefault: case 66: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:825 +//line sql.y:824 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9213,7 +9256,7 @@ yydefault: case 67: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:829 +//line sql.y:828 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9221,7 +9264,7 @@ yydefault: case 68: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:833 +//line sql.y:832 { yyLOCAL = &Union{Left: yyDollar[1].selStmtUnion(), Distinct: yyDollar[2].booleanUnion(), Right: yyDollar[3].selStmtUnion()} } @@ -9229,7 +9272,7 @@ yydefault: case 69: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:839 +//line sql.y:838 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9237,7 +9280,7 @@ yydefault: case 70: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:843 +//line sql.y:842 { setLockInSelect(yyDollar[1].selStmtUnion(), yyDollar[2].lockUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9246,7 +9289,7 @@ yydefault: case 71: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:848 +//line sql.y:847 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9254,7 +9297,7 @@ yydefault: case 72: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:852 +//line sql.y:851 { yyLOCAL = yyDollar[1].selStmtUnion() } @@ -9262,7 +9305,7 @@ yydefault: case 73: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:858 +//line sql.y:857 { yyLOCAL = yyDollar[2].selStmtUnion() } @@ -9270,7 +9313,7 @@ yydefault: case 74: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:862 +//line sql.y:861 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9279,7 +9322,7 @@ yydefault: case 75: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:867 +//line sql.y:866 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyDollar[1].selStmtUnion().SetLock(yyDollar[3].lockUnion()) @@ -9289,7 +9332,7 @@ yydefault: case 76: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:873 +//line sql.y:872 { yyDollar[1].selStmtUnion().SetInto(yyDollar[3].selectIntoUnion()) yyDollar[1].selStmtUnion().SetLock(yyDollar[2].lockUnion()) @@ -9299,7 +9342,7 @@ yydefault: case 77: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:879 +//line sql.y:878 { yyDollar[1].selStmtUnion().SetInto(yyDollar[2].selectIntoUnion()) yyLOCAL = yyDollar[1].selStmtUnion() @@ -9308,7 +9351,7 @@ yydefault: case 78: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:886 +//line sql.y:885 { yyLOCAL = &Stream{Comments: Comments(yyDollar[2].strs).Parsed(), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName} } @@ -9316,7 +9359,7 @@ yydefault: case 79: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:892 +//line sql.y:891 { yyLOCAL = &VStream{Comments: Comments(yyDollar[2].strs).Parsed(), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].exprUnion()), Limit: yyDollar[7].limitUnion()} } @@ -9324,7 +9367,7 @@ yydefault: case 80: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:900 +//line sql.y:899 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), yyDollar[4].selectExprsUnion() /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].selectIntoUnion() /*into*/, yyDollar[6].tableExprsUnion() /*from*/, NewWhere(WhereClause, yyDollar[7].exprUnion()), GroupBy(yyDollar[8].exprsUnion()), NewWhere(HavingClause, yyDollar[9].exprUnion()), yyDollar[10].namedWindowsUnion()) } @@ -9332,7 +9375,7 @@ yydefault: case 81: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL SelectStatement -//line sql.y:904 +//line sql.y:903 { yyLOCAL = NewSelect(Comments(yyDollar[2].strs), yyDollar[4].selectExprsUnion() /*SelectExprs*/, yyDollar[3].strs /*options*/, nil, yyDollar[5].tableExprsUnion() /*from*/, NewWhere(WhereClause, yyDollar[6].exprUnion()), GroupBy(yyDollar[7].exprsUnion()), NewWhere(HavingClause, yyDollar[8].exprUnion()), yyDollar[9].namedWindowsUnion()) } @@ -9340,7 +9383,7 @@ yydefault: case 82: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:910 +//line sql.y:909 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].insUnion() @@ -9356,7 +9399,7 @@ yydefault: case 83: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:922 +//line sql.y:921 { cols := make(Columns, 0, len(yyDollar[7].updateExprsUnion())) vals := make(ValTuple, 0, len(yyDollar[8].updateExprsUnion())) @@ -9370,7 +9413,7 @@ yydefault: case 84: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL InsertAction -//line sql.y:934 +//line sql.y:933 { yyLOCAL = InsertAct } @@ -9378,7 +9421,7 @@ yydefault: case 85: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL InsertAction -//line sql.y:938 +//line sql.y:937 { yyLOCAL = ReplaceAct } @@ -9386,7 +9429,7 @@ yydefault: case 86: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:944 +//line sql.y:943 { yyLOCAL = &Update{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), TableExprs: yyDollar[5].tableExprsUnion(), Exprs: yyDollar[7].updateExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion()), OrderBy: yyDollar[9].orderByUnion(), Limit: yyDollar[10].limitUnion()} } @@ -9394,7 +9437,7 @@ yydefault: case 87: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:950 +//line sql.y:949 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[6].tableName, As: yyDollar[7].identifierCS}}, Partitions: yyDollar[8].partitionsUnion(), Where: NewWhere(WhereClause, yyDollar[9].exprUnion()), OrderBy: yyDollar[10].orderByUnion(), Limit: yyDollar[11].limitUnion()} } @@ -9402,7 +9445,7 @@ yydefault: case 88: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Statement -//line sql.y:954 +//line sql.y:953 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[6].tableNamesUnion(), TableExprs: yyDollar[8].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[9].exprUnion())} } @@ -9410,7 +9453,7 @@ yydefault: case 89: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:958 +//line sql.y:957 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[5].tableNamesUnion(), TableExprs: yyDollar[7].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion())} } @@ -9418,32 +9461,32 @@ yydefault: case 90: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:962 +//line sql.y:961 { yyLOCAL = &Delete{With: yyDollar[1].withUnion(), Comments: Comments(yyDollar[3].strs).Parsed(), Ignore: yyDollar[4].ignoreUnion(), Targets: yyDollar[5].tableNamesUnion(), TableExprs: yyDollar[7].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion())} } yyVAL.union = yyLOCAL case 91: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:967 +//line sql.y:966 { } case 92: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:968 +//line sql.y:967 { } case 93: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:972 +//line sql.y:971 { yyLOCAL = TableNames{yyDollar[1].tableName.ToViewName()} } yyVAL.union = yyLOCAL case 94: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:976 +//line sql.y:975 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName.ToViewName()) @@ -9451,14 +9494,14 @@ yydefault: case 95: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:982 +//line sql.y:981 { yyLOCAL = TableNames{yyDollar[1].tableName} } yyVAL.union = yyLOCAL case 96: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:986 +//line sql.y:985 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName) @@ -9466,14 +9509,14 @@ yydefault: case 97: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableNames -//line sql.y:992 +//line sql.y:991 { yyLOCAL = TableNames{yyDollar[1].tableName} } yyVAL.union = yyLOCAL case 98: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:996 +//line sql.y:995 { yySLICE := (*TableNames)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableName) @@ -9481,7 +9524,7 @@ yydefault: case 99: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Partitions -//line sql.y:1001 +//line sql.y:1000 { yyLOCAL = nil } @@ -9489,7 +9532,7 @@ yydefault: case 100: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Partitions -//line sql.y:1005 +//line sql.y:1004 { yyLOCAL = yyDollar[3].partitionsUnion() } @@ -9497,7 +9540,7 @@ yydefault: case 101: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:1011 +//line sql.y:1010 { yyLOCAL = NewSetStatement(Comments(yyDollar[2].strs).Parsed(), yyDollar[3].setExprsUnion()) } @@ -9505,7 +9548,7 @@ yydefault: case 102: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:1017 +//line sql.y:1016 { yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs).Parsed(), Scope: yyDollar[3].scopeUnion(), Characteristics: yyDollar[5].characteristicsUnion()} } @@ -9513,7 +9556,7 @@ yydefault: case 103: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:1021 +//line sql.y:1020 { yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs).Parsed(), Characteristics: yyDollar[4].characteristicsUnion(), Scope: NoScope} } @@ -9521,14 +9564,14 @@ yydefault: case 104: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []Characteristic -//line sql.y:1027 +//line sql.y:1026 { yyLOCAL = []Characteristic{yyDollar[1].characteristicUnion()} } yyVAL.union = yyLOCAL case 105: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1031 +//line sql.y:1030 { yySLICE := (*[]Characteristic)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].characteristicUnion()) @@ -9536,7 +9579,7 @@ yydefault: case 106: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1037 +//line sql.y:1036 { yyLOCAL = yyDollar[3].isolationLevelUnion() } @@ -9544,7 +9587,7 @@ yydefault: case 107: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1041 +//line sql.y:1040 { yyLOCAL = ReadWrite } @@ -9552,7 +9595,7 @@ yydefault: case 108: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Characteristic -//line sql.y:1045 +//line sql.y:1044 { yyLOCAL = ReadOnly } @@ -9560,7 +9603,7 @@ yydefault: case 109: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1051 +//line sql.y:1050 { yyLOCAL = RepeatableRead } @@ -9568,7 +9611,7 @@ yydefault: case 110: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1055 +//line sql.y:1054 { yyLOCAL = ReadCommitted } @@ -9576,7 +9619,7 @@ yydefault: case 111: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1059 +//line sql.y:1058 { yyLOCAL = ReadUncommitted } @@ -9584,7 +9627,7 @@ yydefault: case 112: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsolationLevel -//line sql.y:1063 +//line sql.y:1062 { yyLOCAL = Serializable } @@ -9592,7 +9635,7 @@ yydefault: case 113: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1069 +//line sql.y:1068 { yyLOCAL = SessionScope } @@ -9600,7 +9643,7 @@ yydefault: case 114: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1073 +//line sql.y:1072 { yyLOCAL = SessionScope } @@ -9608,7 +9651,7 @@ yydefault: case 115: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Scope -//line sql.y:1077 +//line sql.y:1076 { yyLOCAL = GlobalScope } @@ -9616,7 +9659,7 @@ yydefault: case 116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1083 +//line sql.y:1082 { yyDollar[1].createTableUnion().TableSpec = yyDollar[2].tableSpecUnion() yyDollar[1].createTableUnion().FullyParsed = true @@ -9626,7 +9669,7 @@ yydefault: case 117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1089 +//line sql.y:1088 { // Create table [name] like [name] yyDollar[1].createTableUnion().OptLike = yyDollar[2].optLikeUnion() @@ -9637,7 +9680,7 @@ yydefault: case 118: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:1096 +//line sql.y:1095 { indexDef := yyDollar[1].alterTableUnion().AlterOptions[0].(*AddIndexDefinition).IndexDefinition indexDef.Columns = yyDollar[3].indexColumnsUnion() @@ -9650,7 +9693,7 @@ yydefault: case 119: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Statement -//line sql.y:1105 +//line sql.y:1104 { yyLOCAL = &CreateView{ViewName: yyDollar[8].tableName.ToViewName(), Comments: Comments(yyDollar[2].strs).Parsed(), IsReplace: yyDollar[3].booleanUnion(), Algorithm: yyDollar[4].str, Definer: yyDollar[5].definerUnion(), Security: yyDollar[6].str, Columns: yyDollar[9].columnsUnion(), Select: yyDollar[11].selStmtUnion(), CheckOption: yyDollar[12].str} } @@ -9658,7 +9701,7 @@ yydefault: case 120: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:1109 +//line sql.y:1108 { yyDollar[1].createDatabaseUnion().FullyParsed = true yyDollar[1].createDatabaseUnion().CreateOptions = yyDollar[2].databaseOptionsUnion() @@ -9668,7 +9711,7 @@ yydefault: case 121: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:1116 +//line sql.y:1115 { yyLOCAL = false } @@ -9676,33 +9719,33 @@ yydefault: case 122: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:1120 +//line sql.y:1119 { yyLOCAL = true } yyVAL.union = yyLOCAL case 123: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1125 +//line sql.y:1124 { yyVAL.identifierCI = NewIdentifierCI("") } case 124: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1129 +//line sql.y:1128 { yyVAL.identifierCI = yyDollar[2].identifierCI } case 125: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1135 +//line sql.y:1134 { yyVAL.identifierCI = yyDollar[1].identifierCI } case 126: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1140 +//line sql.y:1139 { var v []VindexParam yyLOCAL = v @@ -9711,7 +9754,7 @@ yydefault: case 127: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1145 +//line sql.y:1144 { yyLOCAL = yyDollar[2].vindexParamsUnion() } @@ -9719,7 +9762,7 @@ yydefault: case 128: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []VindexParam -//line sql.y:1151 +//line sql.y:1150 { yyLOCAL = make([]VindexParam, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].vindexParam) @@ -9727,21 +9770,21 @@ yydefault: yyVAL.union = yyLOCAL case 129: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1156 +//line sql.y:1155 { yySLICE := (*[]VindexParam)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].vindexParam) } case 130: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1162 +//line sql.y:1161 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].identifierCI, Val: yyDollar[3].str} } case 131: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1167 +//line sql.y:1166 { yyLOCAL = nil } @@ -9749,7 +9792,7 @@ yydefault: case 132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1171 +//line sql.y:1170 { yyLOCAL = yyDollar[1].jsonObjectParamsUnion() } @@ -9757,28 +9800,28 @@ yydefault: case 133: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JSONObjectParam -//line sql.y:1177 +//line sql.y:1176 { yyLOCAL = []*JSONObjectParam{yyDollar[1].jsonObjectParam} } yyVAL.union = yyLOCAL case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1181 +//line sql.y:1180 { yySLICE := (*[]*JSONObjectParam)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jsonObjectParam) } case 135: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1187 +//line sql.y:1186 { yyVAL.jsonObjectParam = &JSONObjectParam{Key: yyDollar[1].exprUnion(), Value: yyDollar[3].exprUnion()} } case 136: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *CreateTable -//line sql.y:1193 +//line sql.y:1192 { yyLOCAL = &CreateTable{Comments: Comments(yyDollar[2].strs).Parsed(), Table: yyDollar[6].tableName, IfNotExists: yyDollar[5].booleanUnion(), Temp: yyDollar[3].booleanUnion()} setDDL(yylex, yyLOCAL) @@ -9787,7 +9830,7 @@ yydefault: case 137: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1200 +//line sql.y:1199 { yyLOCAL = &AlterTable{Comments: Comments(yyDollar[2].strs).Parsed(), Table: yyDollar[4].tableName} setDDL(yylex, yyLOCAL) @@ -9796,7 +9839,7 @@ yydefault: case 138: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1207 +//line sql.y:1206 { yyLOCAL = &AlterTable{Table: yyDollar[7].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[4].identifierCI, Type: string(yyDollar[3].str)}, Options: yyDollar[5].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9805,7 +9848,7 @@ yydefault: case 139: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1212 +//line sql.y:1211 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Fulltext: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9814,7 +9857,7 @@ yydefault: case 140: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1217 +//line sql.y:1216 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Spatial: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9823,7 +9866,7 @@ yydefault: case 141: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *AlterTable -//line sql.y:1222 +//line sql.y:1221 { yyLOCAL = &AlterTable{Table: yyDollar[8].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[5].identifierCI, Type: string(yyDollar[3].str) + " " + string(yyDollar[4].str), Unique: true}, Options: yyDollar[6].indexOptionsUnion()}}}} setDDL(yylex, yyLOCAL) @@ -9832,7 +9875,7 @@ yydefault: case 142: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *CreateDatabase -//line sql.y:1229 +//line sql.y:1228 { yyLOCAL = &CreateDatabase{Comments: Comments(yyDollar[4].strs).Parsed(), DBName: yyDollar[6].identifierCS, IfNotExists: yyDollar[5].booleanUnion()} setDDL(yylex, yyLOCAL) @@ -9841,7 +9884,7 @@ yydefault: case 143: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AlterDatabase -//line sql.y:1236 +//line sql.y:1235 { yyLOCAL = &AlterDatabase{} setDDL(yylex, yyLOCAL) @@ -9850,7 +9893,7 @@ yydefault: case 146: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1247 +//line sql.y:1246 { yyLOCAL = yyDollar[2].tableSpecUnion() yyLOCAL.Options = yyDollar[4].tableOptionsUnion() @@ -9860,7 +9903,7 @@ yydefault: case 147: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1254 +//line sql.y:1253 { yyLOCAL = nil } @@ -9868,7 +9911,7 @@ yydefault: case 148: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1258 +//line sql.y:1257 { yyLOCAL = yyDollar[1].databaseOptionsUnion() } @@ -9876,7 +9919,7 @@ yydefault: case 149: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1264 +//line sql.y:1263 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } @@ -9884,7 +9927,7 @@ yydefault: case 150: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1268 +//line sql.y:1267 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } @@ -9892,28 +9935,28 @@ yydefault: case 151: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []DatabaseOption -//line sql.y:1272 +//line sql.y:1271 { yyLOCAL = []DatabaseOption{yyDollar[1].databaseOption} } yyVAL.union = yyLOCAL case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1276 +//line sql.y:1275 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) } case 153: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1280 +//line sql.y:1279 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) } case 154: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1284 +//line sql.y:1283 { yySLICE := (*[]DatabaseOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].databaseOption) @@ -9921,7 +9964,7 @@ yydefault: case 155: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:1290 +//line sql.y:1289 { yyLOCAL = false } @@ -9929,51 +9972,51 @@ yydefault: case 156: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:1294 +//line sql.y:1293 { yyLOCAL = true } yyVAL.union = yyLOCAL case 157: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1300 +//line sql.y:1299 { yyVAL.databaseOption = DatabaseOption{Type: CharacterSetType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 158: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1304 +//line sql.y:1303 { yyVAL.databaseOption = DatabaseOption{Type: CharacterSetType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 159: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1310 +//line sql.y:1309 { yyVAL.databaseOption = DatabaseOption{Type: CollateType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 160: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1314 +//line sql.y:1313 { yyVAL.databaseOption = DatabaseOption{Type: CollateType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 161: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1320 +//line sql.y:1319 { yyVAL.databaseOption = DatabaseOption{Type: EncryptionType, Value: string(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 162: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1324 +//line sql.y:1323 { yyVAL.databaseOption = DatabaseOption{Type: EncryptionType, Value: encodeSQLString(yyDollar[4].str), IsDefault: yyDollar[1].booleanUnion()} } case 163: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OptLike -//line sql.y:1330 +//line sql.y:1329 { yyLOCAL = &OptLike{LikeTable: yyDollar[2].tableName} } @@ -9981,7 +10024,7 @@ yydefault: case 164: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OptLike -//line sql.y:1334 +//line sql.y:1333 { yyLOCAL = &OptLike{LikeTable: yyDollar[3].tableName} } @@ -9989,14 +10032,14 @@ yydefault: case 165: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColumnDefinition -//line sql.y:1340 +//line sql.y:1339 { yyLOCAL = []*ColumnDefinition{yyDollar[1].columnDefinitionUnion()} } yyVAL.union = yyLOCAL case 166: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1344 +//line sql.y:1343 { yySLICE := (*[]*ColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].columnDefinitionUnion()) @@ -10004,7 +10047,7 @@ yydefault: case 167: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1350 +//line sql.y:1349 { yyLOCAL = &TableSpec{} yyLOCAL.AddColumn(yyDollar[1].columnDefinitionUnion()) @@ -10013,7 +10056,7 @@ yydefault: case 168: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *TableSpec -//line sql.y:1355 +//line sql.y:1354 { yyLOCAL = &TableSpec{} yyLOCAL.AddConstraint(yyDollar[1].constraintDefinitionUnion()) @@ -10021,39 +10064,39 @@ yydefault: yyVAL.union = yyLOCAL case 169: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1360 +//line sql.y:1359 { yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion()) } case 170: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1364 +//line sql.y:1363 { yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion()) yyVAL.tableSpecUnion().AddConstraint(yyDollar[4].constraintDefinitionUnion()) } case 171: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1369 +//line sql.y:1368 { yyVAL.tableSpecUnion().AddIndex(yyDollar[3].indexDefinitionUnion()) } case 172: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1373 +//line sql.y:1372 { yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion()) } case 173: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1377 +//line sql.y:1376 { yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion()) } case 174: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColumnDefinition -//line sql.y:1388 +//line sql.y:1387 { yyDollar[2].columnType.Options = yyDollar[4].columnTypeOptionsUnion() if yyDollar[2].columnType.Options.Collate == "" { @@ -10066,7 +10109,7 @@ yydefault: case 175: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL *ColumnDefinition -//line sql.y:1397 +//line sql.y:1396 { yyDollar[2].columnType.Options = yyDollar[9].columnTypeOptionsUnion() yyDollar[2].columnType.Options.As = yyDollar[7].exprUnion() @@ -10077,20 +10120,20 @@ yydefault: yyVAL.union = yyLOCAL case 176: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1406 +//line sql.y:1405 { yyVAL.str = "" } case 177: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1410 +//line sql.y:1409 { yyVAL.str = "" } case 178: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1419 +//line sql.y:1418 { yyLOCAL = &ColumnTypeOptions{Null: nil, Default: nil, OnUpdate: nil, Autoincrement: false, KeyOpt: colKeyNone, Comment: nil, As: nil, Invisible: nil, Format: UnspecifiedFormat, EngineAttribute: nil, SecondaryEngineAttribute: nil} } @@ -10098,7 +10141,7 @@ yydefault: case 179: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1423 +//line sql.y:1422 { val := true yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10108,7 +10151,7 @@ yydefault: case 180: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1429 +//line sql.y:1428 { val := false yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10118,7 +10161,7 @@ yydefault: case 181: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1435 +//line sql.y:1434 { yyDollar[1].columnTypeOptionsUnion().Default = yyDollar[4].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10127,7 +10170,7 @@ yydefault: case 182: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1440 +//line sql.y:1439 { yyDollar[1].columnTypeOptionsUnion().Default = yyDollar[3].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10136,7 +10179,7 @@ yydefault: case 183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1445 +//line sql.y:1444 { yyDollar[1].columnTypeOptionsUnion().OnUpdate = yyDollar[4].exprUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10145,7 +10188,7 @@ yydefault: case 184: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1450 +//line sql.y:1449 { yyDollar[1].columnTypeOptionsUnion().Autoincrement = true yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10154,7 +10197,7 @@ yydefault: case 185: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1455 +//line sql.y:1454 { yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10163,7 +10206,7 @@ yydefault: case 186: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1460 +//line sql.y:1459 { yyDollar[1].columnTypeOptionsUnion().KeyOpt = yyDollar[2].colKeyOptUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10171,14 +10214,14 @@ yydefault: yyVAL.union = yyLOCAL case 187: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1465 +//line sql.y:1464 { yyDollar[1].columnTypeOptionsUnion().Collate = encodeSQLString(yyDollar[3].str) } case 188: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1469 +//line sql.y:1468 { yyDollar[1].columnTypeOptionsUnion().Collate = string(yyDollar[3].identifierCI.String()) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10186,14 +10229,14 @@ yydefault: yyVAL.union = yyLOCAL case 189: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1474 +//line sql.y:1473 { yyDollar[1].columnTypeOptionsUnion().Format = yyDollar[3].columnFormatUnion() } case 190: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1478 +//line sql.y:1477 { yyDollar[1].columnTypeOptionsUnion().SRID = NewIntLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10202,7 +10245,7 @@ yydefault: case 191: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1483 +//line sql.y:1482 { val := false yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10212,7 +10255,7 @@ yydefault: case 192: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1489 +//line sql.y:1488 { val := true yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10221,20 +10264,20 @@ yydefault: yyVAL.union = yyLOCAL case 193: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1495 +//line sql.y:1494 { yyDollar[1].columnTypeOptionsUnion().EngineAttribute = NewStrLiteral(yyDollar[4].str) } case 194: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1499 +//line sql.y:1498 { yyDollar[1].columnTypeOptionsUnion().SecondaryEngineAttribute = NewStrLiteral(yyDollar[4].str) } case 195: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1505 +//line sql.y:1504 { yyLOCAL = FixedFormat } @@ -10242,7 +10285,7 @@ yydefault: case 196: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1509 +//line sql.y:1508 { yyLOCAL = DynamicFormat } @@ -10250,7 +10293,7 @@ yydefault: case 197: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnFormat -//line sql.y:1513 +//line sql.y:1512 { yyLOCAL = DefaultFormat } @@ -10258,7 +10301,7 @@ yydefault: case 198: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnStorage -//line sql.y:1519 +//line sql.y:1518 { yyLOCAL = VirtualStorage } @@ -10266,7 +10309,7 @@ yydefault: case 199: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnStorage -//line sql.y:1523 +//line sql.y:1522 { yyLOCAL = StoredStorage } @@ -10274,7 +10317,7 @@ yydefault: case 200: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1528 +//line sql.y:1527 { yyLOCAL = &ColumnTypeOptions{} } @@ -10282,7 +10325,7 @@ yydefault: case 201: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1532 +//line sql.y:1531 { yyDollar[1].columnTypeOptionsUnion().Storage = yyDollar[2].columnStorageUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10291,7 +10334,7 @@ yydefault: case 202: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1537 +//line sql.y:1536 { val := true yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10301,7 +10344,7 @@ yydefault: case 203: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1543 +//line sql.y:1542 { val := false yyDollar[1].columnTypeOptionsUnion().Null = &val @@ -10311,7 +10354,7 @@ yydefault: case 204: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1549 +//line sql.y:1548 { yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10320,7 +10363,7 @@ yydefault: case 205: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1554 +//line sql.y:1553 { yyDollar[1].columnTypeOptionsUnion().KeyOpt = yyDollar[2].colKeyOptUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() @@ -10329,7 +10372,7 @@ yydefault: case 206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1559 +//line sql.y:1558 { val := false yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10339,7 +10382,7 @@ yydefault: case 207: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1565 +//line sql.y:1564 { val := true yyDollar[1].columnTypeOptionsUnion().Invisible = &val @@ -10349,7 +10392,7 @@ yydefault: case 208: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1573 +//line sql.y:1572 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10357,7 +10400,7 @@ yydefault: case 210: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1580 +//line sql.y:1579 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_timestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10365,7 +10408,7 @@ yydefault: case 211: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1584 +//line sql.y:1583 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtime"), Fsp: yyDollar[2].exprUnion()} } @@ -10373,7 +10416,7 @@ yydefault: case 212: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1588 +//line sql.y:1587 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtimestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10381,7 +10424,7 @@ yydefault: case 213: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1592 +//line sql.y:1591 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_timestamp"), Fsp: yyDollar[2].exprUnion()} } @@ -10389,7 +10432,7 @@ yydefault: case 214: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1596 +//line sql.y:1595 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("now"), Fsp: yyDollar[2].exprUnion()} } @@ -10397,7 +10440,7 @@ yydefault: case 217: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1606 +//line sql.y:1605 { yyLOCAL = &NullVal{} } @@ -10405,7 +10448,7 @@ yydefault: case 219: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1613 +//line sql.y:1612 { yyLOCAL = yyDollar[2].exprUnion() } @@ -10413,7 +10456,7 @@ yydefault: case 220: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1617 +//line sql.y:1616 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } @@ -10421,7 +10464,7 @@ yydefault: case 221: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1623 +//line sql.y:1622 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10429,7 +10472,7 @@ yydefault: case 222: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1627 +//line sql.y:1626 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10437,7 +10480,7 @@ yydefault: case 223: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1631 +//line sql.y:1630 { yyLOCAL = yyDollar[1].boolValUnion() } @@ -10445,7 +10488,7 @@ yydefault: case 224: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1635 +//line sql.y:1634 { yyLOCAL = NewHexLiteral(yyDollar[1].str) } @@ -10453,7 +10496,7 @@ yydefault: case 225: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1639 +//line sql.y:1638 { yyLOCAL = NewHexNumLiteral(yyDollar[1].str) } @@ -10461,7 +10504,7 @@ yydefault: case 226: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1643 +//line sql.y:1642 { yyLOCAL = NewBitLiteral(yyDollar[1].str[2:]) } @@ -10469,7 +10512,7 @@ yydefault: case 227: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1647 +//line sql.y:1646 { yyLOCAL = NewBitLiteral(yyDollar[1].str) } @@ -10477,7 +10520,7 @@ yydefault: case 228: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1651 +//line sql.y:1650 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) @@ -10486,7 +10529,7 @@ yydefault: case 229: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1656 +//line sql.y:1655 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral(yyDollar[2].str)} } @@ -10494,7 +10537,7 @@ yydefault: case 230: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1660 +//line sql.y:1659 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexNumLiteral(yyDollar[2].str)} } @@ -10502,7 +10545,7 @@ yydefault: case 231: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1664 +//line sql.y:1663 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral(yyDollar[2].str[2:])} } @@ -10510,7 +10553,7 @@ yydefault: case 232: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1668 +//line sql.y:1667 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexLiteral(yyDollar[2].str)} } @@ -10518,7 +10561,7 @@ yydefault: case 233: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1672 +//line sql.y:1671 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: yyDollar[2].exprUnion()} } @@ -10526,7 +10569,7 @@ yydefault: case 234: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1676 +//line sql.y:1675 { bindVariable(yylex, yyDollar[2].str[1:]) yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewArgument(yyDollar[2].str[1:])} @@ -10535,7 +10578,7 @@ yydefault: case 235: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1681 +//line sql.y:1680 { yyLOCAL = NewDateLiteral(yyDollar[2].str) } @@ -10543,7 +10586,7 @@ yydefault: case 236: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1685 +//line sql.y:1684 { yyLOCAL = NewTimeLiteral(yyDollar[2].str) } @@ -10551,267 +10594,267 @@ yydefault: case 237: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1689 +//line sql.y:1688 { yyLOCAL = NewTimestampLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 238: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1695 +//line sql.y:1694 { yyVAL.str = Armscii8Str } case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1699 +//line sql.y:1698 { yyVAL.str = ASCIIStr } case 240: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1703 +//line sql.y:1702 { yyVAL.str = Big5Str } case 241: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1707 +//line sql.y:1706 { yyVAL.str = UBinaryStr } case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1711 +//line sql.y:1710 { yyVAL.str = Cp1250Str } case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1715 +//line sql.y:1714 { yyVAL.str = Cp1251Str } case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1719 +//line sql.y:1718 { yyVAL.str = Cp1256Str } case 245: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1723 +//line sql.y:1722 { yyVAL.str = Cp1257Str } case 246: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1727 +//line sql.y:1726 { yyVAL.str = Cp850Str } case 247: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1731 +//line sql.y:1730 { yyVAL.str = Cp852Str } case 248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1735 +//line sql.y:1734 { yyVAL.str = Cp866Str } case 249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1739 +//line sql.y:1738 { yyVAL.str = Cp932Str } case 250: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1743 +//line sql.y:1742 { yyVAL.str = Dec8Str } case 251: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1747 +//line sql.y:1746 { yyVAL.str = EucjpmsStr } case 252: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1751 +//line sql.y:1750 { yyVAL.str = EuckrStr } case 253: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1755 +//line sql.y:1754 { yyVAL.str = Gb18030Str } case 254: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1759 +//line sql.y:1758 { yyVAL.str = Gb2312Str } case 255: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1763 +//line sql.y:1762 { yyVAL.str = GbkStr } case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1767 +//line sql.y:1766 { yyVAL.str = Geostd8Str } case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1771 +//line sql.y:1770 { yyVAL.str = GreekStr } case 258: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1775 +//line sql.y:1774 { yyVAL.str = HebrewStr } case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1779 +//line sql.y:1778 { yyVAL.str = Hp8Str } case 260: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1783 +//line sql.y:1782 { yyVAL.str = Keybcs2Str } case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1787 +//line sql.y:1786 { yyVAL.str = Koi8rStr } case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1791 +//line sql.y:1790 { yyVAL.str = Koi8uStr } case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1795 +//line sql.y:1794 { yyVAL.str = Latin1Str } case 264: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1799 +//line sql.y:1798 { yyVAL.str = Latin2Str } case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1803 +//line sql.y:1802 { yyVAL.str = Latin5Str } case 266: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1807 +//line sql.y:1806 { yyVAL.str = Latin7Str } case 267: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1811 +//line sql.y:1810 { yyVAL.str = MacceStr } case 268: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1815 +//line sql.y:1814 { yyVAL.str = MacromanStr } case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1819 +//line sql.y:1818 { yyVAL.str = SjisStr } case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1823 +//line sql.y:1822 { yyVAL.str = Swe7Str } case 271: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1827 +//line sql.y:1826 { yyVAL.str = Tis620Str } case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1831 +//line sql.y:1830 { yyVAL.str = Ucs2Str } case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1835 +//line sql.y:1834 { yyVAL.str = UjisStr } case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1839 +//line sql.y:1838 { yyVAL.str = Utf16Str } case 275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1843 +//line sql.y:1842 { yyVAL.str = Utf16leStr } case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1847 +//line sql.y:1846 { yyVAL.str = Utf32Str } case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1851 +//line sql.y:1850 { yyVAL.str = Utf8Str } case 278: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1855 +//line sql.y:1854 { yyVAL.str = Utf8mb4Str } case 279: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1859 +//line sql.y:1858 { yyVAL.str = Utf8Str } case 282: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1869 +//line sql.y:1868 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } @@ -10819,7 +10862,7 @@ yydefault: case 283: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1873 +//line sql.y:1872 { yyLOCAL = NewFloatLiteral(yyDollar[1].str) } @@ -10827,7 +10870,7 @@ yydefault: case 284: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1877 +//line sql.y:1876 { yyLOCAL = NewDecimalLiteral(yyDollar[1].str) } @@ -10835,7 +10878,7 @@ yydefault: case 285: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1883 +//line sql.y:1882 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } @@ -10843,7 +10886,7 @@ yydefault: case 286: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1887 +//line sql.y:1886 { yyLOCAL = &UnaryExpr{Operator: NStringOp, Expr: NewStrLiteral(yyDollar[1].str)} } @@ -10851,7 +10894,7 @@ yydefault: case 287: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1891 +//line sql.y:1890 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewStrLiteral(yyDollar[2].str)} } @@ -10859,7 +10902,7 @@ yydefault: case 288: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1897 +//line sql.y:1896 { yyLOCAL = yyDollar[1].exprUnion() } @@ -10867,7 +10910,7 @@ yydefault: case 289: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1901 +//line sql.y:1900 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) @@ -10876,7 +10919,7 @@ yydefault: case 290: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1908 +//line sql.y:1907 { yyLOCAL = colKeyPrimary } @@ -10884,7 +10927,7 @@ yydefault: case 291: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1912 +//line sql.y:1911 { yyLOCAL = colKeyUnique } @@ -10892,7 +10935,7 @@ yydefault: case 292: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1916 +//line sql.y:1915 { yyLOCAL = colKeyUniqueKey } @@ -10900,14 +10943,14 @@ yydefault: case 293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1920 +//line sql.y:1919 { yyLOCAL = colKey } yyVAL.union = yyLOCAL case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1926 +//line sql.y:1925 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].booleanUnion() @@ -10915,74 +10958,74 @@ yydefault: } case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1937 +//line sql.y:1936 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literalUnion() } case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1942 +//line sql.y:1941 { yyVAL.columnType = yyDollar[1].columnType } case 300: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1948 +//line sql.y:1947 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1952 +//line sql.y:1951 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1956 +//line sql.y:1955 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1960 +//line sql.y:1959 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1964 +//line sql.y:1963 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1968 +//line sql.y:1967 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 306: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1972 +//line sql.y:1971 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1976 +//line sql.y:1975 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1980 +//line sql.y:1979 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 309: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1986 +//line sql.y:1985 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10990,7 +11033,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1992 +//line sql.y:1991 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -10998,7 +11041,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1998 +//line sql.y:1997 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -11006,7 +11049,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2004 +//line sql.y:2003 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -11014,7 +11057,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2010 +//line sql.y:2009 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -11022,43 +11065,43 @@ yydefault: } case 314: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2018 +//line sql.y:2017 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 315: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2022 +//line sql.y:2021 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2026 +//line sql.y:2025 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2030 +//line sql.y:2029 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 318: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2034 +//line sql.y:2033 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 319: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2040 +//line sql.y:2039 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2044 +//line sql.y:2043 { // CHAR BYTE is an alias for binary. See also: // https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html @@ -11066,153 +11109,153 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2050 +//line sql.y:2049 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2054 +//line sql.y:2053 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 323: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2058 +//line sql.y:2057 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2062 +//line sql.y:2061 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 325: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2066 +//line sql.y:2065 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2070 +//line sql.y:2069 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 327: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2074 +//line sql.y:2073 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2078 +//line sql.y:2077 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2082 +//line sql.y:2081 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2086 +//line sql.y:2085 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2090 +//line sql.y:2089 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2094 +//line sql.y:2093 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 333: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2098 +//line sql.y:2097 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 334: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2103 +//line sql.y:2102 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2109 +//line sql.y:2108 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2113 +//line sql.y:2112 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 337: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2117 +//line sql.y:2116 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 338: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2121 +//line sql.y:2120 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 339: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2125 +//line sql.y:2124 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2129 +//line sql.y:2128 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2133 +//line sql.y:2132 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2137 +//line sql.y:2136 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)} } case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2143 +//line sql.y:2142 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, encodeSQLString(yyDollar[1].str)) } case 344: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2148 +//line sql.y:2147 { yyVAL.strs = append(yyDollar[1].strs, encodeSQLString(yyDollar[3].str)) } case 345: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Literal -//line sql.y:2153 +//line sql.y:2152 { yyLOCAL = nil } @@ -11220,20 +11263,20 @@ yydefault: case 346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:2157 +//line sql.y:2156 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2162 +//line sql.y:2161 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 348: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2166 +//line sql.y:2165 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11242,13 +11285,13 @@ yydefault: } case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2174 +//line sql.y:2173 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 350: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2178 +//line sql.y:2177 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11256,7 +11299,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2184 +//line sql.y:2183 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].str), @@ -11266,7 +11309,7 @@ yydefault: case 352: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2192 +//line sql.y:2191 { yyLOCAL = false } @@ -11274,7 +11317,7 @@ yydefault: case 353: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2196 +//line sql.y:2195 { yyLOCAL = true } @@ -11282,7 +11325,7 @@ yydefault: case 354: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2200 +//line sql.y:2199 { yyLOCAL = false } @@ -11290,7 +11333,7 @@ yydefault: case 355: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2205 +//line sql.y:2204 { yyLOCAL = false } @@ -11298,66 +11341,66 @@ yydefault: case 356: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2209 +//line sql.y:2208 { yyLOCAL = true } yyVAL.union = yyLOCAL case 357: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2214 +//line sql.y:2213 { yyVAL.columnCharset = ColumnCharset{} } case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2218 +//line sql.y:2217 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].identifierCI.String()), Binary: yyDollar[3].booleanUnion()} } case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2222 +//line sql.y:2221 { yyVAL.columnCharset = ColumnCharset{Name: encodeSQLString(yyDollar[2].str), Binary: yyDollar[3].booleanUnion()} } case 360: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2226 +//line sql.y:2225 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].str)} } case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2230 +//line sql.y:2229 { // ASCII: Shorthand for CHARACTER SET latin1. yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: yyDollar[2].booleanUnion()} } case 362: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2235 +//line sql.y:2234 { // UNICODE: Shorthand for CHARACTER SET ucs2. yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: yyDollar[2].booleanUnion()} } case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2240 +//line sql.y:2239 { // BINARY: Shorthand for default CHARACTER SET but with binary collation yyVAL.columnCharset = ColumnCharset{Name: "", Binary: true} } case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2245 +//line sql.y:2244 { // BINARY ASCII: Shorthand for CHARACTER SET latin1 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: true} } case 365: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2250 +//line sql.y:2249 { // BINARY UNICODE: Shorthand for CHARACTER SET ucs2 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: true} @@ -11365,7 +11408,7 @@ yydefault: case 366: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2256 +//line sql.y:2255 { yyLOCAL = false } @@ -11373,33 +11416,33 @@ yydefault: case 367: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2260 +//line sql.y:2259 { yyLOCAL = true } yyVAL.union = yyLOCAL case 368: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2265 +//line sql.y:2264 { yyVAL.str = "" } case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2269 +//line sql.y:2268 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2273 +//line sql.y:2272 { yyVAL.str = encodeSQLString(yyDollar[2].str) } case 371: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexDefinition -//line sql.y:2279 +//line sql.y:2278 { yyLOCAL = &IndexDefinition{Info: yyDollar[1].indexInfoUnion(), Columns: yyDollar[3].indexColumnsUnion(), Options: yyDollar[5].indexOptionsUnion()} } @@ -11407,7 +11450,7 @@ yydefault: case 372: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2284 +//line sql.y:2283 { yyLOCAL = nil } @@ -11415,7 +11458,7 @@ yydefault: case 373: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2288 +//line sql.y:2287 { yyLOCAL = yyDollar[1].indexOptionsUnion() } @@ -11423,14 +11466,14 @@ yydefault: case 374: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2294 +//line sql.y:2293 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2298 +//line sql.y:2297 { yySLICE := (*[]*IndexOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexOptionUnion()) @@ -11438,7 +11481,7 @@ yydefault: case 376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2304 +//line sql.y:2303 { yyLOCAL = yyDollar[1].indexOptionUnion() } @@ -11446,7 +11489,7 @@ yydefault: case 377: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2308 +//line sql.y:2307 { // should not be string yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} @@ -11455,7 +11498,7 @@ yydefault: case 378: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2313 +//line sql.y:2312 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[2].str)} } @@ -11463,7 +11506,7 @@ yydefault: case 379: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2317 +//line sql.y:2316 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } @@ -11471,7 +11514,7 @@ yydefault: case 380: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2321 +//line sql.y:2320 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } @@ -11479,7 +11522,7 @@ yydefault: case 381: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2325 +//line sql.y:2324 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str) + " " + string(yyDollar[2].str), String: yyDollar[3].identifierCI.String()} } @@ -11487,7 +11530,7 @@ yydefault: case 382: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2329 +//line sql.y:2328 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -11495,27 +11538,27 @@ yydefault: case 383: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2333 +//line sql.y:2332 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL case 384: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2339 +//line sql.y:2338 { yyVAL.str = "" } case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2343 +//line sql.y:2342 { yyVAL.str = string(yyDollar[1].str) } case 386: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2349 +//line sql.y:2348 { yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI("PRIMARY"), Primary: true, Unique: true} } @@ -11523,7 +11566,7 @@ yydefault: case 387: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2353 +//line sql.y:2352 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewIdentifierCI(yyDollar[3].str), Spatial: true, Unique: false} } @@ -11531,7 +11574,7 @@ yydefault: case 388: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2357 +//line sql.y:2356 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewIdentifierCI(yyDollar[3].str), Fulltext: true, Unique: false} } @@ -11539,7 +11582,7 @@ yydefault: case 389: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2361 +//line sql.y:2360 { yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI(yyDollar[4].str), Unique: true} } @@ -11547,100 +11590,100 @@ yydefault: case 390: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2365 +//line sql.y:2364 { yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str), Name: NewIdentifierCI(yyDollar[2].str), Unique: false} } yyVAL.union = yyLOCAL case 391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2370 +//line sql.y:2369 { yyVAL.str = "" } case 392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2374 +//line sql.y:2373 { yyVAL.str = yyDollar[2].str } case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2380 +//line sql.y:2379 { yyVAL.str = string(yyDollar[1].str) } case 394: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2384 +//line sql.y:2383 { yyVAL.str = string(yyDollar[1].str) } case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2388 +//line sql.y:2387 { yyVAL.str = string(yyDollar[1].str) } case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2394 +//line sql.y:2393 { yyVAL.str = string(yyDollar[1].str) } case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2398 +//line sql.y:2397 { yyVAL.str = string(yyDollar[1].str) } case 398: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2403 +//line sql.y:2402 { yyVAL.str = "key" } case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2407 +//line sql.y:2406 { yyVAL.str = yyDollar[1].str } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2413 +//line sql.y:2412 { yyVAL.str = string(yyDollar[1].str) } case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2417 +//line sql.y:2416 { yyVAL.str = string(yyDollar[1].str) } case 402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2422 +//line sql.y:2421 { yyVAL.str = "" } case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2426 +//line sql.y:2425 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } case 404: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexColumn -//line sql.y:2432 +//line sql.y:2431 { yyLOCAL = []*IndexColumn{yyDollar[1].indexColumnUnion()} } yyVAL.union = yyLOCAL case 405: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2436 +//line sql.y:2435 { yySLICE := (*[]*IndexColumn)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].indexColumnUnion()) @@ -11648,7 +11691,7 @@ yydefault: case 406: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2442 +//line sql.y:2441 { yyLOCAL = &IndexColumn{Column: yyDollar[1].identifierCI, Length: yyDollar[2].literalUnion(), Direction: yyDollar[3].orderDirectionUnion()} } @@ -11656,7 +11699,7 @@ yydefault: case 407: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2446 +//line sql.y:2445 { yyLOCAL = &IndexColumn{Expression: yyDollar[2].exprUnion(), Direction: yyDollar[4].orderDirectionUnion()} } @@ -11664,7 +11707,7 @@ yydefault: case 408: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2452 +//line sql.y:2451 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } @@ -11672,7 +11715,7 @@ yydefault: case 409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2456 +//line sql.y:2455 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } @@ -11680,7 +11723,7 @@ yydefault: case 410: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2462 +//line sql.y:2461 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } @@ -11688,7 +11731,7 @@ yydefault: case 411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2466 +//line sql.y:2465 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } @@ -11696,7 +11739,7 @@ yydefault: case 412: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2472 +//line sql.y:2471 { yyLOCAL = &ForeignKeyDefinition{IndexName: NewIdentifierCI(yyDollar[3].str), Source: yyDollar[5].columnsUnion(), ReferenceDefinition: yyDollar[7].referenceDefinitionUnion()} } @@ -11704,7 +11747,7 @@ yydefault: case 413: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2478 +//line sql.y:2477 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion()} } @@ -11712,7 +11755,7 @@ yydefault: case 414: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2482 +//line sql.y:2481 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion()} } @@ -11720,7 +11763,7 @@ yydefault: case 415: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2486 +//line sql.y:2485 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion()} } @@ -11728,7 +11771,7 @@ yydefault: case 416: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2490 +//line sql.y:2489 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion(), OnUpdate: yyDollar[8].referenceActionUnion()} } @@ -11736,7 +11779,7 @@ yydefault: case 417: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2494 +//line sql.y:2493 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion(), OnDelete: yyDollar[8].referenceActionUnion()} } @@ -11744,7 +11787,7 @@ yydefault: case 418: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2499 +//line sql.y:2498 { yyLOCAL = nil } @@ -11752,7 +11795,7 @@ yydefault: case 419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2503 +//line sql.y:2502 { yyLOCAL = yyDollar[1].referenceDefinitionUnion() } @@ -11760,7 +11803,7 @@ yydefault: case 420: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2509 +//line sql.y:2508 { yyLOCAL = &CheckConstraintDefinition{Expr: yyDollar[3].exprUnion(), Enforced: yyDollar[5].booleanUnion()} } @@ -11768,7 +11811,7 @@ yydefault: case 421: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2515 +//line sql.y:2514 { yyLOCAL = yyDollar[2].matchActionUnion() } @@ -11776,7 +11819,7 @@ yydefault: case 422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2521 +//line sql.y:2520 { yyLOCAL = Full } @@ -11784,7 +11827,7 @@ yydefault: case 423: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2525 +//line sql.y:2524 { yyLOCAL = Partial } @@ -11792,7 +11835,7 @@ yydefault: case 424: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2529 +//line sql.y:2528 { yyLOCAL = Simple } @@ -11800,7 +11843,7 @@ yydefault: case 425: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2534 +//line sql.y:2533 { yyLOCAL = DefaultMatch } @@ -11808,7 +11851,7 @@ yydefault: case 426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2538 +//line sql.y:2537 { yyLOCAL = yyDollar[1].matchActionUnion() } @@ -11816,7 +11859,7 @@ yydefault: case 427: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2544 +//line sql.y:2543 { yyLOCAL = yyDollar[3].referenceActionUnion() } @@ -11824,7 +11867,7 @@ yydefault: case 428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2550 +//line sql.y:2549 { yyLOCAL = yyDollar[3].referenceActionUnion() } @@ -11832,7 +11875,7 @@ yydefault: case 429: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2556 +//line sql.y:2555 { yyLOCAL = Restrict } @@ -11840,7 +11883,7 @@ yydefault: case 430: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2560 +//line sql.y:2559 { yyLOCAL = Cascade } @@ -11848,7 +11891,7 @@ yydefault: case 431: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2564 +//line sql.y:2563 { yyLOCAL = NoAction } @@ -11856,7 +11899,7 @@ yydefault: case 432: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2568 +//line sql.y:2567 { yyLOCAL = SetDefault } @@ -11864,33 +11907,33 @@ yydefault: case 433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2572 +//line sql.y:2571 { yyLOCAL = SetNull } yyVAL.union = yyLOCAL case 434: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2577 +//line sql.y:2576 { yyVAL.str = "" } case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2581 +//line sql.y:2580 { yyVAL.str = string(yyDollar[1].str) } case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2585 +//line sql.y:2584 { yyVAL.str = string(yyDollar[1].str) } case 437: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2591 +//line sql.y:2590 { yyLOCAL = true } @@ -11898,7 +11941,7 @@ yydefault: case 438: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:2595 +//line sql.y:2594 { yyLOCAL = false } @@ -11906,7 +11949,7 @@ yydefault: case 439: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2600 +//line sql.y:2599 { yyLOCAL = true } @@ -11914,7 +11957,7 @@ yydefault: case 440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2604 +//line sql.y:2603 { yyLOCAL = yyDollar[1].booleanUnion() } @@ -11922,7 +11965,7 @@ yydefault: case 441: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2609 +//line sql.y:2608 { yyLOCAL = nil } @@ -11930,7 +11973,7 @@ yydefault: case 442: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2613 +//line sql.y:2612 { yyLOCAL = yyDollar[1].tableOptionsUnion() } @@ -11938,21 +11981,21 @@ yydefault: case 443: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2619 +//line sql.y:2618 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL case 444: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2623 +//line sql.y:2622 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableOptionUnion()) } case 445: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2627 +//line sql.y:2626 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) @@ -11960,14 +12003,14 @@ yydefault: case 446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2633 +//line sql.y:2632 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL case 447: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2637 +//line sql.y:2636 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) @@ -11975,7 +12018,7 @@ yydefault: case 448: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2643 +//line sql.y:2642 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11983,7 +12026,7 @@ yydefault: case 449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2647 +//line sql.y:2646 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11991,7 +12034,7 @@ yydefault: case 450: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2651 +//line sql.y:2650 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -11999,7 +12042,7 @@ yydefault: case 451: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2655 +//line sql.y:2654 { yyLOCAL = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str, CaseSensitive: true} } @@ -12007,7 +12050,7 @@ yydefault: case 452: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2659 +//line sql.y:2658 { yyLOCAL = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str, CaseSensitive: true} } @@ -12015,7 +12058,7 @@ yydefault: case 453: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2663 +//line sql.y:2662 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12023,7 +12066,7 @@ yydefault: case 454: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2667 +//line sql.y:2666 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12031,7 +12074,7 @@ yydefault: case 455: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2671 +//line sql.y:2670 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12039,7 +12082,7 @@ yydefault: case 456: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2675 +//line sql.y:2674 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12047,7 +12090,7 @@ yydefault: case 457: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2679 +//line sql.y:2678 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } @@ -12055,7 +12098,7 @@ yydefault: case 458: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2683 +//line sql.y:2682 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } @@ -12063,7 +12106,7 @@ yydefault: case 459: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2687 +//line sql.y:2686 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12071,7 +12114,7 @@ yydefault: case 460: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2691 +//line sql.y:2690 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12079,7 +12122,7 @@ yydefault: case 461: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2695 +//line sql.y:2694 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].identifierCS.String(), CaseSensitive: true} } @@ -12087,7 +12130,7 @@ yydefault: case 462: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2699 +//line sql.y:2698 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12095,7 +12138,7 @@ yydefault: case 463: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2703 +//line sql.y:2702 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12103,7 +12146,7 @@ yydefault: case 464: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2707 +//line sql.y:2706 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12111,7 +12154,7 @@ yydefault: case 465: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2711 +//line sql.y:2710 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12119,7 +12162,7 @@ yydefault: case 466: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2715 +//line sql.y:2714 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12127,7 +12170,7 @@ yydefault: case 467: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2719 +//line sql.y:2718 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12135,7 +12178,7 @@ yydefault: case 468: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2723 +//line sql.y:2722 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12143,7 +12186,7 @@ yydefault: case 469: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2727 +//line sql.y:2726 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12151,7 +12194,7 @@ yydefault: case 470: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2731 +//line sql.y:2730 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12159,7 +12202,7 @@ yydefault: case 471: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2735 +//line sql.y:2734 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } @@ -12167,7 +12210,7 @@ yydefault: case 472: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2739 +//line sql.y:2738 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12175,7 +12218,7 @@ yydefault: case 473: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2743 +//line sql.y:2742 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12183,7 +12226,7 @@ yydefault: case 474: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2747 +//line sql.y:2746 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12191,7 +12234,7 @@ yydefault: case 475: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2751 +//line sql.y:2750 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } @@ -12199,7 +12242,7 @@ yydefault: case 476: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2755 +//line sql.y:2754 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } @@ -12207,7 +12250,7 @@ yydefault: case 477: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2759 +//line sql.y:2758 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].identifierCI.String() + yyDollar[4].str)} } @@ -12215,57 +12258,57 @@ yydefault: case 478: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2763 +//line sql.y:2762 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2768 +//line sql.y:2767 { yyVAL.str = "" } case 480: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2772 +//line sql.y:2771 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2776 +//line sql.y:2775 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2795 +//line sql.y:2794 { yyVAL.str = yyDollar[1].identifierCI.String() } case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2799 +//line sql.y:2798 { yyVAL.str = encodeSQLString(yyDollar[1].str) } case 493: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2803 +//line sql.y:2802 { yyVAL.str = string(yyDollar[1].str) } case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2808 +//line sql.y:2807 { yyVAL.str = "" } case 496: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2814 +//line sql.y:2813 { yyLOCAL = false } @@ -12273,7 +12316,7 @@ yydefault: case 497: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2818 +//line sql.y:2817 { yyLOCAL = true } @@ -12281,7 +12324,7 @@ yydefault: case 498: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColName -//line sql.y:2823 +//line sql.y:2822 { yyLOCAL = nil } @@ -12289,27 +12332,27 @@ yydefault: case 499: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColName -//line sql.y:2827 +//line sql.y:2826 { yyLOCAL = yyDollar[2].colNameUnion() } yyVAL.union = yyLOCAL case 500: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2832 +//line sql.y:2831 { yyVAL.str = "" } case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2836 +//line sql.y:2835 { yyVAL.str = string(yyDollar[2].str) } case 502: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Literal -//line sql.y:2841 +//line sql.y:2840 { yyLOCAL = nil } @@ -12317,7 +12360,7 @@ yydefault: case 503: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2845 +//line sql.y:2844 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } @@ -12325,452 +12368,428 @@ yydefault: case 504: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2849 +//line sql.y:2848 { yyLOCAL = NewDecimalLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL case 505: - yyDollar = yyS[yypt-0 : yypt+1] - var yyLOCAL *Literal -//line sql.y:2854 - { - yyLOCAL = nil - } - yyVAL.union = yyLOCAL - case 506: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL *Literal -//line sql.y:2858 - { - yyLOCAL = NewIntLiteral(yyDollar[2].str) - } - yyVAL.union = yyLOCAL - case 507: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL *Literal -//line sql.y:2862 - { - yyLOCAL = NewDecimalLiteral(yyDollar[2].str) - } - yyVAL.union = yyLOCAL - case 508: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2867 +//line sql.y:2853 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 509: + case 506: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2871 +//line sql.y:2857 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 510: + case 507: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2875 +//line sql.y:2861 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &OrderByOption{Cols: yyDollar[5].columnsUnion()}) } - case 511: + case 508: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2879 +//line sql.y:2865 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 512: + case 509: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2883 +//line sql.y:2869 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionsUnion()...) } - case 513: + case 510: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2887 +//line sql.y:2873 { yyLOCAL = append(append(yyDollar[1].alterOptionsUnion(), yyDollar[3].alterOptionsUnion()...), &OrderByOption{Cols: yyDollar[7].columnsUnion()}) } yyVAL.union = yyLOCAL - case 514: + case 511: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2893 +//line sql.y:2879 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 515: + case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2897 +//line sql.y:2883 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 516: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2901 +//line sql.y:2887 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 517: + case 514: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2907 +//line sql.y:2893 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 518: + case 515: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2911 +//line sql.y:2897 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 519: + case 516: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2915 +//line sql.y:2901 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 520: + case 517: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2919 +//line sql.y:2905 { yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()} } yyVAL.union = yyLOCAL - case 521: + case 518: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2923 +//line sql.y:2909 { yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 522: + case 519: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2927 +//line sql.y:2913 { yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 523: + case 520: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2931 +//line sql.y:2917 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true} } yyVAL.union = yyLOCAL - case 524: + case 521: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2935 +//line sql.y:2921 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 525: + case 522: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2939 +//line sql.y:2925 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 526: + case 523: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2943 +//line sql.y:2929 { val := false yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL - case 527: + case 524: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2948 +//line sql.y:2934 { val := true yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: &val} } yyVAL.union = yyLOCAL - case 528: + case 525: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2953 +//line sql.y:2939 { yyLOCAL = &AlterCheck{Name: yyDollar[3].identifierCI, Enforced: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 529: + case 526: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2957 +//line sql.y:2943 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: false} } yyVAL.union = yyLOCAL - case 530: + case 527: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2961 +//line sql.y:2947 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: true} } yyVAL.union = yyLOCAL - case 531: + case 528: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2965 +//line sql.y:2951 { yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].booleanUnion(), After: yyDollar[6].colNameUnion()} } yyVAL.union = yyLOCAL - case 532: + case 529: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2969 +//line sql.y:2955 { yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 533: + case 530: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2973 +//line sql.y:2959 { yyLOCAL = &RenameColumn{OldName: yyDollar[3].colNameUnion(), NewName: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 534: + case 531: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2977 +//line sql.y:2963 { yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 535: + case 532: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2981 +//line sql.y:2967 { yyLOCAL = &KeyState{Enable: false} } yyVAL.union = yyLOCAL - case 536: + case 533: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2985 +//line sql.y:2971 { yyLOCAL = &KeyState{Enable: true} } yyVAL.union = yyLOCAL - case 537: + case 534: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2989 +//line sql.y:2975 { yyLOCAL = &TablespaceOperation{Import: false} } yyVAL.union = yyLOCAL - case 538: + case 535: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2993 +//line sql.y:2979 { yyLOCAL = &TablespaceOperation{Import: true} } yyVAL.union = yyLOCAL - case 539: + case 536: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:2997 +//line sql.y:2983 { yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 540: + case 537: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3001 +//line sql.y:2987 { yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 541: + case 538: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3005 +//line sql.y:2991 { yyLOCAL = &DropKey{Type: PrimaryKeyType} } yyVAL.union = yyLOCAL - case 542: + case 539: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3009 +//line sql.y:2995 { yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 543: + case 540: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3013 +//line sql.y:2999 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 544: + case 541: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3017 +//line sql.y:3003 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 545: + case 542: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3021 +//line sql.y:3007 { yyLOCAL = &Force{} } yyVAL.union = yyLOCAL - case 546: + case 543: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3025 +//line sql.y:3011 { yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 547: + case 544: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3029 +//line sql.y:3015 { yyLOCAL = &RenameIndex{OldName: yyDollar[3].identifierCI, NewName: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 548: + case 545: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:3035 +//line sql.y:3021 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 549: + case 546: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3039 +//line sql.y:3025 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 550: + case 547: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3045 +//line sql.y:3031 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 551: + case 548: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3049 +//line sql.y:3035 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 552: + case 549: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3053 +//line sql.y:3039 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 553: + case 550: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3057 +//line sql.y:3043 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 554: + case 551: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3061 +//line sql.y:3047 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 555: + case 552: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3065 +//line sql.y:3051 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 556: + case 553: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3069 +//line sql.y:3055 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 557: + case 554: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3073 +//line sql.y:3059 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 558: + case 555: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3077 +//line sql.y:3063 { yyLOCAL = &Validation{With: true} } yyVAL.union = yyLOCAL - case 559: + case 556: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3081 +//line sql.y:3067 { yyLOCAL = &Validation{With: false} } yyVAL.union = yyLOCAL - case 560: + case 557: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3087 +//line sql.y:3073 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12778,10 +12797,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 561: + case 558: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3094 +//line sql.y:3080 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12789,10 +12808,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 562: + case 559: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3101 +//line sql.y:3087 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -12800,28 +12819,28 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 563: + case 560: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3108 +//line sql.y:3094 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[2].partSpecUnion() yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 564: + case 561: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:3114 +//line sql.y:3100 { yyLOCAL = &AlterView{ViewName: yyDollar[7].tableName.ToViewName(), Comments: Comments(yyDollar[2].strs).Parsed(), Algorithm: yyDollar[3].str, Definer: yyDollar[4].definerUnion(), Security: yyDollar[5].str, Columns: yyDollar[8].columnsUnion(), Select: yyDollar[10].selStmtUnion(), CheckOption: yyDollar[11].str} } yyVAL.union = yyLOCAL - case 565: + case 562: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3124 +//line sql.y:3110 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12829,10 +12848,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 566: + case 563: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3131 +//line sql.y:3117 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -12840,10 +12859,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 567: + case 564: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3138 +//line sql.y:3124 { yyLOCAL = &AlterVschema{ Action: CreateVindexDDLAction, @@ -12856,10 +12875,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 568: + case 565: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3150 +//line sql.y:3136 { yyLOCAL = &AlterVschema{ Action: DropVindexDDLAction, @@ -12870,26 +12889,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 569: + case 566: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3160 +//line sql.y:3146 { yyLOCAL = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 570: + case 567: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3164 +//line sql.y:3150 { yyLOCAL = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 571: + case 568: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL Statement -//line sql.y:3168 +//line sql.y:3154 { yyLOCAL = &AlterVschema{ Action: AddColVindexDDLAction, @@ -12903,10 +12922,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 572: + case 569: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3181 +//line sql.y:3167 { yyLOCAL = &AlterVschema{ Action: DropColVindexDDLAction, @@ -12917,18 +12936,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 573: + case 570: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3191 +//line sql.y:3177 { yyLOCAL = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 574: + case 571: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:3195 +//line sql.y:3181 { yyLOCAL = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -12940,10 +12959,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 575: + case 572: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3206 +//line sql.y:3192 { yyLOCAL = &AlterMigration{ Type: RetryMigrationType, @@ -12951,10 +12970,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 576: + case 573: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3213 +//line sql.y:3199 { yyLOCAL = &AlterMigration{ Type: CleanupMigrationType, @@ -12962,10 +12981,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 577: + case 574: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3220 +//line sql.y:3206 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12973,10 +12992,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 578: + case 575: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3227 +//line sql.y:3213 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -12985,20 +13004,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 579: + case 576: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3235 +//line sql.y:3221 { yyLOCAL = &AlterMigration{ Type: LaunchAllMigrationType, } } yyVAL.union = yyLOCAL - case 580: + case 577: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3241 +//line sql.y:3227 { yyLOCAL = &AlterMigration{ Type: CompleteMigrationType, @@ -13006,20 +13025,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 581: + case 578: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3248 +//line sql.y:3234 { yyLOCAL = &AlterMigration{ Type: CompleteAllMigrationType, } } yyVAL.union = yyLOCAL - case 582: + case 579: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3254 +//line sql.y:3240 { yyLOCAL = &AlterMigration{ Type: CancelMigrationType, @@ -13027,20 +13046,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 583: + case 580: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3261 +//line sql.y:3247 { yyLOCAL = &AlterMigration{ Type: CancelAllMigrationType, } } yyVAL.union = yyLOCAL - case 584: + case 581: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3267 +//line sql.y:3253 { yyLOCAL = &AlterMigration{ Type: ThrottleMigrationType, @@ -13050,10 +13069,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 585: + case 582: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3276 +//line sql.y:3262 { yyLOCAL = &AlterMigration{ Type: ThrottleAllMigrationType, @@ -13062,10 +13081,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 586: + case 583: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3284 +//line sql.y:3270 { yyLOCAL = &AlterMigration{ Type: UnthrottleMigrationType, @@ -13073,62 +13092,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 587: + case 584: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3291 +//line sql.y:3277 { yyLOCAL = &AlterMigration{ Type: UnthrottleAllMigrationType, } } yyVAL.union = yyLOCAL - case 588: - yyDollar = yyS[yypt-4 : yypt+1] - var yyLOCAL Statement -//line sql.y:3297 - { - yyLOCAL = &AlterThrottler{ - Type: AlterThrottlerDisableType, - Comments: Comments(yyDollar[2].strs).Parsed(), - } - } - yyVAL.union = yyLOCAL - case 589: - yyDollar = yyS[yypt-4 : yypt+1] - var yyLOCAL Statement -//line sql.y:3304 - { - yyLOCAL = &AlterThrottler{ - Type: AlterThrottlerEnableType, - Comments: Comments(yyDollar[2].strs).Parsed(), - } - } - yyVAL.union = yyLOCAL - case 590: - yyDollar = yyS[yypt-4 : yypt+1] - var yyLOCAL Statement -//line sql.y:3311 - { - yyLOCAL = &AlterThrottler{ - Type: AlterThrottlerParamsType, - Threshold: yyDollar[4].literalUnion(), - Comments: Comments(yyDollar[2].strs).Parsed(), - } - } - yyVAL.union = yyLOCAL - case 591: + case 585: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3321 +//line sql.y:3284 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 592: + case 586: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3325 +//line sql.y:3288 { yyDollar[3].partitionOptionUnion().Partitions = yyDollar[4].integerUnion() yyDollar[3].partitionOptionUnion().SubPartition = yyDollar[5].subPartitionUnion() @@ -13136,10 +13121,10 @@ yydefault: yyLOCAL = yyDollar[3].partitionOptionUnion() } yyVAL.union = yyLOCAL - case 593: + case 587: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3334 +//line sql.y:3297 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13148,10 +13133,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 594: + case 588: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3342 +//line sql.y:3305 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -13161,10 +13146,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 595: + case 589: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3351 +//line sql.y:3314 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13172,10 +13157,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 596: + case 590: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3358 +//line sql.y:3321 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -13183,18 +13168,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 597: + case 591: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3366 +//line sql.y:3329 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 598: + case 592: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3370 +//line sql.y:3333 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13204,10 +13189,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 599: + case 593: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3379 +//line sql.y:3342 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -13218,682 +13203,682 @@ yydefault: } } yyVAL.union = yyLOCAL - case 600: + case 594: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3390 +//line sql.y:3353 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 601: + case 595: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3394 +//line sql.y:3357 { yyLOCAL = yyDollar[2].partDefsUnion() } yyVAL.union = yyLOCAL - case 602: + case 596: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3399 +//line sql.y:3362 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 603: + case 597: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3403 +//line sql.y:3366 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 604: + case 598: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3408 +//line sql.y:3371 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 605: + case 599: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3412 +//line sql.y:3375 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 606: + case 600: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL TableExpr -//line sql.y:3418 +//line sql.y:3381 { yyLOCAL = &JSONTableExpr{Expr: yyDollar[3].exprUnion(), Filter: yyDollar[5].exprUnion(), Columns: yyDollar[6].jtColumnListUnion(), Alias: yyDollar[8].identifierCS} } yyVAL.union = yyLOCAL - case 607: + case 601: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3424 +//line sql.y:3387 { yyLOCAL = yyDollar[3].jtColumnListUnion() } yyVAL.union = yyLOCAL - case 608: + case 602: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3430 +//line sql.y:3393 { yyLOCAL = []*JtColumnDefinition{yyDollar[1].jtColumnDefinitionUnion()} } yyVAL.union = yyLOCAL - case 609: + case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3434 +//line sql.y:3397 { yySLICE := (*[]*JtColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jtColumnDefinitionUnion()) } - case 610: + case 604: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3440 +//line sql.y:3403 { yyLOCAL = &JtColumnDefinition{JtOrdinal: &JtOrdinalColDef{Name: yyDollar[1].identifierCI}} } yyVAL.union = yyLOCAL - case 611: + case 605: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3444 +//line sql.y:3407 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 612: + case 606: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3450 +//line sql.y:3413 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 613: + case 607: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3456 +//line sql.y:3419 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 614: + case 608: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3462 +//line sql.y:3425 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 615: + case 609: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3468 +//line sql.y:3431 { jtNestedPath := &JtNestedPathColDef{Path: yyDollar[3].exprUnion(), Columns: yyDollar[4].jtColumnListUnion()} yyLOCAL = &JtColumnDefinition{JtNestedPath: jtNestedPath} } yyVAL.union = yyLOCAL - case 616: + case 610: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3474 +//line sql.y:3437 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 617: + case 611: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3478 +//line sql.y:3441 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 618: + case 612: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3482 +//line sql.y:3445 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 619: + case 613: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3486 +//line sql.y:3449 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 620: + case 614: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3492 +//line sql.y:3455 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 621: + case 615: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3498 +//line sql.y:3461 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 622: + case 616: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3504 +//line sql.y:3467 { yyLOCAL = &JtOnResponse{ResponseType: ErrorJSONType} } yyVAL.union = yyLOCAL - case 623: + case 617: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3508 +//line sql.y:3471 { yyLOCAL = &JtOnResponse{ResponseType: NullJSONType} } yyVAL.union = yyLOCAL - case 624: + case 618: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3512 +//line sql.y:3475 { yyLOCAL = &JtOnResponse{ResponseType: DefaultJSONType, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 625: + case 619: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3518 +//line sql.y:3481 { yyLOCAL = RangeType } yyVAL.union = yyLOCAL - case 626: + case 620: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3522 +//line sql.y:3485 { yyLOCAL = ListType } yyVAL.union = yyLOCAL - case 627: + case 621: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3527 +//line sql.y:3490 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 628: + case 622: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3531 +//line sql.y:3494 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 629: + case 623: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3536 +//line sql.y:3499 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 630: + case 624: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3540 +//line sql.y:3503 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 631: + case 625: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3546 +//line sql.y:3509 { yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}} } yyVAL.union = yyLOCAL - case 632: + case 626: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3550 +//line sql.y:3513 { yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 633: + case 627: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3554 +//line sql.y:3517 { yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()} } yyVAL.union = yyLOCAL - case 634: + case 628: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3558 +//line sql.y:3521 { yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 635: + case 629: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3562 +//line sql.y:3525 { yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true} } yyVAL.union = yyLOCAL - case 636: + case 630: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3566 +//line sql.y:3529 { yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 637: + case 631: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3570 +//line sql.y:3533 { yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true} } yyVAL.union = yyLOCAL - case 638: + case 632: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3574 +//line sql.y:3537 { yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 639: + case 633: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3578 +//line sql.y:3541 { yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true} } yyVAL.union = yyLOCAL - case 640: + case 634: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3582 +//line sql.y:3545 { yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 641: + case 635: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3586 +//line sql.y:3549 { yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].identifierCI}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()} } yyVAL.union = yyLOCAL - case 642: + case 636: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3590 +//line sql.y:3553 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 643: + case 637: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3594 +//line sql.y:3557 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 644: + case 638: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3598 +//line sql.y:3561 { yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 645: + case 639: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3602 +//line sql.y:3565 { yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true} } yyVAL.union = yyLOCAL - case 646: + case 640: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3606 +//line sql.y:3569 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 647: + case 641: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3610 +//line sql.y:3573 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 648: + case 642: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3614 +//line sql.y:3577 { yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 649: + case 643: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3618 +//line sql.y:3581 { yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true} } yyVAL.union = yyLOCAL - case 650: + case 644: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3622 +//line sql.y:3585 { yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 651: + case 645: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3626 +//line sql.y:3589 { yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true} } yyVAL.union = yyLOCAL - case 652: + case 646: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3630 +//line sql.y:3593 { yyLOCAL = &PartitionSpec{Action: UpgradeAction} } yyVAL.union = yyLOCAL - case 653: + case 647: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3635 +//line sql.y:3598 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 654: + case 648: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3639 +//line sql.y:3602 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 655: + case 649: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3643 +//line sql.y:3606 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 656: + case 650: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3649 +//line sql.y:3612 { yyLOCAL = []*PartitionDefinition{yyDollar[1].partDefUnion()} } yyVAL.union = yyLOCAL - case 657: + case 651: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3653 +//line sql.y:3616 { yySLICE := (*[]*PartitionDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].partDefUnion()) } - case 658: + case 652: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3659 +//line sql.y:3622 { yyVAL.partDefUnion().Options = yyDollar[2].partitionDefinitionOptionsUnion() } - case 659: + case 653: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3664 +//line sql.y:3627 { yyLOCAL = &PartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 660: + case 654: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3668 +//line sql.y:3631 { yyDollar[1].partitionDefinitionOptionsUnion().ValueRange = yyDollar[2].partitionValueRangeUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 661: + case 655: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3673 +//line sql.y:3636 { yyDollar[1].partitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 662: + case 656: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3678 +//line sql.y:3641 { yyDollar[1].partitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 663: + case 657: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3683 +//line sql.y:3646 { yyDollar[1].partitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 664: + case 658: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3688 +//line sql.y:3651 { yyDollar[1].partitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 665: + case 659: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3693 +//line sql.y:3656 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 666: + case 660: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3699 +//line sql.y:3662 { val := yyDollar[2].integerUnion() yyDollar[1].partitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 667: + case 661: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3705 +//line sql.y:3668 { yyDollar[1].partitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 668: + case 662: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3710 +//line sql.y:3673 { yyDollar[1].partitionDefinitionOptionsUnion().SubPartitionDefinitions = yyDollar[2].subPartitionDefinitionsUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 669: + case 663: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3716 +//line sql.y:3679 { yyLOCAL = yyDollar[2].subPartitionDefinitionsUnion() } yyVAL.union = yyLOCAL - case 670: + case 664: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3722 +//line sql.y:3685 { yyLOCAL = SubPartitionDefinitions{yyDollar[1].subPartitionDefinitionUnion()} } yyVAL.union = yyLOCAL - case 671: + case 665: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3726 +//line sql.y:3689 { yySLICE := (*SubPartitionDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].subPartitionDefinitionUnion()) } - case 672: + case 666: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SubPartitionDefinition -//line sql.y:3732 +//line sql.y:3695 { yyLOCAL = &SubPartitionDefinition{Name: yyDollar[2].identifierCI, Options: yyDollar[3].subPartitionDefinitionOptionsUnion()} } yyVAL.union = yyLOCAL - case 673: + case 667: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3737 +//line sql.y:3700 { yyLOCAL = &SubPartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 674: + case 668: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3741 +//line sql.y:3704 { yyDollar[1].subPartitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 675: + case 669: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3746 +//line sql.y:3709 { yyDollar[1].subPartitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 676: + case 670: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3751 +//line sql.y:3714 { yyDollar[1].subPartitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 677: + case 671: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3756 +//line sql.y:3719 { yyDollar[1].subPartitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 678: + case 672: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3761 +//line sql.y:3724 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MaxRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 679: + case 673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3767 +//line sql.y:3730 { val := yyDollar[2].integerUnion() yyDollar[1].subPartitionDefinitionOptionsUnion().MinRows = &val yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 680: + case 674: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3773 +//line sql.y:3736 { yyDollar[1].subPartitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 681: + case 675: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3780 +//line sql.y:3743 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13901,10 +13886,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 682: + case 676: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3787 +//line sql.y:3750 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -13912,10 +13897,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 683: + case 677: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3794 +//line sql.y:3757 { yyLOCAL = &PartitionValueRange{ Type: InType, @@ -13923,131 +13908,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 684: + case 678: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3802 +//line sql.y:3765 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 685: + case 679: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3806 +//line sql.y:3769 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 686: + case 680: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionEngine -//line sql.y:3812 +//line sql.y:3775 { yyLOCAL = &PartitionEngine{Storage: yyDollar[1].booleanUnion(), Name: yyDollar[4].identifierCS.String()} } yyVAL.union = yyLOCAL - case 687: + case 681: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:3818 +//line sql.y:3781 { yyLOCAL = NewStrLiteral(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 688: + case 682: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3824 +//line sql.y:3787 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 689: + case 683: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3830 +//line sql.y:3793 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 690: + case 684: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3836 +//line sql.y:3799 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 691: + case 685: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3842 +//line sql.y:3805 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 692: + case 686: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3848 +//line sql.y:3811 { yyVAL.str = yyDollar[3].identifierCS.String() } - case 693: + case 687: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinition -//line sql.y:3854 +//line sql.y:3817 { yyLOCAL = &PartitionDefinition{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 694: + case 688: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3860 +//line sql.y:3823 { yyVAL.str = "" } - case 695: + case 689: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3864 +//line sql.y:3827 { yyVAL.str = "" } - case 696: + case 690: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3870 +//line sql.y:3833 { yyLOCAL = &RenameTable{TablePairs: yyDollar[3].renameTablePairsUnion()} } yyVAL.union = yyLOCAL - case 697: + case 691: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*RenameTablePair -//line sql.y:3876 +//line sql.y:3839 { yyLOCAL = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } yyVAL.union = yyLOCAL - case 698: + case 692: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3880 +//line sql.y:3843 { yySLICE := (*[]*RenameTablePair)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 699: + case 693: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3886 +//line sql.y:3849 { yyLOCAL = &DropTable{FromTables: yyDollar[6].tableNamesUnion(), IfExists: yyDollar[5].booleanUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), Temp: yyDollar[3].booleanUnion()} } yyVAL.union = yyLOCAL - case 700: + case 694: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3890 +//line sql.y:3853 { // Change this to an alter statement if yyDollar[4].identifierCI.Lowered() == "primary" { @@ -14057,1224 +14042,1224 @@ yydefault: } } yyVAL.union = yyLOCAL - case 701: + case 695: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3899 +//line sql.y:3862 { yyLOCAL = &DropView{FromTables: yyDollar[5].tableNamesUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 702: + case 696: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3903 +//line sql.y:3866 { yyLOCAL = &DropDatabase{Comments: Comments(yyDollar[2].strs).Parsed(), DBName: yyDollar[5].identifierCS, IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 703: + case 697: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3909 +//line sql.y:3872 { yyLOCAL = &TruncateTable{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 704: + case 698: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3913 +//line sql.y:3876 { yyLOCAL = &TruncateTable{Table: yyDollar[2].tableName} } yyVAL.union = yyLOCAL - case 705: + case 699: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3919 +//line sql.y:3882 { yyLOCAL = &OtherRead{} } yyVAL.union = yyLOCAL - case 706: + case 700: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3925 +//line sql.y:3888 { yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 707: + case 701: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3929 +//line sql.y:3892 { yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 708: + case 702: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3933 +//line sql.y:3896 { yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 709: + case 703: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3937 +//line sql.y:3900 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 710: + case 704: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3941 +//line sql.y:3904 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 711: + case 705: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3945 +//line sql.y:3908 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 712: + case 706: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3949 +//line sql.y:3912 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 713: + case 707: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3953 +//line sql.y:3916 { yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 714: + case 708: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3957 +//line sql.y:3920 { yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 715: + case 709: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3961 +//line sql.y:3924 { yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 716: + case 710: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3965 +//line sql.y:3928 { yyLOCAL = &Show{&ShowBasic{Command: Privilege}} } yyVAL.union = yyLOCAL - case 717: + case 711: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3969 +//line sql.y:3932 { yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 718: + case 712: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3973 +//line sql.y:3936 { yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 719: + case 713: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3977 +//line sql.y:3940 { yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 720: + case 714: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3981 +//line sql.y:3944 { yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 721: + case 715: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3985 +//line sql.y:3948 { yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 722: + case 716: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3989 +//line sql.y:3952 { yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 723: + case 717: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3993 +//line sql.y:3956 { yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 724: + case 718: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3997 +//line sql.y:3960 { yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].identifierCS, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 725: + case 719: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4001 +//line sql.y:3964 { yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 726: + case 720: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4005 +//line sql.y:3968 { yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 727: + case 721: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4009 +//line sql.y:3972 { yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 728: + case 722: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4013 +//line sql.y:3976 { yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 729: + case 723: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4017 +//line sql.y:3980 { yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 730: + case 724: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4021 +//line sql.y:3984 { yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 731: + case 725: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4025 +//line sql.y:3988 { yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 732: + case 726: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4029 +//line sql.y:3992 { yyLOCAL = &Show{&ShowBasic{Command: Engines}} } yyVAL.union = yyLOCAL - case 733: + case 727: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4033 +//line sql.y:3996 { yyLOCAL = &Show{&ShowBasic{Command: Plugins}} } yyVAL.union = yyLOCAL - case 734: + case 728: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4037 +//line sql.y:4000 { yyLOCAL = &Show{&ShowBasic{Command: GtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 735: + case 729: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4041 +//line sql.y:4004 { yyLOCAL = &Show{&ShowBasic{Command: VGtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 736: + case 730: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4045 +//line sql.y:4008 { yyLOCAL = &Show{&ShowBasic{Command: VitessVariables, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 737: + case 731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4049 +//line sql.y:4012 { yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 738: + case 732: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4053 +//line sql.y:4016 { yyLOCAL = &ShowMigrationLogs{UUID: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 739: + case 733: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4057 +//line sql.y:4020 { yyLOCAL = &ShowThrottledApps{} } yyVAL.union = yyLOCAL - case 740: + case 734: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4061 +//line sql.y:4024 { yyLOCAL = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 741: + case 735: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4065 +//line sql.y:4028 { yyLOCAL = &ShowThrottlerStatus{} } yyVAL.union = yyLOCAL - case 742: + case 736: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4069 +//line sql.y:4032 { yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} } yyVAL.union = yyLOCAL - case 743: + case 737: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4073 +//line sql.y:4036 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} } yyVAL.union = yyLOCAL - case 744: + case 738: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4077 +//line sql.y:4040 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} } yyVAL.union = yyLOCAL - case 745: + case 739: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4081 +//line sql.y:4044 { yyLOCAL = &Show{&ShowBasic{Command: Warnings}} } yyVAL.union = yyLOCAL - case 746: + case 740: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4085 +//line sql.y:4048 { yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 747: + case 741: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4089 +//line sql.y:4052 { yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 748: + case 742: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4093 +//line sql.y:4056 { yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} } yyVAL.union = yyLOCAL - case 749: + case 743: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4100 +//line sql.y:4063 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} } yyVAL.union = yyLOCAL - case 750: + case 744: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4104 +//line sql.y:4067 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 751: + case 745: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4108 +//line sql.y:4071 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} } yyVAL.union = yyLOCAL - case 752: + case 746: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4112 +//line sql.y:4075 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 753: + case 747: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4116 +//line sql.y:4079 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 754: + case 748: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4120 +//line sql.y:4083 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 755: + case 749: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4124 +//line sql.y:4087 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 756: + case 750: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4128 +//line sql.y:4091 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 757: + case 751: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4132 +//line sql.y:4095 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 758: + case 752: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4138 +//line sql.y:4101 { yyVAL.str = "" } - case 759: + case 753: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4142 +//line sql.y:4105 { yyVAL.str = "extended " } - case 760: + case 754: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4148 +//line sql.y:4111 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 761: + case 755: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4152 +//line sql.y:4115 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 762: + case 756: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4158 +//line sql.y:4121 { yyVAL.str = string(yyDollar[1].str) } - case 763: + case 757: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4162 +//line sql.y:4125 { yyVAL.str = string(yyDollar[1].str) } - case 764: + case 758: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4168 +//line sql.y:4131 { yyVAL.identifierCS = NewIdentifierCS("") } - case 765: + case 759: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4172 +//line sql.y:4135 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 766: + case 760: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4176 +//line sql.y:4139 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 767: + case 761: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4182 +//line sql.y:4145 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 768: + case 762: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4186 +//line sql.y:4149 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 769: + case 763: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4190 +//line sql.y:4153 { yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 770: + case 764: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4196 +//line sql.y:4159 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 771: + case 765: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4200 +//line sql.y:4163 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 772: + case 766: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4206 +//line sql.y:4169 { yyVAL.empty = struct{}{} } - case 773: + case 767: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4210 +//line sql.y:4173 { yyVAL.empty = struct{}{} } - case 774: + case 768: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4214 +//line sql.y:4177 { yyVAL.empty = struct{}{} } - case 775: + case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4220 +//line sql.y:4183 { yyVAL.str = string(yyDollar[1].str) } - case 776: + case 770: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4224 +//line sql.y:4187 { yyVAL.str = string(yyDollar[1].str) } - case 777: + case 771: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4230 +//line sql.y:4193 { yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL - case 778: + case 772: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4234 +//line sql.y:4197 { yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} } yyVAL.union = yyLOCAL - case 779: + case 773: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4238 +//line sql.y:4201 { yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} } yyVAL.union = yyLOCAL - case 780: + case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4245 +//line sql.y:4208 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 781: + case 775: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4249 +//line sql.y:4212 { yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) } - case 782: + case 776: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4253 +//line sql.y:4216 { yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) } - case 783: + case 777: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4257 +//line sql.y:4220 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 784: + case 778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4264 +//line sql.y:4227 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 785: + case 779: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4268 +//line sql.y:4231 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 786: + case 780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4274 +//line sql.y:4237 { yyLOCAL = &Commit{} } yyVAL.union = yyLOCAL - case 787: + case 781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4280 +//line sql.y:4243 { yyLOCAL = &Rollback{} } yyVAL.union = yyLOCAL - case 788: + case 782: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4284 +//line sql.y:4247 { yyLOCAL = &SRollback{Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 789: + case 783: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4289 +//line sql.y:4252 { yyVAL.empty = struct{}{} } - case 790: + case 784: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4291 +//line sql.y:4254 { yyVAL.empty = struct{}{} } - case 791: + case 785: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4294 +//line sql.y:4257 { yyVAL.empty = struct{}{} } - case 792: + case 786: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4296 +//line sql.y:4259 { yyVAL.empty = struct{}{} } - case 793: + case 787: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4300 +//line sql.y:4263 { yyLOCAL = &Savepoint{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 794: + case 788: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4306 +//line sql.y:4269 { yyLOCAL = &Release{Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 795: + case 789: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4311 +//line sql.y:4274 { yyLOCAL = EmptyType } yyVAL.union = yyLOCAL - case 796: + case 790: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4315 +//line sql.y:4278 { yyLOCAL = JSONType } yyVAL.union = yyLOCAL - case 797: + case 791: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4319 +//line sql.y:4282 { yyLOCAL = TreeType } yyVAL.union = yyLOCAL - case 798: + case 792: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4323 +//line sql.y:4286 { yyLOCAL = VitessType } yyVAL.union = yyLOCAL - case 799: + case 793: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4327 +//line sql.y:4290 { yyLOCAL = VTExplainType } yyVAL.union = yyLOCAL - case 800: + case 794: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4331 +//line sql.y:4294 { yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL - case 801: + case 795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4335 +//line sql.y:4298 { yyLOCAL = AnalyzeType } yyVAL.union = yyLOCAL - case 802: + case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4341 +//line sql.y:4304 { yyVAL.str = yyDollar[1].str } - case 803: + case 797: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4345 +//line sql.y:4308 { yyVAL.str = yyDollar[1].str } - case 804: + case 798: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4349 +//line sql.y:4312 { yyVAL.str = yyDollar[1].str } - case 805: + case 799: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4355 +//line sql.y:4318 { yyLOCAL = yyDollar[1].selStmtUnion() } yyVAL.union = yyLOCAL - case 806: + case 800: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4359 +//line sql.y:4322 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 807: + case 801: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4363 +//line sql.y:4326 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 808: + case 802: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4367 +//line sql.y:4330 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 809: + case 803: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4372 +//line sql.y:4335 { yyVAL.str = "" } - case 810: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4376 +//line sql.y:4339 { yyVAL.str = yyDollar[1].identifierCI.val } - case 811: + case 805: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4380 +//line sql.y:4343 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 812: + case 806: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4386 +//line sql.y:4349 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 813: + case 807: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4390 +//line sql.y:4353 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 814: + case 808: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4396 +//line sql.y:4359 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 815: + case 809: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4400 +//line sql.y:4363 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 816: + case 810: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4406 +//line sql.y:4369 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 817: + case 811: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4412 +//line sql.y:4375 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 818: + case 812: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4416 +//line sql.y:4379 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 819: + case 813: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4422 +//line sql.y:4385 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 820: + case 814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4428 +//line sql.y:4391 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 821: + case 815: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4432 +//line sql.y:4395 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 822: + case 816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4436 +//line sql.y:4399 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 823: + case 817: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4440 +//line sql.y:4403 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 824: + case 818: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4446 +//line sql.y:4409 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 825: + case 819: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4452 +//line sql.y:4415 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 826: + case 820: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4458 +//line sql.y:4421 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 827: + case 821: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4462 +//line sql.y:4425 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 828: + case 822: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4466 +//line sql.y:4429 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 829: + case 823: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4470 +//line sql.y:4433 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 830: + case 824: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4474 +//line sql.y:4437 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 831: + case 825: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4478 +//line sql.y:4441 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 832: + case 826: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4484 +//line sql.y:4447 { yyVAL.strs = []string{yyDollar[1].str} } - case 833: + case 827: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4488 +//line sql.y:4451 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 834: + case 828: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4494 +//line sql.y:4457 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 835: + case 829: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4498 +//line sql.y:4461 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 836: + case 830: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4502 +//line sql.y:4465 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 837: + case 831: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4506 +//line sql.y:4469 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 838: + case 832: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4510 +//line sql.y:4473 { yyVAL.str = string(yyDollar[1].str) } - case 839: + case 833: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4514 +//line sql.y:4477 { yyVAL.str = string(yyDollar[1].str) } - case 840: + case 834: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4518 +//line sql.y:4481 { yyVAL.str = string(yyDollar[1].str) } - case 841: + case 835: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4522 +//line sql.y:4485 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } - case 842: + case 836: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4526 +//line sql.y:4489 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 843: + case 837: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4530 +//line sql.y:4493 { yyVAL.str = string(yyDollar[1].str) } - case 844: + case 838: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4534 +//line sql.y:4497 { yyVAL.str = string(yyDollar[1].str) } - case 845: + case 839: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4538 +//line sql.y:4501 { yyVAL.str = string(yyDollar[1].str) } - case 846: + case 840: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4543 +//line sql.y:4506 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 847: + case 841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4547 +//line sql.y:4510 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 848: + case 842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4551 +//line sql.y:4514 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 849: + case 843: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4556 +//line sql.y:4519 { yyVAL.str = "" } - case 850: + case 844: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4560 +//line sql.y:4523 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 851: + case 845: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4565 +//line sql.y:4528 { setAllowComments(yylex, true) } - case 852: + case 846: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4569 +//line sql.y:4532 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 853: + case 847: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4575 +//line sql.y:4538 { yyVAL.strs = nil } - case 854: + case 848: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4579 +//line sql.y:4542 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 855: + case 849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4585 +//line sql.y:4548 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 856: + case 850: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4589 +//line sql.y:4552 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 857: + case 851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4593 +//line sql.y:4556 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 858: + case 852: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4598 +//line sql.y:4561 { yyVAL.str = "" } - case 859: + case 853: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4602 +//line sql.y:4565 { yyVAL.str = SQLNoCacheStr } - case 860: + case 854: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4606 +//line sql.y:4569 { yyVAL.str = SQLCacheStr } - case 861: + case 855: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4611 +//line sql.y:4574 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 862: + case 856: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4615 +//line sql.y:4578 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 863: + case 857: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4619 +//line sql.y:4582 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 864: + case 858: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4625 +//line sql.y:4588 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 865: + case 859: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4629 +//line sql.y:4592 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -15283,595 +15268,595 @@ yydefault: } } yyVAL.union = yyLOCAL - case 866: + case 860: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4639 +//line sql.y:4602 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 867: + case 861: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4644 +//line sql.y:4607 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 868: + case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4648 +//line sql.y:4611 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 869: + case 863: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4654 +//line sql.y:4617 { yyLOCAL = &DeallocateStmt{Type: DeallocateType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 870: + case 864: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4658 +//line sql.y:4621 { yyLOCAL = &DeallocateStmt{Type: DropType, Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 871: + case 865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4663 +//line sql.y:4626 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 872: + case 866: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4667 +//line sql.y:4630 { yyLOCAL = yyDollar[1].selectExprsUnion() } yyVAL.union = yyLOCAL - case 873: + case 867: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4672 +//line sql.y:4635 { yyVAL.strs = nil } - case 874: + case 868: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4676 +//line sql.y:4639 { yyVAL.strs = []string{yyDollar[1].str} } - case 875: + case 869: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4680 +//line sql.y:4643 { // 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 876: + case 870: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4684 +//line sql.y:4647 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 877: + case 871: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4688 +//line sql.y:4651 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 878: + case 872: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4694 +//line sql.y:4657 { yyVAL.str = SQLNoCacheStr } - case 879: + case 873: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4698 +//line sql.y:4661 { yyVAL.str = SQLCacheStr } - case 880: + case 874: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4702 +//line sql.y:4665 { yyVAL.str = DistinctStr } - case 881: + case 875: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4706 +//line sql.y:4669 { yyVAL.str = DistinctStr } - case 882: + case 876: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4710 +//line sql.y:4673 { yyVAL.str = StraightJoinHint } - case 883: + case 877: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4714 +//line sql.y:4677 { yyVAL.str = SQLCalcFoundRowsStr } - case 884: + case 878: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4718 +//line sql.y:4681 { yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway } - case 885: + case 879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4724 +//line sql.y:4687 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 886: + case 880: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4728 +//line sql.y:4691 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 887: + case 881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4734 +//line sql.y:4697 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 888: + case 882: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4738 +//line sql.y:4701 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 889: + case 883: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4742 +//line sql.y:4705 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 890: + case 884: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4746 +//line sql.y:4709 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 891: + case 885: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4751 +//line sql.y:4714 { yyVAL.identifierCI = IdentifierCI{} } - case 892: + case 886: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4755 +//line sql.y:4718 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 893: + case 887: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4759 +//line sql.y:4722 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 895: + case 889: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4766 +//line sql.y:4729 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 896: + case 890: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4771 +//line sql.y:4734 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 897: + case 891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4775 +//line sql.y:4738 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 898: + case 892: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4781 +//line sql.y:4744 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 899: + case 893: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4787 +//line sql.y:4750 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 900: + case 894: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4791 +//line sql.y:4754 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 903: + case 897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4801 +//line sql.y:4764 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 904: + case 898: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4805 +//line sql.y:4768 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 905: + case 899: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4809 +//line sql.y:4772 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 906: + case 900: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4813 +//line sql.y:4776 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 907: + case 901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4819 +//line sql.y:4782 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 908: + case 902: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4823 +//line sql.y:4786 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 909: + case 903: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4829 +//line sql.y:4792 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 910: + case 904: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4833 +//line sql.y:4796 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 911: + case 905: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4838 +//line sql.y:4801 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 912: + case 906: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4842 +//line sql.y:4805 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 913: + case 907: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4847 +//line sql.y:4810 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 914: + case 908: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4851 +//line sql.y:4814 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 915: + case 909: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4857 +//line sql.y:4820 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 916: + case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4861 +//line sql.y:4824 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 917: + case 911: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4867 +//line sql.y:4830 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 918: + case 912: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4871 +//line sql.y:4834 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 919: + case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4877 +//line sql.y:4840 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 920: + case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4881 +//line sql.y:4844 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 921: + case 915: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4885 +//line sql.y:4848 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 922: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4889 +//line sql.y:4852 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 923: + case 917: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:4895 +//line sql.y:4858 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 924: + case 918: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4899 +//line sql.y:4862 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 925: + case 919: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4912 +//line sql.y:4875 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 926: + case 920: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4916 +//line sql.y:4879 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 927: + case 921: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4920 +//line sql.y:4883 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 928: + case 922: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4924 +//line sql.y:4887 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 929: + case 923: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4930 +//line sql.y:4893 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 930: + case 924: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4932 +//line sql.y:4895 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 931: + case 925: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4936 +//line sql.y:4899 { yyVAL.joinCondition = &JoinCondition{} } - case 932: + case 926: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4938 +//line sql.y:4901 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 933: + case 927: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4942 +//line sql.y:4905 { yyVAL.joinCondition = &JoinCondition{} } - case 934: + case 928: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4944 +//line sql.y:4907 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 935: + case 929: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4947 +//line sql.y:4910 { yyVAL.empty = struct{}{} } - case 936: + case 930: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4949 +//line sql.y:4912 { yyVAL.empty = struct{}{} } - case 937: + case 931: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4952 +//line sql.y:4915 { yyVAL.identifierCS = NewIdentifierCS("") } - case 938: + case 932: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4956 +//line sql.y:4919 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 939: + case 933: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4960 +//line sql.y:4923 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 941: + case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4967 +//line sql.y:4930 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 942: + case 936: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4973 +//line sql.y:4936 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 943: + case 937: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4977 +//line sql.y:4940 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 944: + case 938: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4981 +//line sql.y:4944 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 945: + case 939: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:4987 +//line sql.y:4950 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 946: + case 940: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:4993 +//line sql.y:4956 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 947: + case 941: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:4997 +//line sql.y:4960 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 948: + case 942: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5001 +//line sql.y:4964 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 949: + case 943: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5005 +//line sql.y:4968 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 950: + case 944: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5011 +//line sql.y:4974 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 951: + case 945: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5015 +//line sql.y:4978 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -15880,593 +15865,593 @@ yydefault: } } yyVAL.union = yyLOCAL - case 952: + case 946: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5025 +//line sql.y:4988 { yyVAL.tableName = yyDollar[2].tableName } - case 953: + case 947: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5029 +//line sql.y:4992 { yyVAL.tableName = yyDollar[1].tableName } - case 954: + case 948: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5035 +//line sql.y:4998 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 955: + case 949: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5039 +//line sql.y:5002 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 956: + case 950: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5045 +//line sql.y:5008 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 957: + case 951: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5050 +//line sql.y:5013 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 958: + case 952: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5054 +//line sql.y:5017 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 959: + case 953: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5060 +//line sql.y:5023 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 960: + case 954: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5064 +//line sql.y:5027 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 961: + case 955: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5070 +//line sql.y:5033 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 962: + case 956: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5074 +//line sql.y:5037 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 963: + case 957: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5078 +//line sql.y:5041 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 964: + case 958: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5082 +//line sql.y:5045 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 965: + case 959: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5087 +//line sql.y:5050 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 966: + case 960: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5091 +//line sql.y:5054 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 967: + case 961: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5095 +//line sql.y:5058 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 968: + case 962: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5099 +//line sql.y:5062 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 969: + case 963: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5105 +//line sql.y:5068 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 970: + case 964: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5109 +//line sql.y:5072 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 971: + case 965: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5116 +//line sql.y:5079 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 972: + case 966: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5120 +//line sql.y:5083 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 973: + case 967: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5124 +//line sql.y:5087 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 974: + case 968: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5128 +//line sql.y:5091 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 975: + case 969: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5132 +//line sql.y:5095 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 976: + case 970: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5136 +//line sql.y:5099 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 977: + case 971: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5140 +//line sql.y:5103 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 978: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5146 +//line sql.y:5109 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 979: + case 973: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5150 +//line sql.y:5113 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 980: + case 974: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5154 +//line sql.y:5117 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 981: + case 975: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5158 +//line sql.y:5121 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 982: + case 976: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5164 +//line sql.y:5127 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 983: + case 977: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5168 +//line sql.y:5131 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 984: + case 978: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5172 +//line sql.y:5135 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 985: + case 979: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5176 +//line sql.y:5139 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 986: + case 980: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5180 +//line sql.y:5143 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 987: + case 981: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5184 +//line sql.y:5147 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 988: + case 982: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5188 +//line sql.y:5151 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 989: + case 983: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5192 +//line sql.y:5155 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 990: + case 984: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5196 +//line sql.y:5159 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 991: + case 985: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5200 +//line sql.y:5163 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 992: + case 986: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5204 +//line sql.y:5167 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 993: + case 987: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5210 +//line sql.y:5173 { } - case 994: + case 988: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5213 +//line sql.y:5176 { } - case 995: + case 989: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5219 +//line sql.y:5182 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 996: + case 990: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5223 +//line sql.y:5186 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 997: + case 991: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5227 +//line sql.y:5190 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 998: + case 992: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5231 +//line sql.y:5194 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 999: + case 993: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5235 +//line sql.y:5198 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1000: + case 994: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5239 +//line sql.y:5202 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1001: + case 995: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5243 +//line sql.y:5206 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1002: + case 996: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5247 +//line sql.y:5210 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1003: + case 997: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5251 +//line sql.y:5214 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1004: + case 998: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5255 +//line sql.y:5218 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1005: + case 999: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5259 +//line sql.y:5222 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1006: + case 1000: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5263 +//line sql.y:5226 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1007: + case 1001: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5267 +//line sql.y:5230 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1008: + case 1002: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5273 +//line sql.y:5236 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1009: + case 1003: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5277 +//line sql.y:5240 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1010: + case 1004: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5281 +//line sql.y:5244 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1011: + case 1005: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5285 +//line sql.y:5248 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1012: + case 1006: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5289 +//line sql.y:5252 { yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1013: + case 1007: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5293 +//line sql.y:5256 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1014: + case 1008: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5297 +//line sql.y:5260 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1015: + case 1009: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5301 +//line sql.y:5264 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1016: + case 1010: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5305 +//line sql.y:5268 { yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL - case 1017: + case 1011: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5309 +//line sql.y:5272 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1012: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5313 +//line sql.y:5276 { yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1019: + case 1013: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5317 +//line sql.y:5280 { yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1020: + case 1014: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5321 +//line sql.y:5284 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1021: + case 1015: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5325 +//line sql.y:5288 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1022: + case 1016: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5329 +//line sql.y:5292 { yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1023: + case 1017: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5333 +//line sql.y:5296 { yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL - case 1024: + case 1018: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5337 +//line sql.y:5300 { yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL - case 1025: + case 1019: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5341 +//line sql.y:5304 { yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1026: + case 1020: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5345 +//line sql.y:5308 { yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1027: + case 1021: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5349 +//line sql.y:5312 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -16475,18 +16460,18 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1028: + case 1022: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5357 +//line sql.y:5320 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1029: + case 1023: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5361 +//line sql.y:5324 { // INTERVAL can trigger a shift / reduce conflict. We want // to shift here for the interval rule. In case we do have @@ -16495,2192 +16480,2192 @@ yydefault: yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1030: + case 1024: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5369 +//line sql.y:5332 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1025: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5373 +//line sql.y:5336 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1032: + case 1026: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5377 +//line sql.y:5340 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1033: + case 1027: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5383 +//line sql.y:5346 { yyLOCAL = &IntervalExpr{Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].identifierCI.String()} } yyVAL.union = yyLOCAL - case 1034: + case 1028: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5389 +//line sql.y:5352 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1035: + case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5393 +//line sql.y:5356 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1036: + case 1030: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5399 +//line sql.y:5362 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1037: + case 1031: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5403 +//line sql.y:5366 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1038: + case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5409 +//line sql.y:5372 { yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL - case 1039: + case 1033: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5413 +//line sql.y:5376 { yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL - case 1040: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5417 +//line sql.y:5380 { yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL - case 1041: + case 1035: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5423 +//line sql.y:5386 { yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL - case 1042: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5427 +//line sql.y:5390 { yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL - case 1043: + case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5434 +//line sql.y:5397 { yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL - case 1044: + case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5438 +//line sql.y:5401 { yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL - case 1045: + case 1039: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5442 +//line sql.y:5405 { yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL - case 1046: + case 1040: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5446 +//line sql.y:5409 { yyLOCAL = RankExprType } yyVAL.union = yyLOCAL - case 1047: + case 1041: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5450 +//line sql.y:5413 { yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL - case 1048: + case 1042: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5456 +//line sql.y:5419 { yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL - case 1049: + case 1043: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5460 +//line sql.y:5423 { yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL - case 1050: + case 1044: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5464 +//line sql.y:5427 { yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL - case 1051: + case 1045: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5468 +//line sql.y:5431 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1052: + case 1046: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5472 +//line sql.y:5435 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1053: + case 1047: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5478 +//line sql.y:5441 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1054: + case 1048: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5482 +//line sql.y:5445 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1055: + case 1049: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5487 +//line sql.y:5450 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1056: + case 1050: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5491 +//line sql.y:5454 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1057: + case 1051: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5497 +//line sql.y:5460 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1052: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5501 +//line sql.y:5464 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1059: + case 1053: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5506 +//line sql.y:5469 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1060: + case 1054: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5510 +//line sql.y:5473 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1061: + case 1055: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5515 +//line sql.y:5478 { } - case 1062: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5518 +//line sql.y:5481 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1063: + case 1057: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5524 +//line sql.y:5487 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1064: + case 1058: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5530 +//line sql.y:5493 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1065: + case 1059: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5534 +//line sql.y:5497 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1066: + case 1060: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5539 +//line sql.y:5502 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1068: + case 1062: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5546 +//line sql.y:5509 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1069: + case 1063: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5552 +//line sql.y:5515 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1070: + case 1064: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5556 +//line sql.y:5519 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1071: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5562 +//line sql.y:5525 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1072: + case 1066: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5566 +//line sql.y:5529 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1073: + case 1067: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5572 +//line sql.y:5535 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1074: + case 1068: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5576 +//line sql.y:5539 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1075: + case 1069: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5581 +//line sql.y:5544 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1077: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5588 +//line sql.y:5551 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1078: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5594 +//line sql.y:5557 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1079: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5598 +//line sql.y:5561 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1080: + case 1074: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5604 +//line sql.y:5567 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1081: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5610 +//line sql.y:5573 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1082: + case 1076: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5614 +//line sql.y:5577 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1083: + case 1077: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5620 +//line sql.y:5583 { yyVAL.str = "" } - case 1084: + case 1078: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5624 +//line sql.y:5587 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1085: + case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5630 +//line sql.y:5593 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1086: + case 1080: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5634 +//line sql.y:5597 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1087: + case 1081: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5641 +//line sql.y:5604 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1088: + case 1082: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5645 +//line sql.y:5608 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1089: + case 1083: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5649 +//line sql.y:5612 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1090: + case 1084: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5653 +//line sql.y:5616 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1091: + case 1085: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5659 +//line sql.y:5622 { yyLOCAL = EqualOp } yyVAL.union = yyLOCAL - case 1092: + case 1086: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5663 +//line sql.y:5626 { yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL - case 1093: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5667 +//line sql.y:5630 { yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL - case 1094: + case 1088: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5671 +//line sql.y:5634 { yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL - case 1095: + case 1089: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5675 +//line sql.y:5638 { yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL - case 1096: + case 1090: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5679 +//line sql.y:5642 { yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL - case 1097: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5683 +//line sql.y:5646 { yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL - case 1098: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5689 +//line sql.y:5652 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1099: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5693 +//line sql.y:5656 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1100: + case 1094: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5697 +//line sql.y:5660 { yyLOCAL = ListArg(yyDollar[1].str[2:]) bindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1101: + case 1095: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5704 +//line sql.y:5667 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1102: + case 1096: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5710 +//line sql.y:5673 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1103: + case 1097: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5714 +//line sql.y:5677 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1104: + case 1098: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5724 +//line sql.y:5687 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1105: + case 1099: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5728 +//line sql.y:5691 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1106: + case 1100: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5738 +//line sql.y:5701 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1107: + case 1101: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5742 +//line sql.y:5705 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1108: + case 1102: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5746 +//line sql.y:5709 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1109: + case 1103: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5750 +//line sql.y:5713 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1110: + case 1104: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5754 +//line sql.y:5717 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1111: + case 1105: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5758 +//line sql.y:5721 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1112: + case 1106: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5762 +//line sql.y:5725 { yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1113: + case 1107: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5766 +//line sql.y:5729 { yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 1114: + case 1108: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:5770 +//line sql.y:5733 { yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1115: + case 1109: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5774 +//line sql.y:5737 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1116: + case 1110: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5785 +//line sql.y:5748 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL - case 1117: + case 1111: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5789 +//line sql.y:5752 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1118: + case 1112: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5795 +//line sql.y:5758 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL - case 1119: + case 1113: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5799 +//line sql.y:5762 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1120: + case 1114: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5804 +//line sql.y:5767 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1121: + case 1115: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5808 +//line sql.y:5771 { yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL - case 1122: + case 1116: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5812 +//line sql.y:5775 { yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1123: + case 1117: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5816 +//line sql.y:5779 { yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1124: + case 1118: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5820 +//line sql.y:5783 { yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1125: + case 1119: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5824 +//line sql.y:5787 { yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1126: + case 1120: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5828 +//line sql.y:5791 { yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1127: + case 1121: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5832 +//line sql.y:5795 { yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1128: + case 1122: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5836 +//line sql.y:5799 { yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1129: + case 1123: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5840 +//line sql.y:5803 { yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1130: + case 1124: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5844 +//line sql.y:5807 { yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1131: + case 1125: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5848 +//line sql.y:5811 { yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1132: + case 1126: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5852 +//line sql.y:5815 { yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1133: + case 1127: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5856 +//line sql.y:5819 { yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1134: + case 1128: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5860 +//line sql.y:5823 { yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1129: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5864 +//line sql.y:5827 { yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1136: + case 1130: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5868 +//line sql.y:5831 { yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1137: + case 1131: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5872 +//line sql.y:5835 { yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1132: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5876 +//line sql.y:5839 { yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1139: + case 1133: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5880 +//line sql.y:5843 { yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].identifierCI.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1140: + case 1134: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5884 +//line sql.y:5847 { yyLOCAL = &ExtractFuncExpr{IntervalTypes: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1141: + case 1135: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5888 +//line sql.y:5851 { yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1142: + case 1136: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5892 +//line sql.y:5855 { yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1143: + case 1137: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5896 +//line sql.y:5859 { yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1144: + case 1138: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5900 +//line sql.y:5863 { yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1145: + case 1139: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5904 +//line sql.y:5867 { yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1146: + case 1140: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5908 +//line sql.y:5871 { yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1147: + case 1141: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5912 +//line sql.y:5875 { yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1148: + case 1142: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5916 +//line sql.y:5879 { yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1149: + case 1143: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5920 +//line sql.y:5883 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1150: + case 1144: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5924 +//line sql.y:5887 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1151: + case 1145: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5928 +//line sql.y:5891 { yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1152: + case 1146: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5932 +//line sql.y:5895 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1153: + case 1147: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5936 +//line sql.y:5899 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1154: + case 1148: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5940 +//line sql.y:5903 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1155: + case 1149: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5944 +//line sql.y:5907 { yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1156: + case 1150: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5948 +//line sql.y:5911 { yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1157: + case 1151: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5952 +//line sql.y:5915 { yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1158: + case 1152: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5956 +//line sql.y:5919 { yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL - case 1159: + case 1153: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5960 +//line sql.y:5923 { yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1160: + case 1154: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5964 +//line sql.y:5927 { yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1161: + case 1155: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5968 +//line sql.y:5931 { yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1162: + case 1156: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5972 +//line sql.y:5935 { yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1163: + case 1157: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5976 +//line sql.y:5939 { yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1164: + case 1158: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5980 +//line sql.y:5943 { yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1165: + case 1159: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5984 +//line sql.y:5947 { yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1166: + case 1160: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5988 +//line sql.y:5951 { yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL - case 1167: + case 1161: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5992 +//line sql.y:5955 { yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1168: + case 1162: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5996 +//line sql.y:5959 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1169: + case 1163: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6000 +//line sql.y:5963 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1170: + case 1164: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6004 +//line sql.y:5967 { yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1171: + case 1165: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6008 +//line sql.y:5971 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1172: + case 1166: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6012 +//line sql.y:5975 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1173: + case 1167: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6016 +//line sql.y:5979 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1174: + case 1168: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6020 +//line sql.y:5983 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1175: + case 1169: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6024 +//line sql.y:5987 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1176: + case 1170: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6028 +//line sql.y:5991 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1177: + case 1171: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6032 +//line sql.y:5995 { yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1178: + case 1172: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6036 +//line sql.y:5999 { yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1179: + case 1173: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6040 +//line sql.y:6003 { yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1174: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6044 +//line sql.y:6007 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1181: + case 1175: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6048 +//line sql.y:6011 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1182: + case 1176: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6052 +//line sql.y:6015 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1183: + case 1177: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6056 +//line sql.y:6019 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1184: + case 1178: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6060 +//line sql.y:6023 { yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1185: + case 1179: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6064 +//line sql.y:6027 { yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1186: + case 1180: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6068 +//line sql.y:6031 { yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1187: + case 1181: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6072 +//line sql.y:6035 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1188: + case 1182: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6076 +//line sql.y:6039 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1189: + case 1183: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6080 +//line sql.y:6043 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1190: + case 1184: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6084 +//line sql.y:6047 { yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1191: + case 1185: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6088 +//line sql.y:6051 { yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1192: + case 1186: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6092 +//line sql.y:6055 { yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1193: + case 1187: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6096 +//line sql.y:6059 { yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1194: + case 1188: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6100 +//line sql.y:6063 { yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1195: + case 1189: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6104 +//line sql.y:6067 { yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1196: + case 1190: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6108 +//line sql.y:6071 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1197: + case 1191: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6112 +//line sql.y:6075 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1202: + case 1196: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6122 +//line sql.y:6085 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1203: + case 1197: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6126 +//line sql.y:6089 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1204: + case 1198: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6130 +//line sql.y:6093 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1205: + case 1199: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6134 +//line sql.y:6097 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1206: + case 1200: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6140 +//line sql.y:6103 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1207: + case 1201: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6144 +//line sql.y:6107 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1208: + case 1202: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6150 +//line sql.y:6113 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1203: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6154 +//line sql.y:6117 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1204: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6158 +//line sql.y:6121 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1211: + case 1205: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6162 +//line sql.y:6125 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1206: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6166 +//line sql.y:6129 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1207: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6171 +//line sql.y:6134 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1208: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6175 +//line sql.y:6138 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1209: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6179 +//line sql.y:6142 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1210: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6183 +//line sql.y:6146 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1211: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6187 +//line sql.y:6150 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1212: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6191 +//line sql.y:6154 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1219: + case 1213: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6196 +//line sql.y:6159 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1214: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6200 +//line sql.y:6163 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1221: + case 1215: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6204 +//line sql.y:6167 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1216: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6208 +//line sql.y:6171 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1217: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6215 +//line sql.y:6178 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1218: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6219 +//line sql.y:6182 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1219: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6225 +//line sql.y:6188 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1226: + case 1220: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6229 +//line sql.y:6192 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1227: + case 1221: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6233 +//line sql.y:6196 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1228: + case 1222: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6237 +//line sql.y:6200 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1223: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6243 +//line sql.y:6206 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1230: + case 1224: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6247 +//line sql.y:6210 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1231: + case 1225: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6251 +//line sql.y:6214 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1232: + case 1226: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6255 +//line sql.y:6218 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1227: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6259 +//line sql.y:6222 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1234: + case 1228: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6263 +//line sql.y:6226 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1235: + case 1229: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6267 +//line sql.y:6230 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1236: + case 1230: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6272 +//line sql.y:6235 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1237: + case 1231: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6276 +//line sql.y:6239 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1238: + case 1232: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6282 +//line sql.y:6245 { } - case 1239: + case 1233: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6284 +//line sql.y:6247 { yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL - case 1240: + case 1234: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6288 +//line sql.y:6251 { yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL - case 1241: + case 1235: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6292 +//line sql.y:6255 { yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL - case 1242: + case 1236: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6296 +//line sql.y:6259 { yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL - case 1243: + case 1237: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6300 +//line sql.y:6263 { yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL - case 1244: + case 1238: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6304 +//line sql.y:6267 { yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL - case 1245: + case 1239: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6308 +//line sql.y:6271 { yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL - case 1246: + case 1240: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6312 +//line sql.y:6275 { yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL - case 1247: + case 1241: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6316 +//line sql.y:6279 { yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL - case 1248: + case 1242: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6320 +//line sql.y:6283 { yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL - case 1249: + case 1243: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6324 +//line sql.y:6287 { yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL - case 1250: + case 1244: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6330 +//line sql.y:6293 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1251: + case 1245: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6334 +//line sql.y:6297 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1252: + case 1246: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6338 +//line sql.y:6301 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1253: + case 1247: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6342 +//line sql.y:6305 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1254: + case 1248: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6346 +//line sql.y:6309 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1255: + case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6350 +//line sql.y:6313 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1256: + case 1250: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6354 +//line sql.y:6317 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1257: + case 1251: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6358 +//line sql.y:6321 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1258: + case 1252: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalTypes -//line sql.y:6362 +//line sql.y:6325 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1261: + case 1255: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6372 +//line sql.y:6335 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1262: + case 1256: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6376 +//line sql.y:6339 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1263: + case 1257: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6380 +//line sql.y:6343 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1264: + case 1258: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6384 +//line sql.y:6347 { yyLOCAL = NewArgument(yyDollar[2].str[1:]) bindVariable(yylex, yyDollar[2].str[1:]) } yyVAL.union = yyLOCAL - case 1265: + case 1259: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6395 +//line sql.y:6358 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1266: + case 1260: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6399 +//line sql.y:6362 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1267: + case 1261: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6403 +//line sql.y:6366 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1268: + case 1262: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6407 +//line sql.y:6370 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1269: + case 1263: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6411 +//line sql.y:6374 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1270: + case 1264: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6417 +//line sql.y:6380 { yyLOCAL = NoOption } yyVAL.union = yyLOCAL - case 1271: + case 1265: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6421 +//line sql.y:6384 { yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL - case 1272: + case 1266: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6425 +//line sql.y:6388 { yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL - case 1273: + case 1267: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6429 +//line sql.y:6392 { yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL - case 1274: + case 1268: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:6433 +//line sql.y:6396 { yyLOCAL = QueryExpansionOpt } yyVAL.union = yyLOCAL - case 1275: + case 1269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6439 +//line sql.y:6402 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 1276: + case 1270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6443 +//line sql.y:6406 { yyVAL.str = string(yyDollar[1].str) } - case 1277: + case 1271: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6447 +//line sql.y:6410 { yyVAL.str = string(yyDollar[1].str) } - case 1278: + case 1272: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6453 +//line sql.y:6416 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1279: + case 1273: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6457 +//line sql.y:6420 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1280: + case 1274: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6461 +//line sql.y:6424 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1281: + case 1275: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6467 +//line sql.y:6430 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1282: + case 1276: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6471 +//line sql.y:6434 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL - case 1283: + case 1277: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6475 +//line sql.y:6438 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1284: + case 1278: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6479 +//line sql.y:6442 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1285: + case 1279: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6483 +//line sql.y:6446 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL - case 1286: + case 1280: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6489 +//line sql.y:6452 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1287: + case 1281: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6493 +//line sql.y:6456 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1288: + case 1282: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6497 +//line sql.y:6460 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1289: + case 1283: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6501 +//line sql.y:6464 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1290: + case 1284: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6505 +//line sql.y:6468 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1291: + case 1285: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6509 +//line sql.y:6472 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1292: + case 1286: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6513 +//line sql.y:6476 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1293: + case 1287: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6517 +//line sql.y:6480 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1294: + case 1288: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6521 +//line sql.y:6484 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1295: + case 1289: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6525 +//line sql.y:6488 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1296: + case 1290: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:6531 +//line sql.y:6494 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1297: + case 1291: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:6535 +//line sql.y:6498 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1298: + case 1292: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6540 +//line sql.y:6503 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1299: + case 1293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6544 +//line sql.y:6507 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1300: + case 1294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6549 +//line sql.y:6512 { yyVAL.str = string("") } - case 1301: + case 1295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6553 +//line sql.y:6516 { yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str) } - case 1302: + case 1296: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:6559 +//line sql.y:6522 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1303: + case 1297: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6563 +//line sql.y:6526 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1304: + case 1298: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:6569 +//line sql.y:6532 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1305: + case 1299: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6574 +//line sql.y:6537 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1306: + case 1300: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6578 +//line sql.y:6541 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1307: + case 1301: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6584 +//line sql.y:6547 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1308: + case 1302: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:6588 +//line sql.y:6551 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1309: + case 1303: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:6592 +//line sql.y:6555 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1310: + case 1304: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:6596 +//line sql.y:6559 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1311: + case 1305: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6602 +//line sql.y:6565 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1312: + case 1306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6606 +//line sql.y:6569 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1313: + case 1307: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6612 +//line sql.y:6575 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -18690,427 +18675,427 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1314: + case 1308: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6621 +//line sql.y:6584 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1315: + case 1309: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6625 +//line sql.y:6588 { yyLOCAL = NewArgument(yyDollar[1].str[1:]) bindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1316: + case 1310: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:6631 +//line sql.y:6594 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1317: + case 1311: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:6635 +//line sql.y:6598 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1318: + case 1312: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6640 +//line sql.y:6603 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1319: + case 1313: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6644 +//line sql.y:6607 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1320: + case 1314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:6650 +//line sql.y:6613 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1321: + case 1315: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6656 +//line sql.y:6619 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1322: + case 1316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6660 +//line sql.y:6623 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1323: + case 1317: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6665 +//line sql.y:6628 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1324: + case 1318: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:6669 +//line sql.y:6632 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1325: + case 1319: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6674 +//line sql.y:6637 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1326: + case 1320: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6678 +//line sql.y:6641 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1327: + case 1321: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6684 +//line sql.y:6647 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1328: + case 1322: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:6690 +//line sql.y:6653 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1329: + case 1323: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6694 +//line sql.y:6657 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1330: + case 1324: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:6700 +//line sql.y:6663 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1331: + case 1325: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6705 +//line sql.y:6668 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1332: + case 1326: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6709 +//line sql.y:6672 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1333: + case 1327: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:6713 +//line sql.y:6676 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1334: + case 1328: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:6718 +//line sql.y:6681 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1335: + case 1329: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:6722 +//line sql.y:6685 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1336: + case 1330: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:6728 +//line sql.y:6691 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1337: + case 1331: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6732 +//line sql.y:6695 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1338: + case 1332: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:6736 +//line sql.y:6699 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1339: + case 1333: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6741 +//line sql.y:6704 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1340: + case 1334: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6745 +//line sql.y:6708 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1341: + case 1335: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6749 +//line sql.y:6712 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1342: + case 1336: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6753 +//line sql.y:6716 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1343: + case 1337: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:6757 +//line sql.y:6720 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1344: + case 1338: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6764 +//line sql.y:6727 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 1345: + case 1339: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6768 +//line sql.y:6731 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 1346: + case 1340: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6772 +//line sql.y:6735 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 1347: + case 1341: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6776 +//line sql.y:6739 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 1348: + case 1342: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6782 +//line sql.y:6745 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1349: + case 1343: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6786 +//line sql.y:6749 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1350: + case 1344: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6790 +//line sql.y:6753 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1351: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:6794 +//line sql.y:6757 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1352: + case 1346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6799 +//line sql.y:6762 { yyVAL.str = "" } - case 1353: + case 1347: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6803 +//line sql.y:6766 { yyVAL.str = string(yyDollar[3].str) } - case 1354: + case 1348: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6807 +//line sql.y:6770 { yyVAL.str = string(yyDollar[3].str) } - case 1355: + case 1349: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6811 +//line sql.y:6774 { yyVAL.str = string(yyDollar[3].str) } - case 1356: + case 1350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6816 +//line sql.y:6779 { yyVAL.str = "" } - case 1357: + case 1351: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6820 +//line sql.y:6783 { yyVAL.str = yyDollar[3].str } - case 1358: + case 1352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6826 +//line sql.y:6789 { yyVAL.str = string(yyDollar[1].str) } - case 1359: + case 1353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6830 +//line sql.y:6793 { yyVAL.str = string(yyDollar[1].str) } - case 1360: + case 1354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6835 +//line sql.y:6798 { yyVAL.str = "" } - case 1361: + case 1355: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:6839 +//line sql.y:6802 { yyVAL.str = yyDollar[2].str } - case 1362: + case 1356: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6844 +//line sql.y:6807 { yyVAL.str = "cascaded" } - case 1363: + case 1357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6848 +//line sql.y:6811 { yyVAL.str = string(yyDollar[1].str) } - case 1364: + case 1358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6852 +//line sql.y:6815 { yyVAL.str = string(yyDollar[1].str) } - case 1365: + case 1359: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:6857 +//line sql.y:6820 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1366: + case 1360: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6861 +//line sql.y:6824 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1367: + case 1361: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:6867 +//line sql.y:6830 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1368: + case 1362: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:6873 +//line sql.y:6836 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1369: + case 1363: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:6879 +//line sql.y:6842 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -19118,369 +19103,369 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1370: + case 1364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6888 +//line sql.y:6851 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1371: + case 1365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6892 +//line sql.y:6855 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1372: + case 1366: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6897 +//line sql.y:6860 { yyVAL.str = "" } - case 1373: + case 1367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6901 +//line sql.y:6864 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1374: + case 1368: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:6907 +//line sql.y:6870 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1375: + case 1369: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:6911 +//line sql.y:6874 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1376: + case 1370: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6917 +//line sql.y:6880 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1377: + case 1371: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6921 +//line sql.y:6884 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1378: + case 1372: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:6925 +//line sql.y:6888 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1379: + case 1373: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6930 +//line sql.y:6893 { yyVAL.str = "" } - case 1380: + case 1374: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6934 +//line sql.y:6897 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1381: + case 1375: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:6938 +//line sql.y:6901 { yyVAL.str = " format text" + yyDollar[3].str } - case 1382: + case 1376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6943 +//line sql.y:6906 { yyVAL.str = "" } - case 1383: + case 1377: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6947 +//line sql.y:6910 { yyVAL.str = " header" } - case 1384: + case 1378: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6952 +//line sql.y:6915 { yyVAL.str = "" } - case 1385: + case 1379: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6956 +//line sql.y:6919 { yyVAL.str = " manifest on" } - case 1386: + case 1380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6960 +//line sql.y:6923 { yyVAL.str = " manifest off" } - case 1387: + case 1381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6965 +//line sql.y:6928 { yyVAL.str = "" } - case 1388: + case 1382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6969 +//line sql.y:6932 { yyVAL.str = " overwrite on" } - case 1389: + case 1383: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6973 +//line sql.y:6936 { yyVAL.str = " overwrite off" } - case 1390: + case 1384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6979 +//line sql.y:6942 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1391: + case 1385: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:6984 +//line sql.y:6947 { yyVAL.str = "" } - case 1392: + case 1386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6988 +//line sql.y:6951 { yyVAL.str = " lines" + yyDollar[2].str } - case 1393: + case 1387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:6994 +//line sql.y:6957 { yyVAL.str = yyDollar[1].str } - case 1394: + case 1388: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:6998 +//line sql.y:6961 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1395: + case 1389: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7004 +//line sql.y:6967 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1396: + case 1390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7008 +//line sql.y:6971 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1397: + case 1391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7013 +//line sql.y:6976 { yyVAL.str = "" } - case 1398: + case 1392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7017 +//line sql.y:6980 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1399: + case 1393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7023 +//line sql.y:6986 { yyVAL.str = yyDollar[1].str } - case 1400: + case 1394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7027 +//line sql.y:6990 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1401: + case 1395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7033 +//line sql.y:6996 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1402: + case 1396: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7037 +//line sql.y:7000 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1403: + case 1397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7041 +//line sql.y:7004 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1404: + case 1398: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7046 +//line sql.y:7009 { yyVAL.str = "" } - case 1405: + case 1399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7050 +//line sql.y:7013 { yyVAL.str = " optionally" } - case 1406: + case 1400: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7063 +//line sql.y:7026 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1407: + case 1401: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7067 +//line sql.y:7030 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1408: + case 1402: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7071 +//line sql.y:7034 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1409: + case 1403: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7075 +//line sql.y:7038 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1410: + case 1404: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7079 +//line sql.y:7042 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1411: + case 1405: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7085 +//line sql.y:7048 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1412: + case 1406: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7089 +//line sql.y:7052 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1413: + case 1407: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7093 +//line sql.y:7056 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1414: + case 1408: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7097 +//line sql.y:7060 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1415: + case 1409: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7102 +//line sql.y:7065 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1416: + case 1410: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7106 +//line sql.y:7069 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1417: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7112 +//line sql.y:7075 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1418: + case 1412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7116 +//line sql.y:7079 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1419: + case 1413: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7122 +//line sql.y:7085 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1420: + case 1414: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7126 +//line sql.y:7089 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1421: + case 1415: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7132 +//line sql.y:7095 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1422: + case 1416: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7136 +//line sql.y:7099 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1423: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7141 +//line sql.y:7104 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -19489,344 +19474,344 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1424: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7151 +//line sql.y:7114 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1425: + case 1419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7155 +//line sql.y:7118 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1426: + case 1420: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7161 +//line sql.y:7124 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1427: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SetExprs -//line sql.y:7167 +//line sql.y:7130 { yyLOCAL = SetExprs{yyDollar[1].setExprUnion()} } yyVAL.union = yyLOCAL - case 1428: + case 1422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7171 +//line sql.y:7134 { yySLICE := (*SetExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].setExprUnion()) } - case 1429: + case 1423: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7177 +//line sql.y:7140 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("on")} } yyVAL.union = yyLOCAL - case 1430: + case 1424: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7181 +//line sql.y:7144 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: NewStrLiteral("off")} } yyVAL.union = yyLOCAL - case 1431: + case 1425: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7185 +//line sql.y:7148 { yyLOCAL = &SetExpr{Var: yyDollar[1].variableUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1432: + case 1426: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SetExpr -//line sql.y:7189 +//line sql.y:7152 { yyLOCAL = &SetExpr{Var: NewSetVariable(string(yyDollar[1].str), SessionScope), Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1433: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7195 +//line sql.y:7158 { yyLOCAL = NewSetVariable(string(yyDollar[1].str), SessionScope) } yyVAL.union = yyLOCAL - case 1434: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Variable -//line sql.y:7199 +//line sql.y:7162 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1435: + case 1429: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Variable -//line sql.y:7203 +//line sql.y:7166 { yyLOCAL = NewSetVariable(string(yyDollar[2].str), yyDollar[1].scopeUnion()) } yyVAL.union = yyLOCAL - case 1437: + case 1431: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7210 +//line sql.y:7173 { yyVAL.str = "charset" } - case 1440: + case 1434: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7220 +//line sql.y:7183 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1441: + case 1435: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7224 +//line sql.y:7187 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1442: + case 1436: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7228 +//line sql.y:7191 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1445: + case 1439: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7237 +//line sql.y:7200 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1446: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7239 +//line sql.y:7202 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1447: + case 1441: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7242 +//line sql.y:7205 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1448: + case 1442: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7244 +//line sql.y:7207 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1449: + case 1443: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7247 +//line sql.y:7210 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1450: + case 1444: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7249 +//line sql.y:7212 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1451: + case 1445: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7252 +//line sql.y:7215 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1452: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7254 +//line sql.y:7217 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1453: + case 1447: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7257 +//line sql.y:7220 { yyVAL.empty = struct{}{} } - case 1454: + case 1448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7259 +//line sql.y:7222 { yyVAL.empty = struct{}{} } - case 1455: + case 1449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7261 +//line sql.y:7224 { yyVAL.empty = struct{}{} } - case 1456: + case 1450: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7265 +//line sql.y:7228 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1457: + case 1451: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7270 +//line sql.y:7233 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1458: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7274 +//line sql.y:7237 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1459: + case 1453: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7279 +//line sql.y:7242 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1460: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7281 +//line sql.y:7244 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1461: + case 1455: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7285 +//line sql.y:7248 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1462: + case 1456: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7291 +//line sql.y:7254 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1463: + case 1457: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7295 +//line sql.y:7258 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1465: + case 1459: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7302 +//line sql.y:7265 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1466: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7308 +//line sql.y:7271 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1467: + case 1461: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7312 +//line sql.y:7275 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1468: + case 1462: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7318 +//line sql.y:7281 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1469: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7322 +//line sql.y:7285 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1471: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7329 +//line sql.y:7292 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 2015: + case 2008: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7899 +//line sql.y:7861 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 2016: + case 2009: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7908 +//line sql.y:7870 { decNesting(yylex) } - case 2017: + case 2010: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7913 +//line sql.y:7875 { skipToEnd(yylex) } - case 2018: + case 2011: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7918 +//line sql.y:7880 { skipToEnd(yylex) } - case 2019: + case 2012: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7922 +//line sql.y:7884 { skipToEnd(yylex) } - case 2020: + case 2013: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7926 +//line sql.y:7888 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 8929f8bf580..e226af95396 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -315,7 +315,7 @@ func bindVariable(yylex yyLexer, bvar string) { // Migration tokens %token VITESS_MIGRATION CANCEL RETRY LAUNCH COMPLETE CLEANUP THROTTLE UNTHROTTLE EXPIRE RATIO // Throttler tokens -%token VITESS_THROTTLER THRESHOLD +%token VITESS_THROTTLER // Transaction Tokens %token BEGIN START TRANSACTION COMMIT ROLLBACK SAVEPOINT RELEASE WORK @@ -591,7 +591,6 @@ func bindVariable(yylex yyLexer, bvar string) { %type underscore_charsets %type expire_opt %type ratio_opt -%type threshold_opt %start any_command %% @@ -2850,19 +2849,6 @@ ratio_opt: $$ = NewDecimalLiteral($2) } -threshold_opt: - { - $$ = nil - } -| THRESHOLD INTEGRAL - { - $$ = NewIntLiteral($2) - } -| THRESHOLD DECIMAL - { - $$ = NewDecimalLiteral($2) - } - alter_commands_list: { $$ = nil @@ -3293,29 +3279,6 @@ alter_statement: Type: UnthrottleAllMigrationType, } } -| ALTER comment_opt VITESS_THROTTLER DISABLE - { - $$ = &AlterThrottler{ - Type: AlterThrottlerDisableType, - Comments: Comments($2).Parsed(), - } - } -| ALTER comment_opt VITESS_THROTTLER ENABLE - { - $$ = &AlterThrottler{ - Type: AlterThrottlerEnableType, - Comments: Comments($2).Parsed(), - } - } -| ALTER comment_opt VITESS_THROTTLER threshold_opt - { - $$ = &AlterThrottler{ - Type: AlterThrottlerParamsType, - Threshold: $4, - Comments: Comments($2).Parsed(), - } - } - partitions_options_opt: { @@ -7815,7 +7778,6 @@ non_reserved_keyword: | TEXT | THAN | THREAD_PRIORITY -| THRESHOLD | THROTTLE | TIES | TIME %prec STRING_TYPE_PREFIX_NON_KEYWORD From 01c93be521893d949399cde09c0d80c231bab012 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 27 Oct 2022 14:53:28 +0300 Subject: [PATCH 22/78] repltracker enables heartbeats if ondemand is positive Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/repltracker/repltracker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/repltracker/repltracker.go b/go/vt/vttablet/tabletserver/repltracker/repltracker.go index db20c2e821c..3d6359ed902 100644 --- a/go/vt/vttablet/tabletserver/repltracker/repltracker.go +++ b/go/vt/vttablet/tabletserver/repltracker/repltracker.go @@ -66,7 +66,7 @@ type ReplTracker struct { func NewReplTracker(env tabletenv.Env, alias *topodatapb.TabletAlias) *ReplTracker { return &ReplTracker{ mode: env.Config().ReplicationTracker.Mode, - forceHeartbeat: env.Config().EnableLagThrottler, + forceHeartbeat: env.Config().EnableLagThrottler || env.Config().ReplicationTracker.HeartbeatOnDemandSeconds.Get() > 0, hw: newHeartbeatWriter(env, alias), hr: newHeartbeatReader(env), poller: &poller{}, From fcaf2a744503705b35a9d905551e36fcc925b91f Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 27 Oct 2022 14:54:00 +0300 Subject: [PATCH 23/78] throttler does not requests heartbeats when disabled Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/throttler.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 2c6edfee0c0..28e368964b7 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -303,7 +303,6 @@ func (throttler *Throttler) WatchSrvKeyspaceCallback(srvks *topodatapb.SrvKeyspa return false } throttlerConfig := throttler.normalizeThrottlerConfig(srvks.ThrottlerConfig) - fmt.Printf("============ ZZZ WatchSrvKeyspaceCallback: %v\n", throttlerConfig) if throttler.isEnabled > 0 { // throttler is running and we should apply the config change through Operate() or else we get into race conditions @@ -322,7 +321,6 @@ func (throttler *Throttler) applyThrottlerConfig(ctx context.Context, throttlerC if !throttlerConfigViaTopo { return } - fmt.Printf("============ ZZZ applyThrottlerConfig: %v\n", throttlerConfig) if throttlerConfig.CustomQuery == "" { throttler.metricsQuery = replicationLagQuery } else { @@ -349,7 +347,6 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { return false } atomic.StoreInt64(&throttler.isEnabled, 1) - fmt.Printf("============ ZZZ Enabling\n") ctx, throttler.cancelEnableContext = context.WithCancel(ctx) throttler.check.SelfChecks(ctx) @@ -370,7 +367,6 @@ func (throttler *Throttler) Disable(ctx context.Context) bool { } // _ = throttler.updateConfig(ctx, false, throttler.MetricsThreshold.Get()) // TODO(shlomi) atomic.StoreInt64(&throttler.isEnabled, 0) - fmt.Printf("============ ZZZ Disabling\n") throttler.aggregatedMetrics.Flush() throttler.recentApps.Flush() @@ -390,7 +386,6 @@ func (throttler *Throttler) Open() error { // already open return nil } - fmt.Printf("============ ZZZ Opening\n") ctx := context.Background() throttler.pool.Open(throttler.env.Config().DB.AppWithDB(), throttler.env.Config().DB.DbaWithDB(), throttler.env.Config().DB.AppDebugWithDB()) atomic.StoreInt64(&throttler.isOpen, 1) @@ -681,7 +676,6 @@ func (throttler *Throttler) refreshMySQLInventory(ctx context.Context) error { // distribute the query/threshold from the throttler down to the cluster settings and from there to the probes metricsQuery := throttler.metricsQuery metricsThreshold := throttler.MetricsThreshold.Get() - fmt.Printf("============ ZZZ metricsThreshold := %v\n", metricsThreshold) addInstanceKey := func(tabletHost string, tabletPort int, key *mysql.InstanceKey, clusterName string, clusterSettings *config.MySQLClusterConfigurationSettings, probes *mysql.Probes) { for _, ignore := range clusterSettings.IgnoreHosts { if strings.Contains(key.StringCode(), ignore) { @@ -709,12 +703,10 @@ func (throttler *Throttler) refreshMySQLInventory(ctx context.Context) error { clusterSettings := clusterSettings clusterSettings.MetricQuery = metricsQuery clusterSettings.ThrottleThreshold.Set(metricsThreshold) - fmt.Printf("============ ZZZ clusterSettings.ThrottleThreshold.Set : %v\n", metricsThreshold) // config may dynamically change, but internal structure (config.Settings().Stores.MySQL.Clusters in our case) // is immutable and can only be _replaced_. Hence, it's safe to read in a goroutine: go func() { throttler.mysqlClusterThresholds.Set(clusterName, clusterSettings.ThrottleThreshold.Get(), cache.DefaultExpiration) - fmt.Printf("============ ZZZ throttler.mysqlClusterThresholds.Set : %v\n", clusterSettings.ThrottleThreshold.Get()) clusterProbes := &mysql.ClusterProbes{ ClusterName: clusterName, IgnoreHostsCount: clusterSettings.IgnoreHostsCount, @@ -967,7 +959,9 @@ func (throttler *Throttler) checkSelf(ctx context.Context, appName string, remot // CheckByType runs a check by requested check type func (throttler *Throttler) CheckByType(ctx context.Context, appName string, remoteAddr string, flags *CheckFlags, checkType ThrottleCheckType) (checkResult *CheckResult) { - go throttler.heartbeatWriter.RequestHeartbeats() + if throttler.IsEnabled() { + go throttler.heartbeatWriter.RequestHeartbeats() + } switch checkType { case ThrottleCheckSelf: return throttler.checkSelf(ctx, appName, remoteAddr, flags) From 73ec72aedf873a0f9162e4f355eb420997595956 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 09:06:39 +0200 Subject: [PATCH 24/78] endtoend test to cover throttler config by topo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- ..._endtoend_tabletmanager_throttler_topo.yml | 126 ++++++ .../throttler_topo/throttler_test.go | 386 ++++++++++++++++++ test/ci_workflow_gen.go | 1 + test/config.json | 11 + 4 files changed, 524 insertions(+) create mode 100644 .github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml create mode 100644 go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml new file mode 100644 index 00000000000..cd786a20968 --- /dev/null +++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml @@ -0,0 +1,126 @@ +# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows" + +name: Cluster (tabletmanager_throttler_topo) +on: [push, pull_request] +concurrency: + group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (tabletmanager_throttler_topo)') + cancel-in-progress: true + +env: + LAUNCHABLE_ORGANIZATION: "vitess" + LAUNCHABLE_WORKSPACE: "vitess-app" + GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}" + +jobs: + build: + name: Run endtoend tests on Cluster (tabletmanager_throttler_topo) + runs-on: ubuntu-20.04 + + steps: + - name: Check if workflow needs to be skipped + id: skip-workflow + run: | + skip='false' + if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then + skip='true' + fi + echo Skip ${skip} + echo "::set-output name=skip-workflow::${skip}" + + - name: Check out code + if: steps.skip-workflow.outputs.skip-workflow == 'false' + uses: actions/checkout@v2 + + - name: Check for changes in relevant files + if: steps.skip-workflow.outputs.skip-workflow == 'false' + uses: frouioui/paths-filter@main + id: changes + with: + token: '' + filters: | + end_to_end: + - 'go/**/*.go' + - 'test.go' + - 'Makefile' + - 'build.env' + - 'go.[sumod]' + - 'proto/*.proto' + - 'tools/**' + - 'config/**' + - 'bootstrap.sh' + - '.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml' + + - name: Set up Go + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + uses: actions/setup-go@v2 + with: + go-version: 1.18.5 + + - name: Set up python + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + uses: actions/setup-python@v2 + + - name: Tune the OS + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + run: | + echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range + # Increase the asynchronous non-blocking I/O. More information at https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_use_native_aio + echo "fs.aio-max-nr = 1048576" | sudo tee -a /etc/sysctl.conf + sudo sysctl -p /etc/sysctl.conf + + - name: Get dependencies + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + run: | + # Setup Percona Server for MySQL 8.0 + sudo apt-get update + sudo apt-get install -y lsb-release gnupg2 curl + wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb + sudo DEBIAN_FRONTEND="noninteractive" dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb + sudo percona-release setup ps80 + sudo apt-get update + + # Install everything else we need, and configure + sudo apt-get install -y percona-server-server percona-server-client make unzip g++ etcd git wget eatmydata xz-utils + sudo service mysql stop + sudo service etcd stop + sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ + sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld + go mod download + + # install JUnit report formatter + go install github.com/vitessio/go-junit-report@HEAD + + - name: Setup launchable dependencies + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + run: | + # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up + pip3 install --user launchable~=1.0 > /dev/null + + # verify that launchable setup is all correct. + launchable verify || true + + # Tell Launchable about the build you are producing and testing + launchable record build --name "$GITHUB_RUN_ID" --source . + + - name: Run cluster endtoend test + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' + timeout-minutes: 45 + run: | + # We set the VTDATAROOT to the /tmp folder to reduce the file path of mysql.sock file + # which musn't be more than 107 characters long. + export VTDATAROOT="/tmp/" + source build.env + + set -x + + # run the tests however you normally do, then produce a JUnit XML file + eatmydata -- go run test.go -docker=false -follow -shard tabletmanager_throttler_topo | tee -a output.txt | go-junit-report -set-exit-code > report.xml + + - name: Print test output and Record test result in launchable + if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' && always() + run: | + # send recorded tests to launchable + launchable record tests --build "$GITHUB_RUN_ID" go-test . || true + + # print test output + cat output.txt diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go new file mode 100644 index 00000000000..400738c0cd5 --- /dev/null +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -0,0 +1,386 @@ +/* +Copyright 2020 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package throttler + +import ( + "flag" + "fmt" + "io" + "net/http" + "os" + "testing" + "time" + + "vitess.io/vitess/go/vt/vttablet/tabletserver/throttle/base" + + "vitess.io/vitess/go/test/endtoend/cluster" + + "github.com/stretchr/testify/assert" +) + +var ( + clusterInstance *cluster.LocalProcessCluster + primaryTablet *cluster.Vttablet + replicaTablet *cluster.Vttablet + hostname = "localhost" + keyspaceName = "ks" + cell = "zone1" + sqlSchema = ` + create table t1( + id bigint, + value varchar(16), + primary key(id) + ) Engine=InnoDB; +` + + vSchema = ` + { + "sharded": true, + "vindexes": { + "hash": { + "type": "hash" + } + }, + "tables": { + "t1": { + "column_vindexes": [ + { + "column": "id", + "name": "hash" + } + ] + } + } + }` + + httpClient = base.SetupHTTPClient(time.Second) + throttledAppsAPIPath = "throttler/throttled-apps" + checkAPIPath = "throttler/check" + checkSelfAPIPath = "throttler/check-self" +) + +const ( + throttlerThreshold = 1 * time.Second // standard, tight threshold + replicationCatchUpWait = 10 * time.Second // time to allow replication catchup + onDemandHeartbeatDuration = 5 * time.Second + applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets +) + +func TestMain(m *testing.M) { + defer cluster.PanicHandler(nil) + flag.Parse() + + exitCode := func() int { + clusterInstance = cluster.NewCluster(cell, hostname) + defer clusterInstance.Teardown() + + // Start topo server + err := clusterInstance.StartTopo() + if err != nil { + return 1 + } + + // Set extra tablet args for lock timeout + clusterInstance.VtTabletExtraArgs = []string{ + "--lock_tables_timeout", "5s", + "--watch_replication_stream", + "--enable_replication_reporter", + "--throttle_config_via_topo", + "--throttle_threshold", throttlerThreshold.String(), + "--heartbeat_enable", + "--heartbeat_interval", "250ms", + "--heartbeat_on_demand_duration", onDemandHeartbeatDuration.String(), + } + // We do not need semiSync for this test case. + clusterInstance.EnableSemiSync = false + + // Start keyspace + keyspace := &cluster.Keyspace{ + Name: keyspaceName, + SchemaSQL: sqlSchema, + VSchema: vSchema, + } + + if err = clusterInstance.StartUnshardedKeyspace(*keyspace, 1, false); err != nil { + return 1 + } + + // Collect table paths and ports + tablets := clusterInstance.Keyspaces[0].Shards[0].Vttablets + for _, tablet := range tablets { + if tablet.Type == "primary" { + primaryTablet = tablet + } else if tablet.Type != "rdonly" { + replicaTablet = tablet + } + } + + return m.Run() + }() + os.Exit(exitCode) +} + +// updateThrottlerConfig runs vtctlclient UpdateThrottlerConfig +func updateThrottlerConfig(enable bool, disable bool, threshold float64) (result string, err error) { + args := []string{ + "--", + "UpdateThrottlerConfig", + } + if enable { + args = append(args, "--enable") + } + if disable { + args = append(args, "--disable") + } + if threshold > 0 { + args = append(args, "--threshold", fmt.Sprintf("%f", threshold)) + } + args = append(args, keyspaceName) + return clusterInstance.VtctlclientProcess.ExecuteCommandWithOutput(args...) +} + +func throttledApps(tablet *cluster.Vttablet) (resp *http.Response, respBody string, err error) { + resp, err = httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, throttledAppsAPIPath)) + if err != nil { + return resp, respBody, err + } + b, err := io.ReadAll(resp.Body) + if err != nil { + return resp, respBody, err + } + respBody = string(b) + return resp, respBody, err +} + +func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) { + resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) + return resp, err +} + +func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { + return httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkSelfAPIPath)) +} + +func warmUpHeartbeat(t *testing.T) (respStatus int) { + // because we run with -heartbeat_on_demand_duration=5s, the heartbeat is "cold" right now. + // Let's warm it up. + resp, err := throttleCheck(primaryTablet) + time.Sleep(time.Second) + assert.NoError(t, err) + return resp.StatusCode +} + +func TestInitialThrottler(t *testing.T) { + defer cluster.PanicHandler(t) + + t.Run("validating OK response from disabled throttler", func(t *testing.T) { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("enabling throttler with low threshold", func(t *testing.T) { + output, err := updateThrottlerConfig(true, false, 0.01) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating pushback response from throttler", func(t *testing.T) { + time.Sleep(applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("disabling throttler", func(t *testing.T) { + output, err := updateThrottlerConfig(false, true, 0.01) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating OK response from disabled throttler, again", func(t *testing.T) { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("enabling throttler, again", func(t *testing.T) { + output, err := updateThrottlerConfig(true, false, 0) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating pushback response from throttler, again", func(t *testing.T) { + time.Sleep(applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("setting high threshold", func(t *testing.T) { + output, err := updateThrottlerConfig(false, false, applyConfigWait.Seconds()+onDemandHeartbeatDuration.Seconds()) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating OK response from throttler with high threshold", func(t *testing.T) { + time.Sleep(applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("setting low threshold", func(t *testing.T) { + output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds()) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating pushback response from throttler on low threshold", func(t *testing.T) { + time.Sleep(applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("requesting heartbeats", func(t *testing.T) { + respStatus := warmUpHeartbeat(t) + assert.NotEqual(t, http.StatusOK, respStatus) + }) + t.Run("validating OK response from throttler with low threshold, heartbeats running", func(t *testing.T) { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("validating OK response from throttler with low threshold, heartbeats running still", func(t *testing.T) { + time.Sleep(1 * time.Second) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("validating pushback response from throttler on low threshold once heartbeats go stale", func(t *testing.T) { + time.Sleep(2 * onDemandHeartbeatDuration) // just... really wait long enough, make sure on-demand stops + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) +} + +func TestThrottlerAfterMetricsCollected(t *testing.T) { + defer cluster.PanicHandler(t) + + time.Sleep(applyConfigWait) + // By this time metrics will have been collected. We expect no lag, and something like: + // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""} + // + respStatus := warmUpHeartbeat(t) + assert.NotEqual(t, http.StatusOK, respStatus) + time.Sleep(time.Second) + { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, body, err := throttledApps(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Contains(t, body, "always-throttled-app") + } + { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } +} + +func TestLag(t *testing.T) { + defer cluster.PanicHandler(t) + + { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("StopReplication", replicaTablet.Alias) + assert.NoError(t, err) + + time.Sleep(2 * throttlerThreshold) + // Lag will have accumulated + // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} + { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + // self (on primary) is unaffected by replication lag + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + } + } + { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("StartReplication", replicaTablet.Alias) + assert.NoError(t, err) + + time.Sleep(replicationCatchUpWait) + // Restore + // by now heartbeat lease has expired. Let's warm it up + respStatus := warmUpHeartbeat(t) + assert.NotEqual(t, http.StatusOK, respStatus) + time.Sleep(time.Second) + { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + } +} + +func TestNoReplicas(t *testing.T) { + defer cluster.PanicHandler(t) + { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "RDONLY") + assert.NoError(t, err) + + time.Sleep(applyConfigWait) + // This makes no REPLICA servers available. We expect something like: + // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} + respStatus := warmUpHeartbeat(t) + assert.Equal(t, http.StatusOK, respStatus) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") + assert.NoError(t, err) + + time.Sleep(applyConfigWait) + // Restore valid replica + respStatus := warmUpHeartbeat(t) + assert.NotEqual(t, http.StatusOK, respStatus) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } +} diff --git a/test/ci_workflow_gen.go b/test/ci_workflow_gen.go index 2612c0feded..418a81b453b 100644 --- a/test/ci_workflow_gen.go +++ b/test/ci_workflow_gen.go @@ -96,6 +96,7 @@ var ( "onlineddl_scheduler", "onlineddl_revertible", "tabletmanager_throttler", + "tabletmanager_throttler_topo", "tabletmanager_throttler_custom_config", "tabletmanager_tablegc", "tabletmanager_consul", diff --git a/test/config.json b/test/config.json index 9d71d274af7..e0cb1d70a43 100644 --- a/test/config.json +++ b/test/config.json @@ -496,6 +496,17 @@ "site_test" ] }, + "tabletmanager_throttler_topo": { + "File": "unused.go", + "Args": ["vitess.io/vitess/go/test/endtoend/tabletmanager/throttler_topo"], + "Command": [], + "Manual": false, + "Shard": "tabletmanager_throttler_topo", + "RetryMax": 1, + "Tags": [ + "site_test" + ] + }, "tabletmanager_throttler_custom_config": { "File": "unused.go", "Args": ["vitess.io/vitess/go/test/endtoend/tabletmanager/throttler_custom_config"], From a9b159d5681216c124e5f962b4d456b397758cf8 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 09:07:13 +0200 Subject: [PATCH 25/78] make generate_ci_workflows Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../cluster_endtoend_vttablet_prscomplex.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml b/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml index 692c8afd7e4..1bbcc59753b 100644 --- a/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml +++ b/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml @@ -14,7 +14,7 @@ env: jobs: build: name: Run endtoend tests on Cluster (vttablet_prscomplex) - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Check if workflow needs to be skipped @@ -71,8 +71,16 @@ jobs: - name: Get dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' run: | + # Setup Percona Server for MySQL 8.0 sudo apt-get update - sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata + sudo apt-get install -y lsb-release gnupg2 curl + wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb + sudo DEBIAN_FRONTEND="noninteractive" dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb + sudo percona-release setup ps80 + sudo apt-get update + + # Install everything else we need, and configure + sudo apt-get install -y percona-server-server percona-server-client make unzip g++ etcd git wget eatmydata xz-utils sudo service mysql stop sudo service etcd stop sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ @@ -96,7 +104,7 @@ jobs: - name: Run cluster endtoend test if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' - timeout-minutes: 30 + timeout-minutes: 45 run: | # We set the VTDATAROOT to the /tmp folder to reduce the file path of mysql.sock file # which musn't be more than 107 characters long. From bc1d1957c1e913d793308c28d160e0f58d1b9986 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 10:02:26 +0200 Subject: [PATCH 26/78] graceful sleep Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 400738c0cd5..1dbb55491a9 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -250,6 +250,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEqual(t, http.StatusOK, respStatus) }) t.Run("validating OK response from throttler with low threshold, heartbeats running", func(t *testing.T) { + time.Sleep(1 * time.Second) resp, err := throttleCheck(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) From 61d242915dcdf3bd9eca4115865ddc4776d9bfbb Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 10:42:30 +0200 Subject: [PATCH 27/78] Enable throttler in Open() when not reading from topo (maintain backwards compatibility) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/throttle/throttler.go | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 28e368964b7..b3e3f62c966 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -273,6 +273,7 @@ func (throttler *Throttler) initConfig() { } } +// readThrottlerConfig proactively reads the throttler's config from SrvKeyspace in local topo func (throttler *Throttler) readThrottlerConfig(ctx context.Context) (*topodatapb.SrvKeyspace_ThrottlerConfig, error) { srvks, err := throttler.ts.GetSrvKeyspace(ctx, throttler.cell, throttler.keyspace) if err != nil { @@ -281,6 +282,7 @@ func (throttler *Throttler) readThrottlerConfig(ctx context.Context) (*topodatap return throttler.normalizeThrottlerConfig(srvks.ThrottlerConfig), nil } +// normalizeThrottlerConfig noramlizes missing throttler config information, as needed. func (throttler *Throttler) normalizeThrottlerConfig(thottlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig { if thottlerConfig == nil { thottlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} @@ -294,6 +296,8 @@ func (throttler *Throttler) normalizeThrottlerConfig(thottlerConfig *topodatapb. return thottlerConfig } +// WatchSrvKeyspaceCallback gets called whenever SrvKeyspace has been modified. This callback only examines the ThrottlerConfig part of +// SrvKeyspace, and proceeds to inform the throttler of the new config func (throttler *Throttler) WatchSrvKeyspaceCallback(srvks *topodatapb.SrvKeyspace, err error) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() @@ -317,6 +321,8 @@ func (throttler *Throttler) WatchSrvKeyspaceCallback(srvks *topodatapb.SrvKeyspa return true } +// applyThrottlerConfig receives a Throttlerconfig as read from SrvKeyspace, and applies the configuration. This may cause +// the throttler to be enabled/disabled, and of course it affects the throttling query/threshold. func (throttler *Throttler) applyThrottlerConfig(ctx context.Context, throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) { if !throttlerConfigViaTopo { return @@ -392,11 +398,17 @@ func (throttler *Throttler) Open() error { throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) - throttlerConfig, err := throttler.readThrottlerConfig(ctx) - if err != nil { - return err + if throttlerConfigViaTopo { + throttlerConfig, err := throttler.readThrottlerConfig(ctx) + if err != nil { + return err + } + throttler.applyThrottlerConfig(ctx, throttlerConfig) // may issue an Enable + } else { + if throttler.env.Config().EnableLagThrottler { + go throttler.Enable(ctx) + } } - throttler.applyThrottlerConfig(ctx, throttlerConfig) // may issue an Enable return nil } From 6b19ece4a3fced4b92331a7516c9f5415dc257ce Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:06:59 +0200 Subject: [PATCH 28/78] improve test logic with WaitGroup Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../throttler_custom_config/throttler_test.go | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go index 39dfd93293d..a2d030b85cb 100644 --- a/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" "os" + "sync" "testing" "time" @@ -76,8 +77,8 @@ var ( ) const ( - testThreshold = 5 - throttlerInitWait = 10 * time.Second + testThreshold = 5 + applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets ) func TestMain(m *testing.M) { @@ -148,7 +149,8 @@ func TestMain(m *testing.M) { } func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) { - return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) + resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) + return resp, err } func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { @@ -158,42 +160,35 @@ func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { func TestThrottlerThresholdOK(t *testing.T) { defer cluster.PanicHandler(t) - { + t.Run("immediately", func(t *testing.T) { resp, err := throttleCheck(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } -} - -func TestThrottlerAfterMetricsCollected(t *testing.T) { - defer cluster.PanicHandler(t) - - time.Sleep(throttlerInitWait) - // By this time metrics will have been collected. We expect no lag, and something like: - // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""} - { + }) + t.Run("after long wait", func(t *testing.T) { + time.Sleep(applyConfigWait) resp, err := throttleCheck(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } + }) } func TestThreadsRunning(t *testing.T) { defer cluster.PanicHandler(t) - sleepSeconds := 6 + sleepDuration := 10 * time.Second + var wg sync.WaitGroup for i := 0; i < testThreshold; i++ { - // each query must be distinct, so they don't get consolidated - go vtgateExec(t, fmt.Sprintf("select sleep(%d)", sleepSeconds+i), "") + // generate different Sleep() calls, all at minimum sleepDuration + wg.Add(1) + go func(i int) { + defer wg.Done() + vtgateExec(t, fmt.Sprintf("select sleep(%d)", int(sleepDuration.Seconds())+i), "") + }(i) } t.Run("exceeds threshold", func(t *testing.T) { - time.Sleep(3 * time.Second) - // by this time we will have +1 threads_running, and we should hit the threshold + time.Sleep(sleepDuration / 2) + // by this time we will have testThreshold+1 threads_running, and we should hit the threshold // {"StatusCode":429,"Value":2,"Threshold":2,"Message":"Threshold exceeded"} { resp, err := throttleCheck(primaryTablet) @@ -206,9 +201,10 @@ func TestThreadsRunning(t *testing.T) { assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) } }) + t.Run("wait for queries to terminate", func(t *testing.T) { + wg.Wait() + }) t.Run("restored below threshold", func(t *testing.T) { - time.Sleep(time.Duration(sleepSeconds) * time.Second * 2) // * 2 since we have two planner executing the select sleep(6) query - // Restore { resp, err := throttleCheck(primaryTablet) assert.NoError(t, err) From ff117dc6ef52daab61ee1fb60b11c8c234712979 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:07:22 +0200 Subject: [PATCH 29/78] adapt test logic to new on-demand behavior. Add more test cases Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler/throttler_test.go | 76 ++++++++++--------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index 38f886c034e..b1ff46eaa47 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -73,11 +73,10 @@ var ( ) const ( - throttlerInitWait = 30 * time.Second - accumulateLagWait = 2 * time.Second - throttlerRefreshIntervalWait = 20 * time.Second - replicationCatchUpWait = 10 * time.Second - onDemandHeartbeatDuration = 5 * time.Second + throttlerThreshold = 1 * time.Second // standard, tight threshold + replicationCatchUpWait = 10 * time.Second // time to allow replication catchup + onDemandHeartbeatDuration = 5 * time.Second + applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets ) func TestMain(m *testing.M) { @@ -100,7 +99,7 @@ func TestMain(m *testing.M) { "--watch_replication_stream", "--enable_replication_reporter", "--enable-lag-throttler", - "--throttle_threshold", "1s", + "--throttle_threshold", throttlerThreshold.String(), "--heartbeat_enable", "--heartbeat_interval", "250ms", "--heartbeat_on_demand_duration", onDemandHeartbeatDuration.String(), @@ -148,25 +147,14 @@ func throttledApps(tablet *cluster.Vttablet) (resp *http.Response, respBody stri } func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) { - return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) + resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) + return resp, err } func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkSelfAPIPath)) } -func TestThrottlerBeforeMetricsCollected(t *testing.T) { - defer cluster.PanicHandler(t) - - // Immediately after startup, we expect this response: - // {"StatusCode":404,"Value":0,"Threshold":0,"Message":"No such metric"} - { - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusNotFound, resp.StatusCode) - } -} - func warmUpHeartbeat(t *testing.T) (respStatus int) { // because we run with -heartbeat_on_demand_duration=5s, the heartbeat is "cold" right now. // Let's warm it up. @@ -179,34 +167,48 @@ func warmUpHeartbeat(t *testing.T) (respStatus int) { func TestThrottlerAfterMetricsCollected(t *testing.T) { defer cluster.PanicHandler(t) - time.Sleep(throttlerInitWait) - // By this time metrics will have been collected. We expect no lag, and something like: - // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""} - // - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - time.Sleep(time.Second) - { + // We run with on-demand heartbeats. Immediately as the tablet manager opens, it sends a one-time + // request for heartbeats, which means the throttler is able to collect initial "good" data. + // After a few seconds, the heartbeat lease terminates. We wait for that. + // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} + t.Run("expect push back once initial heartbeat lease terminates", func(t *testing.T) { + time.Sleep(onDemandHeartbeatDuration + applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("requesting heartbeats", func(t *testing.T) { + respStatus := warmUpHeartbeat(t) + assert.NotEqual(t, http.StatusOK, respStatus) + }) + t.Run("expect OK once heartbeats lease renewed", func(t *testing.T) { + time.Sleep(1 * time.Second) resp, err := throttleCheck(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + }) + t.Run("expect OK once heartbeats lease renewed, still", func(t *testing.T) { + time.Sleep(1 * time.Second) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("validate throttled-apps", func(t *testing.T) { resp, body, err := throttledApps(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Contains(t, body, "always-throttled-app") - } - { + }) + t.Run("validate check-self", func(t *testing.T) { resp, err := throttleCheckSelf(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + }) + t.Run("validate check-self, again", func(t *testing.T) { resp, err := throttleCheckSelf(replicaTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } + }) } func TestLag(t *testing.T) { @@ -216,7 +218,7 @@ func TestLag(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("StopReplication", replicaTablet.Alias) assert.NoError(t, err) - time.Sleep(accumulateLagWait) + time.Sleep(2 * throttlerThreshold) // Lag will have accumulated // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} { @@ -270,7 +272,7 @@ func TestNoReplicas(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "RDONLY") assert.NoError(t, err) - time.Sleep(throttlerRefreshIntervalWait) + time.Sleep(applyConfigWait) // This makes no REPLICA servers available. We expect something like: // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} respStatus := warmUpHeartbeat(t) @@ -283,7 +285,7 @@ func TestNoReplicas(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") assert.NoError(t, err) - time.Sleep(throttlerRefreshIntervalWait) + time.Sleep(applyConfigWait) // Restore valid replica respStatus := warmUpHeartbeat(t) assert.NotEqual(t, http.StatusOK, respStatus) From 32c781ea81726a716acbdfa3972067a9961965db Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:15:21 +0200 Subject: [PATCH 30/78] removed AlterThrottler from vtgate Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/builder.go | 2 -- go/vt/vtgate/planbuilder/throttler.go | 25 ------------------------- 2 files changed, 27 deletions(-) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index ae0ab777a46..7fa035c9156 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -242,8 +242,6 @@ func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars * return buildShowMigrationLogsPlan(query, vschema, enableOnlineDDL) case *sqlparser.ShowThrottledApps: return buildShowThrottledAppsPlan(query, vschema) - case *sqlparser.AlterThrottler: - return buildAlterThrottlerPlan(query, vschema) case *sqlparser.ShowThrottlerStatus: return buildShowThrottlerStatusPlan(query, vschema) case *sqlparser.AlterVschema: diff --git a/go/vt/vtgate/planbuilder/throttler.go b/go/vt/vtgate/planbuilder/throttler.go index d4f02c39996..ed9ef4ef709 100644 --- a/go/vt/vtgate/planbuilder/throttler.go +++ b/go/vt/vtgate/planbuilder/throttler.go @@ -72,28 +72,3 @@ func buildShowThrottlerStatusPlan(query string, vschema plancontext.VSchema) (*p Query: query, }), nil } - -func buildAlterThrottlerPlan(query string, vschema plancontext.VSchema) (*planResult, error) { - dest, ks, tabletType, err := vschema.TargetDestination("") - if err != nil { - return nil, err - } - if ks == nil { - return nil, vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.NoDB, "No database selected: use keyspace<:shard><@type> or keyspace<[range]><@type> (<> are optional)") - } - - if tabletType != topodatapb.TabletType_PRIMARY { - return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "ALTER VITESS_THROTTLER works only on primary tablet") - } - - if dest == nil { - dest = key.DestinationAllShards{} - } - - send := &engine.Send{ - Keyspace: ks, - TargetDestination: dest, - Query: query, - } - return newPlanResult(send), nil -} From 9fcf602cfbfe5fab8c4c401a2b3691bd125f2cf4 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:15:34 +0200 Subject: [PATCH 31/78] removed AlterThrottler from ast Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/ast.go | 11 --------- go/vt/sqlparser/ast_clone.go | 15 ------------- go/vt/sqlparser/ast_equals.go | 25 --------------------- go/vt/sqlparser/ast_format.go | 13 ----------- go/vt/sqlparser/ast_format_fast.go | 16 ------------- go/vt/sqlparser/ast_rewrite.go | 36 ------------------------------ go/vt/sqlparser/ast_visit.go | 19 ---------------- go/vt/sqlparser/cached_size.go | 14 ------------ go/vt/sqlparser/constants.go | 7 ------ 9 files changed, 156 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index bd55db49950..63575e049d8 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -481,16 +481,6 @@ type ( Comments Comments } - // AlterThrottlerType represents the type of operation in an ALTER VITESS_THROTTLER statement - AlterThrottlerType int8 - - // AlterThrottler represents a ALTER VITESS_THROTTLER statement - AlterThrottler struct { - Type AlterThrottlerType - Threshold *Literal - Comments *ParsedComments - } - // RevertMigration represents a REVERT VITESS_MIGRATION statement RevertMigration struct { UUID string @@ -743,7 +733,6 @@ func (*AlterTable) iStatement() {} func (*AlterVschema) iStatement() {} func (*AlterMigration) iStatement() {} func (*RevertMigration) iStatement() {} -func (*AlterThrottler) iStatement() {} func (*ShowMigrationLogs) iStatement() {} func (*ShowThrottledApps) iStatement() {} func (*ShowThrottlerStatus) iStatement() {} diff --git a/go/vt/sqlparser/ast_clone.go b/go/vt/sqlparser/ast_clone.go index 3904b2dbf36..f09b86fcf6e 100644 --- a/go/vt/sqlparser/ast_clone.go +++ b/go/vt/sqlparser/ast_clone.go @@ -51,8 +51,6 @@ func CloneSQLNode(in SQLNode) SQLNode { return CloneRefOfAlterMigration(in) case *AlterTable: return CloneRefOfAlterTable(in) - case *AlterThrottler: - return CloneRefOfAlterThrottler(in) case *AlterView: return CloneRefOfAlterView(in) case *AlterVschema: @@ -655,17 +653,6 @@ func CloneRefOfAlterTable(n *AlterTable) *AlterTable { return &out } -// CloneRefOfAlterThrottler creates a deep clone of the input. -func CloneRefOfAlterThrottler(n *AlterThrottler) *AlterThrottler { - if n == nil { - return nil - } - out := *n - out.Threshold = CloneRefOfLiteral(n.Threshold) - out.Comments = CloneRefOfParsedComments(n.Comments) - return &out -} - // CloneRefOfAlterView creates a deep clone of the input. func CloneRefOfAlterView(n *AlterView) *AlterView { if n == nil { @@ -3771,8 +3758,6 @@ func CloneStatement(in Statement) Statement { return CloneRefOfAlterMigration(in) case *AlterTable: return CloneRefOfAlterTable(in) - case *AlterThrottler: - return CloneRefOfAlterThrottler(in) case *AlterView: return CloneRefOfAlterView(in) case *AlterVschema: diff --git a/go/vt/sqlparser/ast_equals.go b/go/vt/sqlparser/ast_equals.go index 0bceeaf79e2..cefab1e92fb 100644 --- a/go/vt/sqlparser/ast_equals.go +++ b/go/vt/sqlparser/ast_equals.go @@ -110,12 +110,6 @@ func EqualsSQLNode(inA, inB SQLNode) bool { return false } return EqualsRefOfAlterTable(a, b) - case *AlterThrottler: - b, ok := inB.(*AlterThrottler) - if !ok { - return false - } - return EqualsRefOfAlterThrottler(a, b) case *AlterView: b, ok := inB.(*AlterView) if !ok { @@ -1671,19 +1665,6 @@ func EqualsRefOfAlterTable(a, b *AlterTable) bool { EqualsRefOfParsedComments(a.Comments, b.Comments) } -// EqualsRefOfAlterThrottler does deep equals between the two objects. -func EqualsRefOfAlterThrottler(a, b *AlterThrottler) bool { - if a == b { - return true - } - if a == nil || b == nil { - return false - } - return a.Type == b.Type && - EqualsRefOfLiteral(a.Threshold, b.Threshold) && - EqualsRefOfParsedComments(a.Comments, b.Comments) -} - // EqualsRefOfAlterView does deep equals between the two objects. func EqualsRefOfAlterView(a, b *AlterView) bool { if a == b { @@ -6126,12 +6107,6 @@ func EqualsStatement(inA, inB Statement) bool { return false } return EqualsRefOfAlterTable(a, b) - case *AlterThrottler: - b, ok := inB.(*AlterThrottler) - if !ok { - return false - } - return EqualsRefOfAlterThrottler(a, b) case *AlterView: b, ok := inB.(*AlterView) if !ok { diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go index 33ea044c114..a7a542bf948 100644 --- a/go/vt/sqlparser/ast_format.go +++ b/go/vt/sqlparser/ast_format.go @@ -326,19 +326,6 @@ func (node *ShowThrottledApps) Format(buf *TrackedBuffer) { buf.astPrintf(node, "show vitess_throttled_apps") } -// Format formats the node. -func (node *AlterThrottler) Format(buf *TrackedBuffer) { - buf.astPrintf(node, "alter %vvitess_throttler", node.Comments) - switch node.Type { - case AlterThrottlerDisableType: - buf.astPrintf(node, " disable") - case AlterThrottlerEnableType: - buf.astPrintf(node, " enable") - case AlterThrottlerParamsType: - buf.astPrintf(node, " threshold %v", node.Threshold) - } -} - // Format formats the node. func (node *ShowThrottlerStatus) Format(buf *TrackedBuffer) { buf.astPrintf(node, "show vitess_throttler status") diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index 4790413a2d4..5752a999db7 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -466,22 +466,6 @@ func (node *ShowThrottledApps) formatFast(buf *TrackedBuffer) { buf.WriteString("show vitess_throttled_apps") } -// formatFast formats the node. -func (node *AlterThrottler) formatFast(buf *TrackedBuffer) { - buf.WriteString("alter ") - node.Comments.formatFast(buf) - buf.WriteString("vitess_throttler") - switch node.Type { - case AlterThrottlerDisableType: - buf.WriteString(" disable") - case AlterThrottlerEnableType: - buf.WriteString(" enable") - case AlterThrottlerParamsType: - buf.WriteString(" threshold ") - node.Threshold.formatFast(buf) - } -} - // formatFast formats the node. func (node *ShowThrottlerStatus) formatFast(buf *TrackedBuffer) { buf.WriteString("show vitess_throttler status") diff --git a/go/vt/sqlparser/ast_rewrite.go b/go/vt/sqlparser/ast_rewrite.go index 84487cce0c3..3aa4295c3dc 100644 --- a/go/vt/sqlparser/ast_rewrite.go +++ b/go/vt/sqlparser/ast_rewrite.go @@ -50,8 +50,6 @@ func (a *application) rewriteSQLNode(parent SQLNode, node SQLNode, replacer repl return a.rewriteRefOfAlterMigration(parent, node, replacer) case *AlterTable: return a.rewriteRefOfAlterTable(parent, node, replacer) - case *AlterThrottler: - return a.rewriteRefOfAlterThrottler(parent, node, replacer) case *AlterView: return a.rewriteRefOfAlterView(parent, node, replacer) case *AlterVschema: @@ -905,38 +903,6 @@ func (a *application) rewriteRefOfAlterTable(parent SQLNode, node *AlterTable, r } return true } -func (a *application) rewriteRefOfAlterThrottler(parent SQLNode, node *AlterThrottler, replacer replacerFunc) bool { - if node == nil { - return true - } - if a.pre != nil { - a.cur.replacer = replacer - a.cur.parent = parent - a.cur.node = node - if !a.pre(&a.cur) { - return true - } - } - if !a.rewriteRefOfLiteral(node, node.Threshold, func(newNode, parent SQLNode) { - parent.(*AlterThrottler).Threshold = newNode.(*Literal) - }) { - return false - } - if !a.rewriteRefOfParsedComments(node, node.Comments, func(newNode, parent SQLNode) { - parent.(*AlterThrottler).Comments = newNode.(*ParsedComments) - }) { - return false - } - if a.post != nil { - a.cur.replacer = replacer - a.cur.parent = parent - a.cur.node = node - if !a.post(&a.cur) { - return false - } - } - return true -} func (a *application) rewriteRefOfAlterView(parent SQLNode, node *AlterView, replacer replacerFunc) bool { if node == nil { return true @@ -8871,8 +8837,6 @@ func (a *application) rewriteStatement(parent SQLNode, node Statement, replacer return a.rewriteRefOfAlterMigration(parent, node, replacer) case *AlterTable: return a.rewriteRefOfAlterTable(parent, node, replacer) - case *AlterThrottler: - return a.rewriteRefOfAlterThrottler(parent, node, replacer) case *AlterView: return a.rewriteRefOfAlterView(parent, node, replacer) case *AlterVschema: diff --git a/go/vt/sqlparser/ast_visit.go b/go/vt/sqlparser/ast_visit.go index ffc1ecf4ce2..1acfa4c97ce 100644 --- a/go/vt/sqlparser/ast_visit.go +++ b/go/vt/sqlparser/ast_visit.go @@ -50,8 +50,6 @@ func VisitSQLNode(in SQLNode, f Visit) error { return VisitRefOfAlterMigration(in, f) case *AlterTable: return VisitRefOfAlterTable(in, f) - case *AlterThrottler: - return VisitRefOfAlterThrottler(in, f) case *AlterView: return VisitRefOfAlterView(in, f) case *AlterVschema: @@ -699,21 +697,6 @@ func VisitRefOfAlterTable(in *AlterTable, f Visit) error { } return nil } -func VisitRefOfAlterThrottler(in *AlterThrottler, f Visit) error { - if in == nil { - return nil - } - if cont, err := f(in); err != nil || !cont { - return err - } - if err := VisitRefOfLiteral(in.Threshold, f); err != nil { - return err - } - if err := VisitRefOfParsedComments(in.Comments, f); err != nil { - return err - } - return nil -} func VisitRefOfAlterView(in *AlterView, f Visit) error { if in == nil { return nil @@ -4637,8 +4620,6 @@ func VisitStatement(in Statement, f Visit) error { return VisitRefOfAlterMigration(in, f) case *AlterTable: return VisitRefOfAlterTable(in, f) - case *AlterThrottler: - return VisitRefOfAlterThrottler(in, f) case *AlterView: return VisitRefOfAlterView(in, f) case *AlterVschema: diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go index 47f66e97131..2dd0340b31c 100644 --- a/go/vt/sqlparser/cached_size.go +++ b/go/vt/sqlparser/cached_size.go @@ -245,20 +245,6 @@ func (cached *AlterTable) CachedSize(alloc bool) int64 { size += cached.Comments.CachedSize(true) return size } -func (cached *AlterThrottler) CachedSize(alloc bool) int64 { - if cached == nil { - return int64(0) - } - size := int64(0) - if alloc { - size += int64(24) - } - // field Threshold *vitess.io/vitess/go/vt/sqlparser.Literal - size += cached.Threshold.CachedSize(true) - // field Comments *vitess.io/vitess/go/vt/sqlparser.ParsedComments - size += cached.Comments.CachedSize(true) - return size -} func (cached *AlterView) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 89f40bcc137..4204f34b376 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -822,13 +822,6 @@ const ( ExclusiveType ) -// AlterMigrationType constants -const ( - AlterThrottlerParamsType AlterThrottlerType = iota - AlterThrottlerDisableType - AlterThrottlerEnableType -) - // AlterMigrationType constants const ( RetryMigrationType AlterMigrationType = iota From 7f4eab904b6169f17e31bbe136a31bb9fb206aa0 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 11:17:41 +0200 Subject: [PATCH 32/78] update test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/parse_test.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index a09634a4763..5b4a79a13da 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2054,16 +2054,6 @@ var ( input: "alter vitess_migration throttle all expire '1h' ratio 0.7", }, { input: "show vitess_throttled_apps", - }, { - input: "alter vitess_throttler disable", - }, { - input: "alter vitess_throttler enable", - }, { - input: "alter vitess_throttler threshold 2", - }, { - input: "alter vitess_throttler threshold 2.0", - }, { - input: "alter /*vt+ any=comment */ vitess_throttler threshold 2.1", }, { input: "show vitess_throttler status", }, { From 679a0721c1b862f03ebec3cf900cdb1509ad40b3 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 12:21:15 +0200 Subject: [PATCH 33/78] test custom config Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../throttler_topo/throttler_test.go | 115 +++++++++++++++++- 1 file changed, 109 insertions(+), 6 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 1dbb55491a9..5d9dc5ba861 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -16,25 +16,31 @@ limitations under the License. package throttler import ( + "context" "flag" "fmt" "io" "net/http" "os" + "sync" "testing" "time" + "vitess.io/vitess/go/mysql" + "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/vttablet/tabletserver/throttle/base" "vitess.io/vitess/go/test/endtoend/cluster" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var ( clusterInstance *cluster.LocalProcessCluster primaryTablet *cluster.Vttablet replicaTablet *cluster.Vttablet + vtParams mysql.ConnParams hostname = "localhost" keyspaceName = "ks" cell = "zone1" @@ -70,6 +76,8 @@ var ( throttledAppsAPIPath = "throttler/throttled-apps" checkAPIPath = "throttler/check" checkSelfAPIPath = "throttler/check-self" + customQuery = "show global status like 'threads_running'" + customThreshold = 5 ) const ( @@ -128,13 +136,25 @@ func TestMain(m *testing.M) { } } + vtgateInstance := clusterInstance.NewVtgateInstance() + // Start vtgate + if err := vtgateInstance.Setup(); err != nil { + return 1 + } + // ensure it is torn down during cluster TearDown + clusterInstance.VtgateProcess = *vtgateInstance + vtParams = mysql.ConnParams{ + Host: clusterInstance.Hostname, + Port: clusterInstance.VtgateMySQLPort, + } + return m.Run() }() os.Exit(exitCode) } // updateThrottlerConfig runs vtctlclient UpdateThrottlerConfig -func updateThrottlerConfig(enable bool, disable bool, threshold float64) (result string, err error) { +func updateThrottlerConfig(enable bool, disable bool, threshold float64, metricsQuery string) (result string, err error) { args := []string{ "--", "UpdateThrottlerConfig", @@ -148,6 +168,12 @@ func updateThrottlerConfig(enable bool, disable bool, threshold float64) (result if threshold > 0 { args = append(args, "--threshold", fmt.Sprintf("%f", threshold)) } + if metricsQuery != "" { + args = append(args, "--custom_query", metricsQuery) + args = append(args, "--check_as_check_self") + } else { + args = append(args, "--check_as_check_shard") + } args = append(args, keyspaceName) return clusterInstance.VtctlclientProcess.ExecuteCommandWithOutput(args...) } @@ -183,6 +209,24 @@ func warmUpHeartbeat(t *testing.T) (respStatus int) { return resp.StatusCode } +func vtgateExec(t *testing.T, query string, expectError string) *sqltypes.Result { + t.Helper() + + ctx := context.Background() + conn, err := mysql.Connect(ctx, &vtParams) + require.Nil(t, err) + defer conn.Close() + + qr, err := conn.ExecuteFetch(query, 1000, true) + if expectError == "" { + require.NoError(t, err) + } else { + require.Error(t, err, "error should not be nil") + assert.Contains(t, err.Error(), expectError, "Unexpected error") + } + return qr +} + func TestInitialThrottler(t *testing.T) { defer cluster.PanicHandler(t) @@ -192,7 +236,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("enabling throttler with low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, 0.01) + output, err := updateThrottlerConfig(true, false, 0.01, "") assert.NoError(t, err) assert.NotEmpty(t, output) }) @@ -203,7 +247,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) }) t.Run("disabling throttler", func(t *testing.T) { - output, err := updateThrottlerConfig(false, true, 0.01) + output, err := updateThrottlerConfig(false, true, 0.01, "") assert.NoError(t, err) assert.NotEmpty(t, output) }) @@ -213,7 +257,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("enabling throttler, again", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, 0) + output, err := updateThrottlerConfig(true, false, 0, "") assert.NoError(t, err) assert.NotEmpty(t, output) }) @@ -224,7 +268,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) }) t.Run("setting high threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(false, false, applyConfigWait.Seconds()+onDemandHeartbeatDuration.Seconds()) + output, err := updateThrottlerConfig(false, false, applyConfigWait.Seconds()+onDemandHeartbeatDuration.Seconds(), "") assert.NoError(t, err) assert.NotEmpty(t, output) }) @@ -235,7 +279,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("setting low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds()) + output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds(), "") assert.NoError(t, err) assert.NotEmpty(t, output) }) @@ -385,3 +429,62 @@ func TestNoReplicas(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) } } + +func TestCustomQuery(t *testing.T) { + defer cluster.PanicHandler(t) + + t.Run("enabling throttler with low threshold", func(t *testing.T) { + output, err := updateThrottlerConfig(true, false, float64(customThreshold), customQuery) + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("validating OK response from throttler with custom query", func(t *testing.T) { + time.Sleep(applyConfigWait) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("test threads running", func(t *testing.T) { + sleepDuration := 10 * time.Second + var wg sync.WaitGroup + for i := 0; i < customThreshold; i++ { + // generate different Sleep() calls, all at minimum sleepDuration + wg.Add(1) + go func(i int) { + defer wg.Done() + vtgateExec(t, fmt.Sprintf("select sleep(%d)", int(sleepDuration.Seconds())+i), "") + }(i) + } + t.Run("exceeds threshold", func(t *testing.T) { + time.Sleep(sleepDuration / 2) + // by this time we will have testThreshold+1 threads_running, and we should hit the threshold + // {"StatusCode":429,"Value":2,"Threshold":2,"Message":"Threshold exceeded"} + { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + } + }) + t.Run("wait for queries to terminate", func(t *testing.T) { + wg.Wait() + time.Sleep(1 * time.Second) // graceful time to let throttler read metrics + }) + t.Run("restored below threshold", func(t *testing.T) { + { + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + } + }) + }) +} From b0f526d453b005058e47637f1fe9b0d33add69b0 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 13:14:40 +0200 Subject: [PATCH 34/78] validate return from custom query to default query Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../throttler_topo/throttler_test.go | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 5d9dc5ba861..4b523fde11a 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -488,3 +488,29 @@ func TestCustomQuery(t *testing.T) { }) }) } + +func TestRestoreDefaultQuery(t *testing.T) { + // validte going back from custom-query to default-query (replication lag) still works + defer cluster.PanicHandler(t) + + t.Run("enabling throttler with standard threshold", func(t *testing.T) { + output, err := updateThrottlerConfig(true, false, throttlerThreshold.Seconds(), "") + assert.NoError(t, err) + assert.NotEmpty(t, output) + }) + t.Run("requesting heartbeats", func(t *testing.T) { + _ = warmUpHeartbeat(t) + }) + t.Run("validating OK response from throttler with low threshold, heartbeats running", func(t *testing.T) { + time.Sleep(1 * time.Second) + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("validating pushback response from throttler on low threshold once heartbeats go stale", func(t *testing.T) { + time.Sleep(2 * onDemandHeartbeatDuration) // just... really wait long enough, make sure on-demand stops + resp, err := throttleCheck(primaryTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) +} From 67d2873b9503c8c86519edc9df0d721849ce0371 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 13:57:19 +0200 Subject: [PATCH 35/78] updated workflow Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- ...ster_endtoend_tabletmanager_throttler_topo.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml index cd786a20968..5ae0f23d9e3 100644 --- a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml +++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml @@ -17,6 +17,13 @@ jobs: runs-on: ubuntu-20.04 steps: + - name: Skip CI + run: | + if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then + echo "skipping CI due to the 'Skip CI' label" + exit 1 + fi + - name: Check if workflow needs to be skipped id: skip-workflow run: | @@ -29,7 +36,7 @@ jobs: - name: Check out code if: steps.skip-workflow.outputs.skip-workflow == 'false' - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Check for changes in relevant files if: steps.skip-workflow.outputs.skip-workflow == 'false' @@ -52,13 +59,13 @@ jobs: - name: Set up Go if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' - uses: actions/setup-go@v2 + uses: actions/setup-go@v3 with: - go-version: 1.18.5 + go-version: 1.18.7 - name: Set up python if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 - name: Tune the OS if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' From e7d2a6e57530b75315132250eb2e9f1b0f01458f Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 14:13:34 +0200 Subject: [PATCH 36/78] update endtoend cli docs Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index d74f79232b5..68a48201139 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -301,7 +301,7 @@ Usage of vttablet: --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") - --throttle_threshold duration Replication lag threshold for default lag throttling (default 1s) + --throttle_threshold duration Replication lag threshold for default lag throttling (default 5s) --topo_consul_lock_delay duration LockDelay for consul session. (default 15s) --topo_consul_lock_session_checks string List of checks for consul session. (default "serfHealth") --topo_consul_lock_session_ttl string TTL for consul session. From 1601c5718d9adc6d94ef866753f05d1970b58276 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 14:24:01 +0200 Subject: [PATCH 37/78] update endtoend cli docs: --throttle_config_via_topo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 68a48201139..cbc61eb1500 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -298,6 +298,7 @@ Usage of vttablet: --tablet_manager_protocol string Protocol to use to make tabletmanager RPCs to vttablets. (default "grpc") --tablet_protocol string Protocol to use to make queryservice RPCs to vttablets. (default "grpc") --throttle_check_as_check_self Should throttler/check return a throttler/check-self result (changes throttler behavior for writes) + --throttle_config_via_topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") From 1f01d1f193fcd650d783a29ae52d7242b6c0fe89 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 30 Oct 2022 14:46:17 +0200 Subject: [PATCH 38/78] vtadmin web proto Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- web/vtadmin/src/proto/vtadmin.d.ts | 114 ++++++++++++ web/vtadmin/src/proto/vtadmin.js | 282 +++++++++++++++++++++++++++++ 2 files changed, 396 insertions(+) diff --git a/web/vtadmin/src/proto/vtadmin.d.ts b/web/vtadmin/src/proto/vtadmin.d.ts index 83ded89166b..0d8496bcec9 100644 --- a/web/vtadmin/src/proto/vtadmin.d.ts +++ b/web/vtadmin/src/proto/vtadmin.d.ts @@ -13938,6 +13938,9 @@ export namespace topodata { /** SrvKeyspace served_from */ served_from?: (topodata.SrvKeyspace.IServedFrom[]|null); + + /** SrvKeyspace throttler_config */ + throttler_config?: (topodata.SrvKeyspace.IThrottlerConfig|null); } /** Represents a SrvKeyspace. */ @@ -13955,6 +13958,9 @@ export namespace topodata { /** SrvKeyspace served_from. */ public served_from: topodata.SrvKeyspace.IServedFrom[]; + /** SrvKeyspace throttler_config. */ + public throttler_config?: (topodata.SrvKeyspace.IThrottlerConfig|null); + /** * Creates a new SrvKeyspace instance using the specified properties. * @param [properties] Properties to set @@ -14225,6 +14231,114 @@ export namespace topodata { */ public toJSON(): { [k: string]: any }; } + + /** Properties of a ThrottlerConfig. */ + interface IThrottlerConfig { + + /** ThrottlerConfig enabled */ + enabled?: (boolean|null); + + /** ThrottlerConfig threshold */ + threshold?: (number|null); + + /** ThrottlerConfig custom_query */ + custom_query?: (string|null); + + /** ThrottlerConfig check_as_check_self */ + check_as_check_self?: (boolean|null); + } + + /** Represents a ThrottlerConfig. */ + class ThrottlerConfig implements IThrottlerConfig { + + /** + * Constructs a new ThrottlerConfig. + * @param [properties] Properties to set + */ + constructor(properties?: topodata.SrvKeyspace.IThrottlerConfig); + + /** ThrottlerConfig enabled. */ + public enabled: boolean; + + /** ThrottlerConfig threshold. */ + public threshold: number; + + /** ThrottlerConfig custom_query. */ + public custom_query: string; + + /** ThrottlerConfig check_as_check_self. */ + public check_as_check_self: boolean; + + /** + * Creates a new ThrottlerConfig instance using the specified properties. + * @param [properties] Properties to set + * @returns ThrottlerConfig instance + */ + public static create(properties?: topodata.SrvKeyspace.IThrottlerConfig): topodata.SrvKeyspace.ThrottlerConfig; + + /** + * Encodes the specified ThrottlerConfig message. Does not implicitly {@link topodata.SrvKeyspace.ThrottlerConfig.verify|verify} messages. + * @param message ThrottlerConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: topodata.SrvKeyspace.IThrottlerConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ThrottlerConfig message, length delimited. Does not implicitly {@link topodata.SrvKeyspace.ThrottlerConfig.verify|verify} messages. + * @param message ThrottlerConfig message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: topodata.SrvKeyspace.IThrottlerConfig, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ThrottlerConfig message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ThrottlerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): topodata.SrvKeyspace.ThrottlerConfig; + + /** + * Decodes a ThrottlerConfig message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ThrottlerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): topodata.SrvKeyspace.ThrottlerConfig; + + /** + * Verifies a ThrottlerConfig message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ThrottlerConfig message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ThrottlerConfig + */ + public static fromObject(object: { [k: string]: any }): topodata.SrvKeyspace.ThrottlerConfig; + + /** + * Creates a plain object from a ThrottlerConfig message. Also converts values to other types if specified. + * @param message ThrottlerConfig + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: topodata.SrvKeyspace.ThrottlerConfig, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ThrottlerConfig to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } /** Properties of a CellInfo. */ diff --git a/web/vtadmin/src/proto/vtadmin.js b/web/vtadmin/src/proto/vtadmin.js index 46a4dc9186f..1452864ab22 100644 --- a/web/vtadmin/src/proto/vtadmin.js +++ b/web/vtadmin/src/proto/vtadmin.js @@ -32387,6 +32387,7 @@ $root.topodata = (function() { * @interface ISrvKeyspace * @property {Array.|null} [partitions] SrvKeyspace partitions * @property {Array.|null} [served_from] SrvKeyspace served_from + * @property {topodata.SrvKeyspace.IThrottlerConfig|null} [throttler_config] SrvKeyspace throttler_config */ /** @@ -32422,6 +32423,14 @@ $root.topodata = (function() { */ SrvKeyspace.prototype.served_from = $util.emptyArray; + /** + * SrvKeyspace throttler_config. + * @member {topodata.SrvKeyspace.IThrottlerConfig|null|undefined} throttler_config + * @memberof topodata.SrvKeyspace + * @instance + */ + SrvKeyspace.prototype.throttler_config = null; + /** * Creates a new SrvKeyspace instance using the specified properties. * @function create @@ -32452,6 +32461,8 @@ $root.topodata = (function() { if (message.served_from != null && message.served_from.length) for (var i = 0; i < message.served_from.length; ++i) $root.topodata.SrvKeyspace.ServedFrom.encode(message.served_from[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.throttler_config != null && Object.hasOwnProperty.call(message, "throttler_config")) + $root.topodata.SrvKeyspace.ThrottlerConfig.encode(message.throttler_config, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -32496,6 +32507,9 @@ $root.topodata = (function() { message.served_from = []; message.served_from.push($root.topodata.SrvKeyspace.ServedFrom.decode(reader, reader.uint32())); break; + case 6: + message.throttler_config = $root.topodata.SrvKeyspace.ThrottlerConfig.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -32549,6 +32563,11 @@ $root.topodata = (function() { return "served_from." + error; } } + if (message.throttler_config != null && message.hasOwnProperty("throttler_config")) { + var error = $root.topodata.SrvKeyspace.ThrottlerConfig.verify(message.throttler_config); + if (error) + return "throttler_config." + error; + } return null; }; @@ -32584,6 +32603,11 @@ $root.topodata = (function() { message.served_from[i] = $root.topodata.SrvKeyspace.ServedFrom.fromObject(object.served_from[i]); } } + if (object.throttler_config != null) { + if (typeof object.throttler_config !== "object") + throw TypeError(".topodata.SrvKeyspace.throttler_config: object expected"); + message.throttler_config = $root.topodata.SrvKeyspace.ThrottlerConfig.fromObject(object.throttler_config); + } return message; }; @@ -32604,6 +32628,8 @@ $root.topodata = (function() { object.partitions = []; object.served_from = []; } + if (options.defaults) + object.throttler_config = null; if (message.partitions && message.partitions.length) { object.partitions = []; for (var j = 0; j < message.partitions.length; ++j) @@ -32614,6 +32640,8 @@ $root.topodata = (function() { for (var j = 0; j < message.served_from.length; ++j) object.served_from[j] = $root.topodata.SrvKeyspace.ServedFrom.toObject(message.served_from[j], options); } + if (message.throttler_config != null && message.hasOwnProperty("throttler_config")) + object.throttler_config = $root.topodata.SrvKeyspace.ThrottlerConfig.toObject(message.throttler_config, options); return object; }; @@ -33229,6 +33257,260 @@ $root.topodata = (function() { return ServedFrom; })(); + SrvKeyspace.ThrottlerConfig = (function() { + + /** + * Properties of a ThrottlerConfig. + * @memberof topodata.SrvKeyspace + * @interface IThrottlerConfig + * @property {boolean|null} [enabled] ThrottlerConfig enabled + * @property {number|null} [threshold] ThrottlerConfig threshold + * @property {string|null} [custom_query] ThrottlerConfig custom_query + * @property {boolean|null} [check_as_check_self] ThrottlerConfig check_as_check_self + */ + + /** + * Constructs a new ThrottlerConfig. + * @memberof topodata.SrvKeyspace + * @classdesc Represents a ThrottlerConfig. + * @implements IThrottlerConfig + * @constructor + * @param {topodata.SrvKeyspace.IThrottlerConfig=} [properties] Properties to set + */ + function ThrottlerConfig(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ThrottlerConfig enabled. + * @member {boolean} enabled + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @instance + */ + ThrottlerConfig.prototype.enabled = false; + + /** + * ThrottlerConfig threshold. + * @member {number} threshold + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @instance + */ + ThrottlerConfig.prototype.threshold = 0; + + /** + * ThrottlerConfig custom_query. + * @member {string} custom_query + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @instance + */ + ThrottlerConfig.prototype.custom_query = ""; + + /** + * ThrottlerConfig check_as_check_self. + * @member {boolean} check_as_check_self + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @instance + */ + ThrottlerConfig.prototype.check_as_check_self = false; + + /** + * Creates a new ThrottlerConfig instance using the specified properties. + * @function create + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {topodata.SrvKeyspace.IThrottlerConfig=} [properties] Properties to set + * @returns {topodata.SrvKeyspace.ThrottlerConfig} ThrottlerConfig instance + */ + ThrottlerConfig.create = function create(properties) { + return new ThrottlerConfig(properties); + }; + + /** + * Encodes the specified ThrottlerConfig message. Does not implicitly {@link topodata.SrvKeyspace.ThrottlerConfig.verify|verify} messages. + * @function encode + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {topodata.SrvKeyspace.IThrottlerConfig} message ThrottlerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ThrottlerConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.enabled != null && Object.hasOwnProperty.call(message, "enabled")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.enabled); + if (message.threshold != null && Object.hasOwnProperty.call(message, "threshold")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.threshold); + if (message.custom_query != null && Object.hasOwnProperty.call(message, "custom_query")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.custom_query); + if (message.check_as_check_self != null && Object.hasOwnProperty.call(message, "check_as_check_self")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.check_as_check_self); + return writer; + }; + + /** + * Encodes the specified ThrottlerConfig message, length delimited. Does not implicitly {@link topodata.SrvKeyspace.ThrottlerConfig.verify|verify} messages. + * @function encodeDelimited + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {topodata.SrvKeyspace.IThrottlerConfig} message ThrottlerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ThrottlerConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ThrottlerConfig message from the specified reader or buffer. + * @function decode + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {topodata.SrvKeyspace.ThrottlerConfig} ThrottlerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ThrottlerConfig.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.topodata.SrvKeyspace.ThrottlerConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.enabled = reader.bool(); + break; + case 2: + message.threshold = reader.double(); + break; + case 3: + message.custom_query = reader.string(); + break; + case 4: + message.check_as_check_self = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ThrottlerConfig message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {topodata.SrvKeyspace.ThrottlerConfig} ThrottlerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ThrottlerConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ThrottlerConfig message. + * @function verify + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ThrottlerConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.enabled != null && message.hasOwnProperty("enabled")) + if (typeof message.enabled !== "boolean") + return "enabled: boolean expected"; + if (message.threshold != null && message.hasOwnProperty("threshold")) + if (typeof message.threshold !== "number") + return "threshold: number expected"; + if (message.custom_query != null && message.hasOwnProperty("custom_query")) + if (!$util.isString(message.custom_query)) + return "custom_query: string expected"; + if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) + if (typeof message.check_as_check_self !== "boolean") + return "check_as_check_self: boolean expected"; + return null; + }; + + /** + * Creates a ThrottlerConfig message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {Object.} object Plain object + * @returns {topodata.SrvKeyspace.ThrottlerConfig} ThrottlerConfig + */ + ThrottlerConfig.fromObject = function fromObject(object) { + if (object instanceof $root.topodata.SrvKeyspace.ThrottlerConfig) + return object; + var message = new $root.topodata.SrvKeyspace.ThrottlerConfig(); + if (object.enabled != null) + message.enabled = Boolean(object.enabled); + if (object.threshold != null) + message.threshold = Number(object.threshold); + if (object.custom_query != null) + message.custom_query = String(object.custom_query); + if (object.check_as_check_self != null) + message.check_as_check_self = Boolean(object.check_as_check_self); + return message; + }; + + /** + * Creates a plain object from a ThrottlerConfig message. Also converts values to other types if specified. + * @function toObject + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @static + * @param {topodata.SrvKeyspace.ThrottlerConfig} message ThrottlerConfig + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ThrottlerConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.enabled = false; + object.threshold = 0; + object.custom_query = ""; + object.check_as_check_self = false; + } + if (message.enabled != null && message.hasOwnProperty("enabled")) + object.enabled = message.enabled; + if (message.threshold != null && message.hasOwnProperty("threshold")) + object.threshold = options.json && !isFinite(message.threshold) ? String(message.threshold) : message.threshold; + if (message.custom_query != null && message.hasOwnProperty("custom_query")) + object.custom_query = message.custom_query; + if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) + object.check_as_check_self = message.check_as_check_self; + return object; + }; + + /** + * Converts this ThrottlerConfig to JSON. + * @function toJSON + * @memberof topodata.SrvKeyspace.ThrottlerConfig + * @instance + * @returns {Object.} JSON object + */ + ThrottlerConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ThrottlerConfig; + })(); + return SrvKeyspace; })(); From 521843df522d972d0cc581b76d878b8b276b6def Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 2 Nov 2022 12:06:50 +0200 Subject: [PATCH 39/78] s/throttle_config_via_topo/throttler_config_via_topo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 2 +- go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 2 +- go/vt/vttablet/tabletserver/throttle/throttler.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 7efde0d262d..5b505f80f67 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -298,7 +298,7 @@ Usage of vttablet: --tablet_manager_protocol string Protocol to use to make tabletmanager RPCs to vttablets. (default "grpc") --tablet_protocol string Protocol to use to make queryservice RPCs to vttablets. (default "grpc") --throttle_check_as_check_self Should throttler/check return a throttler/check-self result (changes throttler behavior for writes) - --throttle_config_via_topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self + --throttler_config_via_topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 4b523fde11a..7d6eafd6493 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -106,7 +106,7 @@ func TestMain(m *testing.M) { "--lock_tables_timeout", "5s", "--watch_replication_stream", "--enable_replication_reporter", - "--throttle_config_via_topo", + "--throttler_config_via_topo", "--throttle_threshold", throttlerThreshold.String(), "--heartbeat_enable", "--heartbeat_interval", "250ms", diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index b3e3f62c966..0afbb05d691 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -83,7 +83,7 @@ func registerThrottlerFlags(fs *pflag.FlagSet) { fs.StringVar(&throttleMetricQuery, "throttle_metrics_query", throttleMetricQuery, "Override default heartbeat/lag metric. Use either `SELECT` (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively.") fs.Float64Var(&throttleMetricThreshold, "throttle_metrics_threshold", throttleMetricThreshold, "Override default throttle threshold, respective to -throttle_metrics_query") fs.BoolVar(&throttlerCheckAsCheckSelf, "throttle_check_as_check_self", throttlerCheckAsCheckSelf, "Should throttler/check return a throttler/check-self result (changes throttler behavior for writes)") - fs.BoolVar(&throttlerConfigViaTopo, "throttle_config_via_topo", throttlerConfigViaTopo, "When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self") + fs.BoolVar(&throttlerConfigViaTopo, "throttler_config_via_topo", throttlerConfigViaTopo, "When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self") } var ( From cd95be21a5f3852f3a0a3c2511780cf13554037a Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 2 Nov 2022 12:09:56 +0200 Subject: [PATCH 40/78] do not listen on KeyspaceSrv if not configured to read from topo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/throttle/throttler.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 0afbb05d691..2d9d3756dca 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -246,7 +246,9 @@ func (throttler *Throttler) InitDBConfig(keyspace, shard string) { throttler.keyspace = keyspace throttler.shard = shard - throttler.srvTopoServer.WatchSrvKeyspace(context.Background(), throttler.cell, throttler.keyspace, throttler.WatchSrvKeyspaceCallback) + if throttlerConfigViaTopo { + throttler.srvTopoServer.WatchSrvKeyspace(context.Background(), throttler.cell, throttler.keyspace, throttler.WatchSrvKeyspaceCallback) + } } // initThrottler initializes config From 6283cd2720ab396748eb9d5277d570415d99f08c Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:13:38 +0200 Subject: [PATCH 41/78] reverse --throttle_threshold default increase Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 2 +- go/vt/vttablet/tabletserver/throttle/throttler.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 5b505f80f67..1441da01e56 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -302,7 +302,7 @@ Usage of vttablet: --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") - --throttle_threshold duration Replication lag threshold for default lag throttling (default 5s) + --throttle_threshold duration Replication lag threshold for default lag throttling (default 1s) --topo_consul_lock_delay duration LockDelay for consul session. (default 15s) --topo_consul_lock_session_checks string List of checks for consul session. (default "serfHealth") --topo_consul_lock_session_ttl string TTL for consul session. diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 2d9d3756dca..cf620445163 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -63,7 +63,7 @@ const ( var ( // flag vars - throttleThreshold = 5 * time.Second + throttleThreshold = 1 * time.Second throttleTabletTypes = "replica" throttleMetricQuery string throttleMetricThreshold = math.MaxFloat64 From 4c23a737dd705ee734b3869435679a51fd49b92b Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 08:03:07 +0200 Subject: [PATCH 42/78] dashes: --throttler-config-via-topo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 2 +- go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 2 +- go/vt/vttablet/tabletserver/throttle/throttler.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 1441da01e56..7453ffd9d7f 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -298,7 +298,7 @@ Usage of vttablet: --tablet_manager_protocol string Protocol to use to make tabletmanager RPCs to vttablets. (default "grpc") --tablet_protocol string Protocol to use to make queryservice RPCs to vttablets. (default "grpc") --throttle_check_as_check_self Should throttler/check return a throttler/check-self result (changes throttler behavior for writes) - --throttler_config_via_topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self + --throttler-config-via-topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 7d6eafd6493..e5ac1898011 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -106,7 +106,7 @@ func TestMain(m *testing.M) { "--lock_tables_timeout", "5s", "--watch_replication_stream", "--enable_replication_reporter", - "--throttler_config_via_topo", + "--throttler-config-via-topo", "--throttle_threshold", throttlerThreshold.String(), "--heartbeat_enable", "--heartbeat_interval", "250ms", diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index cf620445163..988ab276dfd 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -83,7 +83,7 @@ func registerThrottlerFlags(fs *pflag.FlagSet) { fs.StringVar(&throttleMetricQuery, "throttle_metrics_query", throttleMetricQuery, "Override default heartbeat/lag metric. Use either `SELECT` (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively.") fs.Float64Var(&throttleMetricThreshold, "throttle_metrics_threshold", throttleMetricThreshold, "Override default throttle threshold, respective to -throttle_metrics_query") fs.BoolVar(&throttlerCheckAsCheckSelf, "throttle_check_as_check_self", throttlerCheckAsCheckSelf, "Should throttler/check return a throttler/check-self result (changes throttler behavior for writes)") - fs.BoolVar(&throttlerConfigViaTopo, "throttler_config_via_topo", throttlerConfigViaTopo, "When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self") + fs.BoolVar(&throttlerConfigViaTopo, "throttler-config-via-topo", throttlerConfigViaTopo, "When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self") } var ( From 929078a611e51fdbd97003ca44ffcde2a9e14051 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:09:23 +0200 Subject: [PATCH 43/78] throttler check: flag for skipping heartbeat request (avoids renewing lease) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/tabletserver.go | 3 ++- go/vt/vttablet/tabletserver/throttle/check.go | 9 +++++---- go/vt/vttablet/tabletserver/throttle/throttler.go | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/go/vt/vttablet/tabletserver/tabletserver.go b/go/vt/vttablet/tabletserver/tabletserver.go index 96f43c812c3..3b3b08e9406 100644 --- a/go/vt/vttablet/tabletserver/tabletserver.go +++ b/go/vt/vttablet/tabletserver/tabletserver.go @@ -1788,7 +1788,8 @@ func (tsv *TabletServer) registerThrottlerCheckHandlers() { appName = throttle.DefaultAppName } flags := &throttle.CheckFlags{ - LowPriority: (r.URL.Query().Get("p") == "low"), + LowPriority: (r.URL.Query().Get("p") == "low"), + SkipRequestHeartbeats: (r.URL.Query().Get("s") == "true"), } checkResult := tsv.lagThrottler.CheckByType(ctx, appName, remoteAddr, flags, checkType) if checkResult.StatusCode == http.StatusNotFound && flags.OKIfNotExists { diff --git a/go/vt/vttablet/tabletserver/throttle/check.go b/go/vt/vttablet/tabletserver/throttle/check.go index 5c5096611ca..e4d9e96204f 100644 --- a/go/vt/vttablet/tabletserver/throttle/check.go +++ b/go/vt/vttablet/tabletserver/throttle/check.go @@ -29,10 +29,11 @@ const ( // CheckFlags provide hints for a check type CheckFlags struct { - ReadCheck bool - OverrideThreshold float64 - LowPriority bool - OKIfNotExists bool + ReadCheck bool + OverrideThreshold float64 + LowPriority bool + OKIfNotExists bool + SkipRequestHeartbeats bool } // StandardCheckFlags have no special hints diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 988ab276dfd..f9f94c92f49 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -973,7 +973,7 @@ func (throttler *Throttler) checkSelf(ctx context.Context, appName string, remot // CheckByType runs a check by requested check type func (throttler *Throttler) CheckByType(ctx context.Context, appName string, remoteAddr string, flags *CheckFlags, checkType ThrottleCheckType) (checkResult *CheckResult) { - if throttler.IsEnabled() { + if throttler.IsEnabled() && !flags.SkipRequestHeartbeats { go throttler.heartbeatWriter.RequestHeartbeats() } switch checkType { From df680964bb73231d594ff64dcfe4895aaa0edd4f Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:18:16 +0200 Subject: [PATCH 44/78] wait-based status checks Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler/throttler_test.go | 54 ++++++++--- .../throttler_topo/throttler_test.go | 97 +++++++++++-------- 2 files changed, 97 insertions(+), 54 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index b1ff46eaa47..754d85e1403 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -16,6 +16,7 @@ limitations under the License. package throttler import ( + "context" "flag" "fmt" "io" @@ -29,6 +30,7 @@ import ( "vitess.io/vitess/go/test/endtoend/cluster" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var ( @@ -146,8 +148,8 @@ func throttledApps(tablet *cluster.Vttablet) (resp *http.Response, respBody stri return resp, respBody, err } -func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) { - resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) +func throttleCheck(tablet *cluster.Vttablet, skipRequestHeartbeats bool) (*http.Response, error) { + resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s?s=%t", tablet.HTTPPort, checkAPIPath, skipRequestHeartbeats)) return resp, err } @@ -158,12 +160,40 @@ func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { func warmUpHeartbeat(t *testing.T) (respStatus int) { // because we run with -heartbeat_on_demand_duration=5s, the heartbeat is "cold" right now. // Let's warm it up. - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) time.Sleep(time.Second) assert.NoError(t, err) return resp.StatusCode } +// waitForThrotteCheckStatus waits for the tablet to return the provided HTTP code in a throttle check +func waitForThrotteCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { + _ = warmUpHeartbeat(t) + ctx, cancel := context.WithTimeout(context.Background(), onDemandHeartbeatDuration+applyConfigWait) + defer cancel() + + for { + resp, err := throttleCheck(tablet, true) + require.NoError(t, err) + require.NotNil(t, resp) + + if wantCode == resp.StatusCode { + // Wait for any cached check values to be cleared and the new + // status value to be in effect everywhere before returning. + return + } + select { + case <-ctx.Done(): + b, err := io.ReadAll(resp.Body) + require.NoError(t, err) + + assert.Equal(t, wantCode, resp.StatusCode, "body: %v", string(b)) + default: + time.Sleep(time.Second) + } + } +} + func TestThrottlerAfterMetricsCollected(t *testing.T) { defer cluster.PanicHandler(t) @@ -172,10 +202,8 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { // After a few seconds, the heartbeat lease terminates. We wait for that. // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} t.Run("expect push back once initial heartbeat lease terminates", func(t *testing.T) { - time.Sleep(onDemandHeartbeatDuration + applyConfigWait) - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + time.Sleep(onDemandHeartbeatDuration) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("requesting heartbeats", func(t *testing.T) { respStatus := warmUpHeartbeat(t) @@ -183,13 +211,13 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { }) t.Run("expect OK once heartbeats lease renewed", func(t *testing.T) { time.Sleep(1 * time.Second) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("expect OK once heartbeats lease renewed, still", func(t *testing.T) { time.Sleep(1 * time.Second) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -222,7 +250,7 @@ func TestLag(t *testing.T) { // Lag will have accumulated // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) } @@ -249,7 +277,7 @@ func TestLag(t *testing.T) { assert.NotEqual(t, http.StatusOK, respStatus) time.Sleep(time.Second) { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -277,7 +305,7 @@ func TestNoReplicas(t *testing.T) { // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} respStatus := warmUpHeartbeat(t) assert.Equal(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -289,7 +317,7 @@ func TestNoReplicas(t *testing.T) { // Restore valid replica respStatus := warmUpHeartbeat(t) assert.NotEqual(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index e5ac1898011..5709d48f504 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -81,7 +81,9 @@ var ( ) const ( - throttlerThreshold = 1 * time.Second // standard, tight threshold + throttlerThreshold = 1 * time.Second // standard, tight threshold + unreasonablyLowThreshold = 1 * time.Millisecond + extremelyHighThreshold = 1 * time.Hour replicationCatchUpWait = 10 * time.Second // time to allow replication catchup onDemandHeartbeatDuration = 5 * time.Second applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets @@ -191,8 +193,8 @@ func throttledApps(tablet *cluster.Vttablet) (resp *http.Response, respBody stri return resp, respBody, err } -func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) { - resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath)) +func throttleCheck(tablet *cluster.Vttablet, skipRequestHeartbeats bool) (*http.Response, error) { + resp, err := httpClient.Get(fmt.Sprintf("http://localhost:%d/%s?s=%t", tablet.HTTPPort, checkAPIPath, skipRequestHeartbeats)) return resp, err } @@ -203,12 +205,40 @@ func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) { func warmUpHeartbeat(t *testing.T) (respStatus int) { // because we run with -heartbeat_on_demand_duration=5s, the heartbeat is "cold" right now. // Let's warm it up. - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) time.Sleep(time.Second) assert.NoError(t, err) return resp.StatusCode } +// waitForThrotteCheckStatus waits for the tablet to return the provided HTTP code in a throttle check +func waitForThrotteCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { + _ = warmUpHeartbeat(t) + ctx, cancel := context.WithTimeout(context.Background(), onDemandHeartbeatDuration+applyConfigWait) + defer cancel() + + for { + resp, err := throttleCheck(tablet, true) + require.NoError(t, err) + require.NotNil(t, resp) + + if wantCode == resp.StatusCode { + // Wait for any cached check values to be cleared and the new + // status value to be in effect everywhere before returning. + return + } + select { + case <-ctx.Done(): + b, err := io.ReadAll(resp.Body) + require.NoError(t, err) + + assert.Equal(t, wantCode, resp.StatusCode, "body: %v", string(b)) + default: + time.Sleep(time.Second) + } + } +} + func vtgateExec(t *testing.T, query string, expectError string) *sqltypes.Result { t.Helper() @@ -231,28 +261,25 @@ func TestInitialThrottler(t *testing.T) { defer cluster.PanicHandler(t) t.Run("validating OK response from disabled throttler", func(t *testing.T) { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("enabling throttler with low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, 0.01, "") + output, err := updateThrottlerConfig(true, false, unreasonablyLowThreshold.Seconds(), "") assert.NoError(t, err) assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler", func(t *testing.T) { - time.Sleep(applyConfigWait) - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("disabling throttler", func(t *testing.T) { - output, err := updateThrottlerConfig(false, true, 0.01, "") + output, err := updateThrottlerConfig(false, true, unreasonablyLowThreshold.Seconds(), "") assert.NoError(t, err) assert.NotEmpty(t, output) }) t.Run("validating OK response from disabled throttler, again", func(t *testing.T) { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -262,21 +289,15 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler, again", func(t *testing.T) { - time.Sleep(applyConfigWait) - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("setting high threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(false, false, applyConfigWait.Seconds()+onDemandHeartbeatDuration.Seconds(), "") + output, err := updateThrottlerConfig(false, false, extremelyHighThreshold.Seconds(), "") assert.NoError(t, err) assert.NotEmpty(t, output) }) t.Run("validating OK response from throttler with high threshold", func(t *testing.T) { - time.Sleep(applyConfigWait) - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("setting low threshold", func(t *testing.T) { output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds(), "") @@ -284,10 +305,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler on low threshold", func(t *testing.T) { - time.Sleep(applyConfigWait) - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("requesting heartbeats", func(t *testing.T) { respStatus := warmUpHeartbeat(t) @@ -295,21 +313,18 @@ func TestInitialThrottler(t *testing.T) { }) t.Run("validating OK response from throttler with low threshold, heartbeats running", func(t *testing.T) { time.Sleep(1 * time.Second) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("validating OK response from throttler with low threshold, heartbeats running still", func(t *testing.T) { time.Sleep(1 * time.Second) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("validating pushback response from throttler on low threshold once heartbeats go stale", func(t *testing.T) { - time.Sleep(2 * onDemandHeartbeatDuration) // just... really wait long enough, make sure on-demand stops - resp, err := throttleCheck(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) } @@ -324,7 +339,7 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { assert.NotEqual(t, http.StatusOK, respStatus) time.Sleep(time.Second) { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -357,7 +372,7 @@ func TestLag(t *testing.T) { // Lag will have accumulated // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) } @@ -384,7 +399,7 @@ func TestLag(t *testing.T) { assert.NotEqual(t, http.StatusOK, respStatus) time.Sleep(time.Second) { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -412,7 +427,7 @@ func TestNoReplicas(t *testing.T) { // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} respStatus := warmUpHeartbeat(t) assert.Equal(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -424,7 +439,7 @@ func TestNoReplicas(t *testing.T) { // Restore valid replica respStatus := warmUpHeartbeat(t) assert.NotEqual(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -440,7 +455,7 @@ func TestCustomQuery(t *testing.T) { }) t.Run("validating OK response from throttler with custom query", func(t *testing.T) { time.Sleep(applyConfigWait) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -460,7 +475,7 @@ func TestCustomQuery(t *testing.T) { // by this time we will have testThreshold+1 threads_running, and we should hit the threshold // {"StatusCode":429,"Value":2,"Threshold":2,"Message":"Threshold exceeded"} { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) } @@ -476,7 +491,7 @@ func TestCustomQuery(t *testing.T) { }) t.Run("restored below threshold", func(t *testing.T) { { - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -503,13 +518,13 @@ func TestRestoreDefaultQuery(t *testing.T) { }) t.Run("validating OK response from throttler with low threshold, heartbeats running", func(t *testing.T) { time.Sleep(1 * time.Second) - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("validating pushback response from throttler on low threshold once heartbeats go stale", func(t *testing.T) { time.Sleep(2 * onDemandHeartbeatDuration) // just... really wait long enough, make sure on-demand stops - resp, err := throttleCheck(primaryTablet) + resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) }) From eef3f7e6a85d5ebe64385975127e19ff69ed9bcf Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:34:54 +0200 Subject: [PATCH 45/78] wait-based TestLag Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../throttler_topo/throttler_test.go | 105 +++++++----------- 1 file changed, 42 insertions(+), 63 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 5709d48f504..e732d43898c 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -84,7 +84,6 @@ const ( throttlerThreshold = 1 * time.Second // standard, tight threshold unreasonablyLowThreshold = 1 * time.Millisecond extremelyHighThreshold = 1 * time.Hour - replicationCatchUpWait = 10 * time.Second // time to allow replication catchup onDemandHeartbeatDuration = 5 * time.Second applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets ) @@ -364,85 +363,65 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { func TestLag(t *testing.T) { defer cluster.PanicHandler(t) - { + t.Run("stopping replication", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("StopReplication", replicaTablet.Alias) assert.NoError(t, err) - + }) + t.Run("accumulating lag, expecting throttler push back", func(t *testing.T) { time.Sleep(2 * throttlerThreshold) - // Lag will have accumulated - // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} - { - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(primaryTablet) - assert.NoError(t, err) - // self (on primary) is unaffected by replication lag - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(replicaTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) - } - } - { + + resp, err := throttleCheck(primaryTablet, false) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("primary self-check should still be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + // self (on primary) is unaffected by replication lag + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("replica self-check should show error", func(t *testing.T) { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("starting replication", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("StartReplication", replicaTablet.Alias) assert.NoError(t, err) - - time.Sleep(replicationCatchUpWait) - // Restore - // by now heartbeat lease has expired. Let's warm it up - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - time.Sleep(time.Second) - { - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(replicaTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - } + }) + t.Run("expecting replication to catch up and throttler check to return OK", func(t *testing.T) { + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) + t.Run("primary self-check should be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + // self (on primary) is unaffected by replication lag + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("replica self-check should be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) } func TestNoReplicas(t *testing.T) { defer cluster.PanicHandler(t) - { + t.Run("changing replica to RDONLY", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "RDONLY") assert.NoError(t, err) - time.Sleep(applyConfigWait) // This makes no REPLICA servers available. We expect something like: // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} - respStatus := warmUpHeartbeat(t) - assert.Equal(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) + t.Run("restoring to REPLICA", func(t *testing.T) { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") assert.NoError(t, err) - time.Sleep(applyConfigWait) - // Restore valid replica - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) } func TestCustomQuery(t *testing.T) { From bc4811ae8a7c675e7d1cd692048f4b557ead6b0a Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:41:14 +0200 Subject: [PATCH 46/78] reorganizing, cleanup Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler/throttler_test.go | 107 +++++++----------- .../throttler_topo/throttler_test.go | 24 ++-- 2 files changed, 52 insertions(+), 79 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index 754d85e1403..75aa2f40774 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -75,8 +75,7 @@ var ( ) const ( - throttlerThreshold = 1 * time.Second // standard, tight threshold - replicationCatchUpWait = 10 * time.Second // time to allow replication catchup + throttlerThreshold = 1 * time.Second // standard, tight threshold onDemandHeartbeatDuration = 5 * time.Second applyConfigWait = 15 * time.Second // time after which we're sure the throttler has refreshed config and tablets ) @@ -242,83 +241,63 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { func TestLag(t *testing.T) { defer cluster.PanicHandler(t) - { + t.Run("stopping replication", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("StopReplication", replicaTablet.Alias) assert.NoError(t, err) - + }) + t.Run("accumulating lag, expecting throttler push back", func(t *testing.T) { time.Sleep(2 * throttlerThreshold) - // Lag will have accumulated - // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} - { - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(primaryTablet) - assert.NoError(t, err) - // self (on primary) is unaffected by replication lag - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(replicaTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) - } - } - { + + resp, err := throttleCheck(primaryTablet, false) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("primary self-check should still be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + // self (on primary) is unaffected by replication lag + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("replica self-check should show error", func(t *testing.T) { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + }) + t.Run("starting replication", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("StartReplication", replicaTablet.Alias) assert.NoError(t, err) - - time.Sleep(replicationCatchUpWait) - // Restore - // by now heartbeat lease has expired. Let's warm it up - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - time.Sleep(time.Second) - { - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(primaryTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { - resp, err := throttleCheckSelf(replicaTablet) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - } + }) + t.Run("expecting replication to catch up and throttler check to return OK", func(t *testing.T) { + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) + t.Run("primary self-check should be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(primaryTablet) + assert.NoError(t, err) + // self (on primary) is unaffected by replication lag + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) + t.Run("replica self-check should be fine", func(t *testing.T) { + resp, err := throttleCheckSelf(replicaTablet) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + }) } func TestNoReplicas(t *testing.T) { defer cluster.PanicHandler(t) - { + t.Run("changing replica to RDONLY", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "RDONLY") assert.NoError(t, err) - time.Sleep(applyConfigWait) // This makes no REPLICA servers available. We expect something like: // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} - respStatus := warmUpHeartbeat(t) - assert.Equal(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) + t.Run("restoring to REPLICA", func(t *testing.T) { + err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") assert.NoError(t, err) - time.Sleep(applyConfigWait) - // Restore valid replica - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) } diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index e732d43898c..c2863c99bc1 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -330,34 +330,28 @@ func TestInitialThrottler(t *testing.T) { func TestThrottlerAfterMetricsCollected(t *testing.T) { defer cluster.PanicHandler(t) - time.Sleep(applyConfigWait) // By this time metrics will have been collected. We expect no lag, and something like: // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""} // - respStatus := warmUpHeartbeat(t) - assert.NotEqual(t, http.StatusOK, respStatus) - time.Sleep(time.Second) - { - resp, err := throttleCheck(primaryTablet, false) - assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + t.Run("validating throttler OK", func(t *testing.T) { + waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + }) + t.Run("validating throttled apps", func(t *testing.T) { resp, body, err := throttledApps(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Contains(t, body, "always-throttled-app") - } - { + }) + t.Run("validating primary check self", func(t *testing.T) { resp, err := throttleCheckSelf(primaryTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } - { + }) + t.Run("validating replica check self", func(t *testing.T) { resp, err := throttleCheckSelf(replicaTablet) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) - } + }) } func TestLag(t *testing.T) { From 0a5c287a6d1f6ae2191c42bdf20831114e950949 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:47:13 +0200 Subject: [PATCH 47/78] remove excessive sleep Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index c2863c99bc1..268e582854c 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -427,7 +427,6 @@ func TestCustomQuery(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating OK response from throttler with custom query", func(t *testing.T) { - time.Sleep(applyConfigWait) resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) From f924ef91b13c8b28af63190edc948e97d1d06a44 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:54:14 +0200 Subject: [PATCH 48/78] vtctl subflags use dashes Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler_topo/throttler_test.go | 6 +++--- go/vt/vtctl/vtctl.go | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 268e582854c..27eac47a4f1 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -170,10 +170,10 @@ func updateThrottlerConfig(enable bool, disable bool, threshold float64, metrics args = append(args, "--threshold", fmt.Sprintf("%f", threshold)) } if metricsQuery != "" { - args = append(args, "--custom_query", metricsQuery) - args = append(args, "--check_as_check_self") + args = append(args, "--custom-query", metricsQuery) + args = append(args, "--check-as-check-self") } else { - args = append(args, "--check_as_check_shard") + args = append(args, "--check-as-check-shard") } args = append(args, keyspaceName) return clusterInstance.VtctlclientProcess.ExecuteCommandWithOutput(args...) diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index e55a52f9374..2bb153b397e 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -710,7 +710,7 @@ var commands = []commandGroup{ { name: "UpdateThrottlerConfig", method: commandUpdateThrottlerConfig, - params: "[--enable] [--disable] [--default_threshold=] ", + params: "[--enable|--disable] [--threshold=] [--custom-query=] [--check-as-check-self|--check-as-check-shard] ", help: "Update the table throttler configuration for all cells and tablets of a given keyspace", }, { @@ -3655,9 +3655,9 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su enable := subFlags.Bool("enable", false, "Enable the throttler") disable := subFlags.Bool("disable", false, "Disable the throttler") threshold := subFlags.Float64("threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - customQuery := subFlags.String("custom_query", noValueIndicator, "custom throttler check query") - checkAsCheckSelf := subFlags.Bool("check_as_check_self", false, "/throttler/check requests behave as is /throttler/check-self was called") - checkAsCheckShard := subFlags.Bool("check_as_check_shard", false, "use standard behavior for /throttler/check requests") + customQuery := subFlags.String("custom-query", noValueIndicator, "custom throttler check query") + checkAsCheckSelf := subFlags.Bool("check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") + checkAsCheckShard := subFlags.Bool("check-as-check-shard", false, "use standard behavior for /throttler/check requests") if err := subFlags.Parse(args); err != nil { return err From f07f7e4b6ac94b1a012582caeffb8bbc23804b54 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:55:53 +0200 Subject: [PATCH 49/78] validate mutually exclusive flags Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtctl/vtctl.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 2bb153b397e..753a73b56e2 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -3668,6 +3668,9 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su if *enable && *disable { return fmt.Errorf("--enable and --disable are mutually exclusive") } + if *checkAsCheckSelf && *checkAsCheckShard { + return fmt.Errorf("--check-as-check-self and --check-as-check-shard are mutually exclusive") + } keyspace := subFlags.Arg(0) From 25d90778682f80d9a5fb1d94866fee38fc68c90f Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:53:50 +0200 Subject: [PATCH 50/78] fix cli test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vttablet.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 7453ffd9d7f..74497ffd6dd 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -298,11 +298,11 @@ Usage of vttablet: --tablet_manager_protocol string Protocol to use to make tabletmanager RPCs to vttablets. (default "grpc") --tablet_protocol string Protocol to use to make queryservice RPCs to vttablets. (default "grpc") --throttle_check_as_check_self Should throttler/check return a throttler/check-self result (changes throttler behavior for writes) - --throttler-config-via-topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self --throttle_metrics_query SELECT Override default heartbeat/lag metric. Use either SELECT (must return single row, single value) or `SHOW GLOBAL ... LIKE ...` queries. Set -throttle_metrics_threshold respectively. --throttle_metrics_threshold float Override default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308) --throttle_tablet_types string Comma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica") --throttle_threshold duration Replication lag threshold for default lag throttling (default 1s) + --throttler-config-via-topo When 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self --topo_consul_lock_delay duration LockDelay for consul session. (default 15s) --topo_consul_lock_session_checks string List of checks for consul session. (default "serfHealth") --topo_consul_lock_session_ttl string TTL for consul session. From e8603b1324d00f72936ddb8c215ae0925d217131 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 3 Nov 2022 12:41:58 +0200 Subject: [PATCH 51/78] empty commit to kick CI Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> From 45705002151e5edc6e6a3e8793375ef807c72d71 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 09:24:13 +0200 Subject: [PATCH 52/78] disable active reparents on tests Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/tabletmanager/throttler/throttler_test.go | 1 + go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index 75aa2f40774..35758804a88 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -104,6 +104,7 @@ func TestMain(m *testing.M) { "--heartbeat_enable", "--heartbeat_interval", "250ms", "--heartbeat_on_demand_duration", onDemandHeartbeatDuration.String(), + "--disable_active_reparents", } // We do not need semiSync for this test case. clusterInstance.EnableSemiSync = false diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 27eac47a4f1..3d8d0108c85 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -112,6 +112,7 @@ func TestMain(m *testing.M) { "--heartbeat_enable", "--heartbeat_interval", "250ms", "--heartbeat_on_demand_duration", onDemandHeartbeatDuration.String(), + "--disable_active_reparents", } // We do not need semiSync for this test case. clusterInstance.EnableSemiSync = false From c8bea17b5e65dfd5f53abce5a562ac0a50990ee1 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 09:33:56 +0200 Subject: [PATCH 53/78] do not return list of cells. Instead, just return exit code Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtctl/vtctl.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 753a73b56e2..02802df5eb1 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -3709,12 +3709,8 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su } defer unlock(&err) - updatedCells, err := wr.TopoServer().UpdateSrvKeyspaceThrottlerConfig(ctx, keyspace, []string{}, update) - if err != nil { - return err - } - - return printJSON(wr.Logger(), updatedCells) + _, err = wr.TopoServer().UpdateSrvKeyspaceThrottlerConfig(ctx, keyspace, []string{}, update) + return err } func commandGetSrvVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) error { From f57627589eff4483007de7282b339304b75da6ce Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 09:37:40 +0200 Subject: [PATCH 54/78] improve error message Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/throttler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/vt/vtgate/planbuilder/throttler.go b/go/vt/vtgate/planbuilder/throttler.go index ed9ef4ef709..8e05a72d4be 100644 --- a/go/vt/vtgate/planbuilder/throttler.go +++ b/go/vt/vtgate/planbuilder/throttler.go @@ -55,7 +55,7 @@ func buildShowThrottlerStatusPlan(query string, vschema plancontext.VSchema) (*p return nil, err } if ks == nil { - return nil, vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.NoDB, "No database selected: use keyspace<:shard><@type> or keyspace<[range]><@type> (<> are optional)") + return nil, vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.NoDB, "No database selected: use keyspace<:shard> or keyspace<[range]> (<> are optional)") } if tabletType != topodatapb.TabletType_PRIMARY { From af0a0703807fa38d8da8ecf791366d6b3a9b2fd5 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 09:47:30 +0200 Subject: [PATCH 55/78] typo Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler/throttler_test.go | 12 +++++----- .../throttler_topo/throttler_test.go | 22 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index 35758804a88..e0d5c867472 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -166,8 +166,8 @@ func warmUpHeartbeat(t *testing.T) (respStatus int) { return resp.StatusCode } -// waitForThrotteCheckStatus waits for the tablet to return the provided HTTP code in a throttle check -func waitForThrotteCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { +// waitForThrottleCheckStatus waits for the tablet to return the provided HTTP code in a throttle check +func waitForThrottleCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { _ = warmUpHeartbeat(t) ctx, cancel := context.WithTimeout(context.Background(), onDemandHeartbeatDuration+applyConfigWait) defer cancel() @@ -203,7 +203,7 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { // {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"} t.Run("expect push back once initial heartbeat lease terminates", func(t *testing.T) { time.Sleep(onDemandHeartbeatDuration) - waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("requesting heartbeats", func(t *testing.T) { respStatus := warmUpHeartbeat(t) @@ -269,7 +269,7 @@ func TestLag(t *testing.T) { assert.NoError(t, err) }) t.Run("expecting replication to catch up and throttler check to return OK", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("primary self-check should be fine", func(t *testing.T) { resp, err := throttleCheckSelf(primaryTablet) @@ -292,13 +292,13 @@ func TestNoReplicas(t *testing.T) { // This makes no REPLICA servers available. We expect something like: // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("restoring to REPLICA", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") assert.NoError(t, err) - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) } diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 3d8d0108c85..0ca4feaacee 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -211,8 +211,8 @@ func warmUpHeartbeat(t *testing.T) (respStatus int) { return resp.StatusCode } -// waitForThrotteCheckStatus waits for the tablet to return the provided HTTP code in a throttle check -func waitForThrotteCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { +// waitForThrottleCheckStatus waits for the tablet to return the provided HTTP code in a throttle check +func waitForThrottleCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode int) { _ = warmUpHeartbeat(t) ctx, cancel := context.WithTimeout(context.Background(), onDemandHeartbeatDuration+applyConfigWait) defer cancel() @@ -271,7 +271,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("disabling throttler", func(t *testing.T) { output, err := updateThrottlerConfig(false, true, unreasonablyLowThreshold.Seconds(), "") @@ -289,7 +289,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler, again", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("setting high threshold", func(t *testing.T) { output, err := updateThrottlerConfig(false, false, extremelyHighThreshold.Seconds(), "") @@ -297,7 +297,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating OK response from throttler with high threshold", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("setting low threshold", func(t *testing.T) { output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds(), "") @@ -305,7 +305,7 @@ func TestInitialThrottler(t *testing.T) { assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler on low threshold", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("requesting heartbeats", func(t *testing.T) { respStatus := warmUpHeartbeat(t) @@ -324,7 +324,7 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("validating pushback response from throttler on low threshold once heartbeats go stale", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusTooManyRequests) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) } @@ -335,7 +335,7 @@ func TestThrottlerAfterMetricsCollected(t *testing.T) { // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""} // t.Run("validating throttler OK", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("validating throttled apps", func(t *testing.T) { resp, body, err := throttledApps(primaryTablet) @@ -385,7 +385,7 @@ func TestLag(t *testing.T) { assert.NoError(t, err) }) t.Run("expecting replication to catch up and throttler check to return OK", func(t *testing.T) { - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("primary self-check should be fine", func(t *testing.T) { resp, err := throttleCheckSelf(primaryTablet) @@ -408,14 +408,14 @@ func TestNoReplicas(t *testing.T) { // This makes no REPLICA servers available. We expect something like: // {"StatusCode":200,"Value":0,"Threshold":1,"Message":""} - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("restoring to REPLICA", func(t *testing.T) { err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA") assert.NoError(t, err) - waitForThrotteCheckStatus(t, primaryTablet, http.StatusOK) + waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) } From d2a9823b4d13c66f7fce3b86b6767cedac8e51fd Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 09:48:19 +0200 Subject: [PATCH 56/78] copyright year Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 0ca4feaacee..0b1820fd6c0 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -1,5 +1,5 @@ /* -Copyright 2020 The Vitess Authors. +Copyright 2022 The Vitess Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 06d34ec2286f26bc73f5b6fce2208d96b72fadb8 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 15:23:10 +0200 Subject: [PATCH 57/78] vtctldclient: support UpdateThrottlerConfig Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/serving_graph.go | 46 + go/vt/proto/vtctldata/vtctldata.pb.go | 2847 +++++++++-------- go/vt/proto/vtctldata/vtctldata_vtproto.pb.go | 389 +++ go/vt/proto/vtctlservice/vtctlservice.pb.go | 1080 +++---- .../vtctlservice/vtctlservice_grpc.pb.go | 38 + go/vt/vtctl/grpcvtctldclient/client_gen.go | 9 + go/vt/vtctl/localvtctldclient/client_gen.go | 5 + proto/vtctldata.proto | 18 + proto/vtctlservice.proto | 2 + 9 files changed, 2563 insertions(+), 1871 deletions(-) diff --git a/go/cmd/vtctldclient/command/serving_graph.go b/go/cmd/vtctldclient/command/serving_graph.go index 899471ed05e..1f303df82f9 100644 --- a/go/cmd/vtctldclient/command/serving_graph.go +++ b/go/cmd/vtctldclient/command/serving_graph.go @@ -51,6 +51,14 @@ var ( Args: cobra.MinimumNArgs(1), RunE: commandGetSrvKeyspaces, } + // UpdateThrottlerConfig makes a UpdateThrottlerConfig gRPC call to a vtctld. + UpdateThrottlerConfig = &cobra.Command{ + Use: "UpdateThrottlerConfig [--enable|--disable] [--threshold=] [--custom-query=] [--check-as-check-self|--check-as-check-shard] ", + Short: "Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided).", + DisableFlagsInUseLine: true, + Args: cobra.ExactArgs(1), + RunE: commandUpdateThrottlerConfig, + } // GetSrvVSchema makes a GetSrvVSchema gRPC call to a vtctld. GetSrvVSchema = &cobra.Command{ Use: "GetSrvVSchema cell", @@ -140,6 +148,35 @@ func commandGetSrvKeyspaces(cmd *cobra.Command, args []string) error { return nil } +var updateThrottlerConfigOptions = struct { + Enable bool + Disable bool + Threshold float64 + CustomQuery string + CheckAsCheckSelf bool + CheckAsCheckShard bool +}{} + +func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { + cli.FinishedParsing(cmd) + + _, err := client.UpdateThrottlerConfig(commandCtx, &vtctldatapb.UpdateThrottlerConfigRequest{ + Enable: updateThrottlerConfigOptions.Enable, + Disable: updateThrottlerConfigOptions.Disable, + Threshold: updateThrottlerConfigOptions.Threshold, + CustomQuery: updateThrottlerConfigOptions.CustomQuery, + CheckAsCheckSelf: updateThrottlerConfigOptions.CheckAsCheckSelf, + CheckAsCheckShard: updateThrottlerConfigOptions.CheckAsCheckShard, + }) + if err != nil { + return err + } + + fmt.Println("UpdateThrottlerConfig: ok") + + return nil +} + func commandGetSrvVSchema(cmd *cobra.Command, args []string) error { cli.FinishedParsing(cmd) @@ -245,4 +282,13 @@ func init() { RebuildVSchemaGraph.Flags().StringSliceVarP(&rebuildVSchemaGraphOptions.Cells, "cells", "c", nil, "Specifies a comma-separated list of cells to look for tablets.") Root.AddCommand(RebuildVSchemaGraph) + + noValueIndicator := "~" + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Enable, "enable", false, "Enable the throttler") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Disable, "disable", false, "Disable the throttler") + UpdateThrottlerConfig.Flags().Float64Var(&updateThrottlerConfigOptions.Threshold, "threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") + UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", noValueIndicator, "custom throttler check query") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckSelf, "check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckShard, "check-as-check-shard", false, "use standard behavior for /throttler/check requests") + Root.AddCommand(UpdateThrottlerConfig) } diff --git a/go/vt/proto/vtctldata/vtctldata.pb.go b/go/vt/proto/vtctldata/vtctldata.pb.go index bee3b7c9dad..b04b435a0af 100644 --- a/go/vt/proto/vtctldata/vtctldata.pb.go +++ b/go/vt/proto/vtctldata/vtctldata.pb.go @@ -4582,6 +4582,137 @@ func (x *GetSrvKeyspacesResponse) GetSrvKeyspaces() map[string]*topodata.SrvKeys return nil } +type UpdateThrottlerConfigRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Enable instructs to enable the throttler + Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` + // Disable instructs to disable the throttler + Disable bool `protobuf:"varint,2,opt,name=disable,proto3" json:"disable,omitempty"` + // Threshold for throttler (with no custom query, ie using default query, only positive values are considered) + Threshold float64 `protobuf:"fixed64,3,opt,name=threshold,proto3" json:"threshold,omitempty"` + // CustomQuery replaces the default replication lag query + CustomQuery string `protobuf:"bytes,4,opt,name=custom_query,json=customQuery,proto3" json:"custom_query,omitempty"` + // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health + CheckAsCheckSelf bool `protobuf:"varint,5,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` + // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) + CheckAsCheckShard bool `protobuf:"varint,6,opt,name=check_as_check_shard,json=checkAsCheckShard,proto3" json:"check_as_check_shard,omitempty"` +} + +func (x *UpdateThrottlerConfigRequest) Reset() { + *x = UpdateThrottlerConfigRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_vtctldata_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateThrottlerConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateThrottlerConfigRequest) ProtoMessage() {} + +func (x *UpdateThrottlerConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_vtctldata_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateThrottlerConfigRequest.ProtoReflect.Descriptor instead. +func (*UpdateThrottlerConfigRequest) Descriptor() ([]byte, []int) { + return file_vtctldata_proto_rawDescGZIP(), []int{78} +} + +func (x *UpdateThrottlerConfigRequest) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +func (x *UpdateThrottlerConfigRequest) GetDisable() bool { + if x != nil { + return x.Disable + } + return false +} + +func (x *UpdateThrottlerConfigRequest) GetThreshold() float64 { + if x != nil { + return x.Threshold + } + return 0 +} + +func (x *UpdateThrottlerConfigRequest) GetCustomQuery() string { + if x != nil { + return x.CustomQuery + } + return "" +} + +func (x *UpdateThrottlerConfigRequest) GetCheckAsCheckSelf() bool { + if x != nil { + return x.CheckAsCheckSelf + } + return false +} + +func (x *UpdateThrottlerConfigRequest) GetCheckAsCheckShard() bool { + if x != nil { + return x.CheckAsCheckShard + } + return false +} + +type UpdateThrottlerConfigResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpdateThrottlerConfigResponse) Reset() { + *x = UpdateThrottlerConfigResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vtctldata_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateThrottlerConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateThrottlerConfigResponse) ProtoMessage() {} + +func (x *UpdateThrottlerConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_vtctldata_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateThrottlerConfigResponse.ProtoReflect.Descriptor instead. +func (*UpdateThrottlerConfigResponse) Descriptor() ([]byte, []int) { + return file_vtctldata_proto_rawDescGZIP(), []int{79} +} + type GetSrvVSchemaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4593,7 +4724,7 @@ type GetSrvVSchemaRequest struct { func (x *GetSrvVSchemaRequest) Reset() { *x = GetSrvVSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[78] + mi := &file_vtctldata_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4606,7 +4737,7 @@ func (x *GetSrvVSchemaRequest) String() string { func (*GetSrvVSchemaRequest) ProtoMessage() {} func (x *GetSrvVSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[78] + mi := &file_vtctldata_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4619,7 +4750,7 @@ func (x *GetSrvVSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSrvVSchemaRequest.ProtoReflect.Descriptor instead. func (*GetSrvVSchemaRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{78} + return file_vtctldata_proto_rawDescGZIP(), []int{80} } func (x *GetSrvVSchemaRequest) GetCell() string { @@ -4640,7 +4771,7 @@ type GetSrvVSchemaResponse struct { func (x *GetSrvVSchemaResponse) Reset() { *x = GetSrvVSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[79] + mi := &file_vtctldata_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4653,7 +4784,7 @@ func (x *GetSrvVSchemaResponse) String() string { func (*GetSrvVSchemaResponse) ProtoMessage() {} func (x *GetSrvVSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[79] + mi := &file_vtctldata_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4666,7 +4797,7 @@ func (x *GetSrvVSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSrvVSchemaResponse.ProtoReflect.Descriptor instead. func (*GetSrvVSchemaResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{79} + return file_vtctldata_proto_rawDescGZIP(), []int{81} } func (x *GetSrvVSchemaResponse) GetSrvVSchema() *vschema.SrvVSchema { @@ -4687,7 +4818,7 @@ type GetSrvVSchemasRequest struct { func (x *GetSrvVSchemasRequest) Reset() { *x = GetSrvVSchemasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[80] + mi := &file_vtctldata_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4700,7 +4831,7 @@ func (x *GetSrvVSchemasRequest) String() string { func (*GetSrvVSchemasRequest) ProtoMessage() {} func (x *GetSrvVSchemasRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[80] + mi := &file_vtctldata_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4713,7 +4844,7 @@ func (x *GetSrvVSchemasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSrvVSchemasRequest.ProtoReflect.Descriptor instead. func (*GetSrvVSchemasRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{80} + return file_vtctldata_proto_rawDescGZIP(), []int{82} } func (x *GetSrvVSchemasRequest) GetCells() []string { @@ -4735,7 +4866,7 @@ type GetSrvVSchemasResponse struct { func (x *GetSrvVSchemasResponse) Reset() { *x = GetSrvVSchemasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[81] + mi := &file_vtctldata_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4748,7 +4879,7 @@ func (x *GetSrvVSchemasResponse) String() string { func (*GetSrvVSchemasResponse) ProtoMessage() {} func (x *GetSrvVSchemasResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[81] + mi := &file_vtctldata_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4761,7 +4892,7 @@ func (x *GetSrvVSchemasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSrvVSchemasResponse.ProtoReflect.Descriptor instead. func (*GetSrvVSchemasResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{81} + return file_vtctldata_proto_rawDescGZIP(), []int{83} } func (x *GetSrvVSchemasResponse) GetSrvVSchemas() map[string]*vschema.SrvVSchema { @@ -4782,7 +4913,7 @@ type GetTabletRequest struct { func (x *GetTabletRequest) Reset() { *x = GetTabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[82] + mi := &file_vtctldata_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4795,7 +4926,7 @@ func (x *GetTabletRequest) String() string { func (*GetTabletRequest) ProtoMessage() {} func (x *GetTabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[82] + mi := &file_vtctldata_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4808,7 +4939,7 @@ func (x *GetTabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTabletRequest.ProtoReflect.Descriptor instead. func (*GetTabletRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{82} + return file_vtctldata_proto_rawDescGZIP(), []int{84} } func (x *GetTabletRequest) GetTabletAlias() *topodata.TabletAlias { @@ -4829,7 +4960,7 @@ type GetTabletResponse struct { func (x *GetTabletResponse) Reset() { *x = GetTabletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[83] + mi := &file_vtctldata_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4842,7 +4973,7 @@ func (x *GetTabletResponse) String() string { func (*GetTabletResponse) ProtoMessage() {} func (x *GetTabletResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[83] + mi := &file_vtctldata_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4855,7 +4986,7 @@ func (x *GetTabletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTabletResponse.ProtoReflect.Descriptor instead. func (*GetTabletResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{83} + return file_vtctldata_proto_rawDescGZIP(), []int{85} } func (x *GetTabletResponse) GetTablet() *topodata.Tablet { @@ -4897,7 +5028,7 @@ type GetTabletsRequest struct { func (x *GetTabletsRequest) Reset() { *x = GetTabletsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[84] + mi := &file_vtctldata_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4910,7 +5041,7 @@ func (x *GetTabletsRequest) String() string { func (*GetTabletsRequest) ProtoMessage() {} func (x *GetTabletsRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[84] + mi := &file_vtctldata_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,7 +5054,7 @@ func (x *GetTabletsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTabletsRequest.ProtoReflect.Descriptor instead. func (*GetTabletsRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{84} + return file_vtctldata_proto_rawDescGZIP(), []int{86} } func (x *GetTabletsRequest) GetKeyspace() string { @@ -4979,7 +5110,7 @@ type GetTabletsResponse struct { func (x *GetTabletsResponse) Reset() { *x = GetTabletsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[85] + mi := &file_vtctldata_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4992,7 +5123,7 @@ func (x *GetTabletsResponse) String() string { func (*GetTabletsResponse) ProtoMessage() {} func (x *GetTabletsResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[85] + mi := &file_vtctldata_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5005,7 +5136,7 @@ func (x *GetTabletsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTabletsResponse.ProtoReflect.Descriptor instead. func (*GetTabletsResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{85} + return file_vtctldata_proto_rawDescGZIP(), []int{87} } func (x *GetTabletsResponse) GetTablets() []*topodata.Tablet { @@ -5026,7 +5157,7 @@ type GetTopologyPathRequest struct { func (x *GetTopologyPathRequest) Reset() { *x = GetTopologyPathRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[86] + mi := &file_vtctldata_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5039,7 +5170,7 @@ func (x *GetTopologyPathRequest) String() string { func (*GetTopologyPathRequest) ProtoMessage() {} func (x *GetTopologyPathRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[86] + mi := &file_vtctldata_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5052,7 +5183,7 @@ func (x *GetTopologyPathRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTopologyPathRequest.ProtoReflect.Descriptor instead. func (*GetTopologyPathRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{86} + return file_vtctldata_proto_rawDescGZIP(), []int{88} } func (x *GetTopologyPathRequest) GetPath() string { @@ -5073,7 +5204,7 @@ type GetTopologyPathResponse struct { func (x *GetTopologyPathResponse) Reset() { *x = GetTopologyPathResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[87] + mi := &file_vtctldata_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5086,7 +5217,7 @@ func (x *GetTopologyPathResponse) String() string { func (*GetTopologyPathResponse) ProtoMessage() {} func (x *GetTopologyPathResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[87] + mi := &file_vtctldata_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5099,7 +5230,7 @@ func (x *GetTopologyPathResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTopologyPathResponse.ProtoReflect.Descriptor instead. func (*GetTopologyPathResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{87} + return file_vtctldata_proto_rawDescGZIP(), []int{89} } func (x *GetTopologyPathResponse) GetCell() *TopologyCell { @@ -5125,7 +5256,7 @@ type TopologyCell struct { func (x *TopologyCell) Reset() { *x = TopologyCell{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[88] + mi := &file_vtctldata_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5138,7 +5269,7 @@ func (x *TopologyCell) String() string { func (*TopologyCell) ProtoMessage() {} func (x *TopologyCell) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[88] + mi := &file_vtctldata_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5151,7 +5282,7 @@ func (x *TopologyCell) ProtoReflect() protoreflect.Message { // Deprecated: Use TopologyCell.ProtoReflect.Descriptor instead. func (*TopologyCell) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{88} + return file_vtctldata_proto_rawDescGZIP(), []int{90} } func (x *TopologyCell) GetName() string { @@ -5193,7 +5324,7 @@ type GetVSchemaRequest struct { func (x *GetVSchemaRequest) Reset() { *x = GetVSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[89] + mi := &file_vtctldata_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5206,7 +5337,7 @@ func (x *GetVSchemaRequest) String() string { func (*GetVSchemaRequest) ProtoMessage() {} func (x *GetVSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[89] + mi := &file_vtctldata_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5219,7 +5350,7 @@ func (x *GetVSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVSchemaRequest.ProtoReflect.Descriptor instead. func (*GetVSchemaRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{89} + return file_vtctldata_proto_rawDescGZIP(), []int{91} } func (x *GetVSchemaRequest) GetKeyspace() string { @@ -5240,7 +5371,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[90] + mi := &file_vtctldata_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5253,7 +5384,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[90] + mi := &file_vtctldata_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5266,7 +5397,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{90} + return file_vtctldata_proto_rawDescGZIP(), []int{92} } func (x *GetVersionRequest) GetTabletAlias() *topodata.TabletAlias { @@ -5287,7 +5418,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[91] + mi := &file_vtctldata_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5300,7 +5431,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[91] + mi := &file_vtctldata_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5313,7 +5444,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{91} + return file_vtctldata_proto_rawDescGZIP(), []int{93} } func (x *GetVersionResponse) GetVersion() string { @@ -5334,7 +5465,7 @@ type GetVSchemaResponse struct { func (x *GetVSchemaResponse) Reset() { *x = GetVSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[92] + mi := &file_vtctldata_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5347,7 +5478,7 @@ func (x *GetVSchemaResponse) String() string { func (*GetVSchemaResponse) ProtoMessage() {} func (x *GetVSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[92] + mi := &file_vtctldata_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5360,7 +5491,7 @@ func (x *GetVSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVSchemaResponse.ProtoReflect.Descriptor instead. func (*GetVSchemaResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{92} + return file_vtctldata_proto_rawDescGZIP(), []int{94} } func (x *GetVSchemaResponse) GetVSchema() *vschema.Keyspace { @@ -5382,7 +5513,7 @@ type GetWorkflowsRequest struct { func (x *GetWorkflowsRequest) Reset() { *x = GetWorkflowsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[93] + mi := &file_vtctldata_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5395,7 +5526,7 @@ func (x *GetWorkflowsRequest) String() string { func (*GetWorkflowsRequest) ProtoMessage() {} func (x *GetWorkflowsRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[93] + mi := &file_vtctldata_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5408,7 +5539,7 @@ func (x *GetWorkflowsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowsRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowsRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{93} + return file_vtctldata_proto_rawDescGZIP(), []int{95} } func (x *GetWorkflowsRequest) GetKeyspace() string { @@ -5436,7 +5567,7 @@ type GetWorkflowsResponse struct { func (x *GetWorkflowsResponse) Reset() { *x = GetWorkflowsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[94] + mi := &file_vtctldata_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5449,7 +5580,7 @@ func (x *GetWorkflowsResponse) String() string { func (*GetWorkflowsResponse) ProtoMessage() {} func (x *GetWorkflowsResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[94] + mi := &file_vtctldata_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5462,7 +5593,7 @@ func (x *GetWorkflowsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowsResponse.ProtoReflect.Descriptor instead. func (*GetWorkflowsResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{94} + return file_vtctldata_proto_rawDescGZIP(), []int{96} } func (x *GetWorkflowsResponse) GetWorkflows() []*Workflow { @@ -5487,7 +5618,7 @@ type InitShardPrimaryRequest struct { func (x *InitShardPrimaryRequest) Reset() { *x = InitShardPrimaryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[95] + mi := &file_vtctldata_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5500,7 +5631,7 @@ func (x *InitShardPrimaryRequest) String() string { func (*InitShardPrimaryRequest) ProtoMessage() {} func (x *InitShardPrimaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[95] + mi := &file_vtctldata_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5513,7 +5644,7 @@ func (x *InitShardPrimaryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitShardPrimaryRequest.ProtoReflect.Descriptor instead. func (*InitShardPrimaryRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{95} + return file_vtctldata_proto_rawDescGZIP(), []int{97} } func (x *InitShardPrimaryRequest) GetKeyspace() string { @@ -5562,7 +5693,7 @@ type InitShardPrimaryResponse struct { func (x *InitShardPrimaryResponse) Reset() { *x = InitShardPrimaryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[96] + mi := &file_vtctldata_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5575,7 +5706,7 @@ func (x *InitShardPrimaryResponse) String() string { func (*InitShardPrimaryResponse) ProtoMessage() {} func (x *InitShardPrimaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[96] + mi := &file_vtctldata_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5588,7 +5719,7 @@ func (x *InitShardPrimaryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitShardPrimaryResponse.ProtoReflect.Descriptor instead. func (*InitShardPrimaryResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{96} + return file_vtctldata_proto_rawDescGZIP(), []int{98} } func (x *InitShardPrimaryResponse) GetEvents() []*logutil.Event { @@ -5609,7 +5740,7 @@ type PingTabletRequest struct { func (x *PingTabletRequest) Reset() { *x = PingTabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[97] + mi := &file_vtctldata_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5622,7 +5753,7 @@ func (x *PingTabletRequest) String() string { func (*PingTabletRequest) ProtoMessage() {} func (x *PingTabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[97] + mi := &file_vtctldata_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5635,7 +5766,7 @@ func (x *PingTabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PingTabletRequest.ProtoReflect.Descriptor instead. func (*PingTabletRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{97} + return file_vtctldata_proto_rawDescGZIP(), []int{99} } func (x *PingTabletRequest) GetTabletAlias() *topodata.TabletAlias { @@ -5654,7 +5785,7 @@ type PingTabletResponse struct { func (x *PingTabletResponse) Reset() { *x = PingTabletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[98] + mi := &file_vtctldata_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5667,7 +5798,7 @@ func (x *PingTabletResponse) String() string { func (*PingTabletResponse) ProtoMessage() {} func (x *PingTabletResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[98] + mi := &file_vtctldata_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5680,7 +5811,7 @@ func (x *PingTabletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingTabletResponse.ProtoReflect.Descriptor instead. func (*PingTabletResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{98} + return file_vtctldata_proto_rawDescGZIP(), []int{100} } type PlannedReparentShardRequest struct { @@ -5715,7 +5846,7 @@ type PlannedReparentShardRequest struct { func (x *PlannedReparentShardRequest) Reset() { *x = PlannedReparentShardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[99] + mi := &file_vtctldata_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5728,7 +5859,7 @@ func (x *PlannedReparentShardRequest) String() string { func (*PlannedReparentShardRequest) ProtoMessage() {} func (x *PlannedReparentShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[99] + mi := &file_vtctldata_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5741,7 +5872,7 @@ func (x *PlannedReparentShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PlannedReparentShardRequest.ProtoReflect.Descriptor instead. func (*PlannedReparentShardRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{99} + return file_vtctldata_proto_rawDescGZIP(), []int{101} } func (x *PlannedReparentShardRequest) GetKeyspace() string { @@ -5799,7 +5930,7 @@ type PlannedReparentShardResponse struct { func (x *PlannedReparentShardResponse) Reset() { *x = PlannedReparentShardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[100] + mi := &file_vtctldata_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5812,7 +5943,7 @@ func (x *PlannedReparentShardResponse) String() string { func (*PlannedReparentShardResponse) ProtoMessage() {} func (x *PlannedReparentShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[100] + mi := &file_vtctldata_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5825,7 +5956,7 @@ func (x *PlannedReparentShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PlannedReparentShardResponse.ProtoReflect.Descriptor instead. func (*PlannedReparentShardResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{100} + return file_vtctldata_proto_rawDescGZIP(), []int{102} } func (x *PlannedReparentShardResponse) GetKeyspace() string { @@ -5871,7 +6002,7 @@ type RebuildKeyspaceGraphRequest struct { func (x *RebuildKeyspaceGraphRequest) Reset() { *x = RebuildKeyspaceGraphRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[101] + mi := &file_vtctldata_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5884,7 +6015,7 @@ func (x *RebuildKeyspaceGraphRequest) String() string { func (*RebuildKeyspaceGraphRequest) ProtoMessage() {} func (x *RebuildKeyspaceGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[101] + mi := &file_vtctldata_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5897,7 +6028,7 @@ func (x *RebuildKeyspaceGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildKeyspaceGraphRequest.ProtoReflect.Descriptor instead. func (*RebuildKeyspaceGraphRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{101} + return file_vtctldata_proto_rawDescGZIP(), []int{103} } func (x *RebuildKeyspaceGraphRequest) GetKeyspace() string { @@ -5930,7 +6061,7 @@ type RebuildKeyspaceGraphResponse struct { func (x *RebuildKeyspaceGraphResponse) Reset() { *x = RebuildKeyspaceGraphResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[102] + mi := &file_vtctldata_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5943,7 +6074,7 @@ func (x *RebuildKeyspaceGraphResponse) String() string { func (*RebuildKeyspaceGraphResponse) ProtoMessage() {} func (x *RebuildKeyspaceGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[102] + mi := &file_vtctldata_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5956,7 +6087,7 @@ func (x *RebuildKeyspaceGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildKeyspaceGraphResponse.ProtoReflect.Descriptor instead. func (*RebuildKeyspaceGraphResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{102} + return file_vtctldata_proto_rawDescGZIP(), []int{104} } type RebuildVSchemaGraphRequest struct { @@ -5972,7 +6103,7 @@ type RebuildVSchemaGraphRequest struct { func (x *RebuildVSchemaGraphRequest) Reset() { *x = RebuildVSchemaGraphRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[103] + mi := &file_vtctldata_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5985,7 +6116,7 @@ func (x *RebuildVSchemaGraphRequest) String() string { func (*RebuildVSchemaGraphRequest) ProtoMessage() {} func (x *RebuildVSchemaGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[103] + mi := &file_vtctldata_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5998,7 +6129,7 @@ func (x *RebuildVSchemaGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildVSchemaGraphRequest.ProtoReflect.Descriptor instead. func (*RebuildVSchemaGraphRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{103} + return file_vtctldata_proto_rawDescGZIP(), []int{105} } func (x *RebuildVSchemaGraphRequest) GetCells() []string { @@ -6017,7 +6148,7 @@ type RebuildVSchemaGraphResponse struct { func (x *RebuildVSchemaGraphResponse) Reset() { *x = RebuildVSchemaGraphResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[104] + mi := &file_vtctldata_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6030,7 +6161,7 @@ func (x *RebuildVSchemaGraphResponse) String() string { func (*RebuildVSchemaGraphResponse) ProtoMessage() {} func (x *RebuildVSchemaGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[104] + mi := &file_vtctldata_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6043,7 +6174,7 @@ func (x *RebuildVSchemaGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildVSchemaGraphResponse.ProtoReflect.Descriptor instead. func (*RebuildVSchemaGraphResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{104} + return file_vtctldata_proto_rawDescGZIP(), []int{106} } type RefreshStateRequest struct { @@ -6057,7 +6188,7 @@ type RefreshStateRequest struct { func (x *RefreshStateRequest) Reset() { *x = RefreshStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[105] + mi := &file_vtctldata_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6070,7 +6201,7 @@ func (x *RefreshStateRequest) String() string { func (*RefreshStateRequest) ProtoMessage() {} func (x *RefreshStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[105] + mi := &file_vtctldata_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6083,7 +6214,7 @@ func (x *RefreshStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshStateRequest.ProtoReflect.Descriptor instead. func (*RefreshStateRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{105} + return file_vtctldata_proto_rawDescGZIP(), []int{107} } func (x *RefreshStateRequest) GetTabletAlias() *topodata.TabletAlias { @@ -6102,7 +6233,7 @@ type RefreshStateResponse struct { func (x *RefreshStateResponse) Reset() { *x = RefreshStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[106] + mi := &file_vtctldata_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6115,7 +6246,7 @@ func (x *RefreshStateResponse) String() string { func (*RefreshStateResponse) ProtoMessage() {} func (x *RefreshStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[106] + mi := &file_vtctldata_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6128,7 +6259,7 @@ func (x *RefreshStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshStateResponse.ProtoReflect.Descriptor instead. func (*RefreshStateResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{106} + return file_vtctldata_proto_rawDescGZIP(), []int{108} } type RefreshStateByShardRequest struct { @@ -6144,7 +6275,7 @@ type RefreshStateByShardRequest struct { func (x *RefreshStateByShardRequest) Reset() { *x = RefreshStateByShardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[107] + mi := &file_vtctldata_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6157,7 +6288,7 @@ func (x *RefreshStateByShardRequest) String() string { func (*RefreshStateByShardRequest) ProtoMessage() {} func (x *RefreshStateByShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[107] + mi := &file_vtctldata_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6170,7 +6301,7 @@ func (x *RefreshStateByShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshStateByShardRequest.ProtoReflect.Descriptor instead. func (*RefreshStateByShardRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{107} + return file_vtctldata_proto_rawDescGZIP(), []int{109} } func (x *RefreshStateByShardRequest) GetKeyspace() string { @@ -6207,7 +6338,7 @@ type RefreshStateByShardResponse struct { func (x *RefreshStateByShardResponse) Reset() { *x = RefreshStateByShardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[108] + mi := &file_vtctldata_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6220,7 +6351,7 @@ func (x *RefreshStateByShardResponse) String() string { func (*RefreshStateByShardResponse) ProtoMessage() {} func (x *RefreshStateByShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[108] + mi := &file_vtctldata_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6233,7 +6364,7 @@ func (x *RefreshStateByShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshStateByShardResponse.ProtoReflect.Descriptor instead. func (*RefreshStateByShardResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{108} + return file_vtctldata_proto_rawDescGZIP(), []int{110} } func (x *RefreshStateByShardResponse) GetIsPartialRefresh() bool { @@ -6261,7 +6392,7 @@ type ReloadSchemaRequest struct { func (x *ReloadSchemaRequest) Reset() { *x = ReloadSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[109] + mi := &file_vtctldata_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6274,7 +6405,7 @@ func (x *ReloadSchemaRequest) String() string { func (*ReloadSchemaRequest) ProtoMessage() {} func (x *ReloadSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[109] + mi := &file_vtctldata_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6287,7 +6418,7 @@ func (x *ReloadSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaRequest.ProtoReflect.Descriptor instead. func (*ReloadSchemaRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{109} + return file_vtctldata_proto_rawDescGZIP(), []int{111} } func (x *ReloadSchemaRequest) GetTabletAlias() *topodata.TabletAlias { @@ -6306,7 +6437,7 @@ type ReloadSchemaResponse struct { func (x *ReloadSchemaResponse) Reset() { *x = ReloadSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[110] + mi := &file_vtctldata_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6319,7 +6450,7 @@ func (x *ReloadSchemaResponse) String() string { func (*ReloadSchemaResponse) ProtoMessage() {} func (x *ReloadSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[110] + mi := &file_vtctldata_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6332,7 +6463,7 @@ func (x *ReloadSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaResponse.ProtoReflect.Descriptor instead. func (*ReloadSchemaResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{110} + return file_vtctldata_proto_rawDescGZIP(), []int{112} } type ReloadSchemaKeyspaceRequest struct { @@ -6352,7 +6483,7 @@ type ReloadSchemaKeyspaceRequest struct { func (x *ReloadSchemaKeyspaceRequest) Reset() { *x = ReloadSchemaKeyspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[111] + mi := &file_vtctldata_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6365,7 +6496,7 @@ func (x *ReloadSchemaKeyspaceRequest) String() string { func (*ReloadSchemaKeyspaceRequest) ProtoMessage() {} func (x *ReloadSchemaKeyspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[111] + mi := &file_vtctldata_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6378,7 +6509,7 @@ func (x *ReloadSchemaKeyspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaKeyspaceRequest.ProtoReflect.Descriptor instead. func (*ReloadSchemaKeyspaceRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{111} + return file_vtctldata_proto_rawDescGZIP(), []int{113} } func (x *ReloadSchemaKeyspaceRequest) GetKeyspace() string { @@ -6420,7 +6551,7 @@ type ReloadSchemaKeyspaceResponse struct { func (x *ReloadSchemaKeyspaceResponse) Reset() { *x = ReloadSchemaKeyspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[112] + mi := &file_vtctldata_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6433,7 +6564,7 @@ func (x *ReloadSchemaKeyspaceResponse) String() string { func (*ReloadSchemaKeyspaceResponse) ProtoMessage() {} func (x *ReloadSchemaKeyspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[112] + mi := &file_vtctldata_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6446,7 +6577,7 @@ func (x *ReloadSchemaKeyspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaKeyspaceResponse.ProtoReflect.Descriptor instead. func (*ReloadSchemaKeyspaceResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{112} + return file_vtctldata_proto_rawDescGZIP(), []int{114} } func (x *ReloadSchemaKeyspaceResponse) GetEvents() []*logutil.Event { @@ -6472,7 +6603,7 @@ type ReloadSchemaShardRequest struct { func (x *ReloadSchemaShardRequest) Reset() { *x = ReloadSchemaShardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[113] + mi := &file_vtctldata_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6485,7 +6616,7 @@ func (x *ReloadSchemaShardRequest) String() string { func (*ReloadSchemaShardRequest) ProtoMessage() {} func (x *ReloadSchemaShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[113] + mi := &file_vtctldata_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6498,7 +6629,7 @@ func (x *ReloadSchemaShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaShardRequest.ProtoReflect.Descriptor instead. func (*ReloadSchemaShardRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{113} + return file_vtctldata_proto_rawDescGZIP(), []int{115} } func (x *ReloadSchemaShardRequest) GetKeyspace() string { @@ -6547,7 +6678,7 @@ type ReloadSchemaShardResponse struct { func (x *ReloadSchemaShardResponse) Reset() { *x = ReloadSchemaShardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[114] + mi := &file_vtctldata_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6560,7 +6691,7 @@ func (x *ReloadSchemaShardResponse) String() string { func (*ReloadSchemaShardResponse) ProtoMessage() {} func (x *ReloadSchemaShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[114] + mi := &file_vtctldata_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6573,7 +6704,7 @@ func (x *ReloadSchemaShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadSchemaShardResponse.ProtoReflect.Descriptor instead. func (*ReloadSchemaShardResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{114} + return file_vtctldata_proto_rawDescGZIP(), []int{116} } func (x *ReloadSchemaShardResponse) GetEvents() []*logutil.Event { @@ -6596,7 +6727,7 @@ type RemoveBackupRequest struct { func (x *RemoveBackupRequest) Reset() { *x = RemoveBackupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[115] + mi := &file_vtctldata_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6609,7 +6740,7 @@ func (x *RemoveBackupRequest) String() string { func (*RemoveBackupRequest) ProtoMessage() {} func (x *RemoveBackupRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[115] + mi := &file_vtctldata_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6622,7 +6753,7 @@ func (x *RemoveBackupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveBackupRequest.ProtoReflect.Descriptor instead. func (*RemoveBackupRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{115} + return file_vtctldata_proto_rawDescGZIP(), []int{117} } func (x *RemoveBackupRequest) GetKeyspace() string { @@ -6655,7 +6786,7 @@ type RemoveBackupResponse struct { func (x *RemoveBackupResponse) Reset() { *x = RemoveBackupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[116] + mi := &file_vtctldata_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6668,7 +6799,7 @@ func (x *RemoveBackupResponse) String() string { func (*RemoveBackupResponse) ProtoMessage() {} func (x *RemoveBackupResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[116] + mi := &file_vtctldata_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6681,7 +6812,7 @@ func (x *RemoveBackupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveBackupResponse.ProtoReflect.Descriptor instead. func (*RemoveBackupResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{116} + return file_vtctldata_proto_rawDescGZIP(), []int{118} } type RemoveKeyspaceCellRequest struct { @@ -6703,7 +6834,7 @@ type RemoveKeyspaceCellRequest struct { func (x *RemoveKeyspaceCellRequest) Reset() { *x = RemoveKeyspaceCellRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[117] + mi := &file_vtctldata_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6716,7 +6847,7 @@ func (x *RemoveKeyspaceCellRequest) String() string { func (*RemoveKeyspaceCellRequest) ProtoMessage() {} func (x *RemoveKeyspaceCellRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[117] + mi := &file_vtctldata_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6729,7 +6860,7 @@ func (x *RemoveKeyspaceCellRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveKeyspaceCellRequest.ProtoReflect.Descriptor instead. func (*RemoveKeyspaceCellRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{117} + return file_vtctldata_proto_rawDescGZIP(), []int{119} } func (x *RemoveKeyspaceCellRequest) GetKeyspace() string { @@ -6769,7 +6900,7 @@ type RemoveKeyspaceCellResponse struct { func (x *RemoveKeyspaceCellResponse) Reset() { *x = RemoveKeyspaceCellResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[118] + mi := &file_vtctldata_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6782,7 +6913,7 @@ func (x *RemoveKeyspaceCellResponse) String() string { func (*RemoveKeyspaceCellResponse) ProtoMessage() {} func (x *RemoveKeyspaceCellResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[118] + mi := &file_vtctldata_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6795,7 +6926,7 @@ func (x *RemoveKeyspaceCellResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveKeyspaceCellResponse.ProtoReflect.Descriptor instead. func (*RemoveKeyspaceCellResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{118} + return file_vtctldata_proto_rawDescGZIP(), []int{120} } type RemoveShardCellRequest struct { @@ -6818,7 +6949,7 @@ type RemoveShardCellRequest struct { func (x *RemoveShardCellRequest) Reset() { *x = RemoveShardCellRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[119] + mi := &file_vtctldata_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6831,7 +6962,7 @@ func (x *RemoveShardCellRequest) String() string { func (*RemoveShardCellRequest) ProtoMessage() {} func (x *RemoveShardCellRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[119] + mi := &file_vtctldata_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6844,7 +6975,7 @@ func (x *RemoveShardCellRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveShardCellRequest.ProtoReflect.Descriptor instead. func (*RemoveShardCellRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{119} + return file_vtctldata_proto_rawDescGZIP(), []int{121} } func (x *RemoveShardCellRequest) GetKeyspace() string { @@ -6891,7 +7022,7 @@ type RemoveShardCellResponse struct { func (x *RemoveShardCellResponse) Reset() { *x = RemoveShardCellResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[120] + mi := &file_vtctldata_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6904,7 +7035,7 @@ func (x *RemoveShardCellResponse) String() string { func (*RemoveShardCellResponse) ProtoMessage() {} func (x *RemoveShardCellResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[120] + mi := &file_vtctldata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6917,7 +7048,7 @@ func (x *RemoveShardCellResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveShardCellResponse.ProtoReflect.Descriptor instead. func (*RemoveShardCellResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{120} + return file_vtctldata_proto_rawDescGZIP(), []int{122} } type ReparentTabletRequest struct { @@ -6933,7 +7064,7 @@ type ReparentTabletRequest struct { func (x *ReparentTabletRequest) Reset() { *x = ReparentTabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[121] + mi := &file_vtctldata_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6946,7 +7077,7 @@ func (x *ReparentTabletRequest) String() string { func (*ReparentTabletRequest) ProtoMessage() {} func (x *ReparentTabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[121] + mi := &file_vtctldata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6959,7 +7090,7 @@ func (x *ReparentTabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReparentTabletRequest.ProtoReflect.Descriptor instead. func (*ReparentTabletRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{121} + return file_vtctldata_proto_rawDescGZIP(), []int{123} } func (x *ReparentTabletRequest) GetTablet() *topodata.TabletAlias { @@ -6985,7 +7116,7 @@ type ReparentTabletResponse struct { func (x *ReparentTabletResponse) Reset() { *x = ReparentTabletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[122] + mi := &file_vtctldata_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6998,7 +7129,7 @@ func (x *ReparentTabletResponse) String() string { func (*ReparentTabletResponse) ProtoMessage() {} func (x *ReparentTabletResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[122] + mi := &file_vtctldata_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7011,7 +7142,7 @@ func (x *ReparentTabletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReparentTabletResponse.ProtoReflect.Descriptor instead. func (*ReparentTabletResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{122} + return file_vtctldata_proto_rawDescGZIP(), []int{124} } func (x *ReparentTabletResponse) GetKeyspace() string { @@ -7049,7 +7180,7 @@ type RestoreFromBackupRequest struct { func (x *RestoreFromBackupRequest) Reset() { *x = RestoreFromBackupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[123] + mi := &file_vtctldata_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7062,7 +7193,7 @@ func (x *RestoreFromBackupRequest) String() string { func (*RestoreFromBackupRequest) ProtoMessage() {} func (x *RestoreFromBackupRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[123] + mi := &file_vtctldata_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7075,7 +7206,7 @@ func (x *RestoreFromBackupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreFromBackupRequest.ProtoReflect.Descriptor instead. func (*RestoreFromBackupRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{123} + return file_vtctldata_proto_rawDescGZIP(), []int{125} } func (x *RestoreFromBackupRequest) GetTabletAlias() *topodata.TabletAlias { @@ -7107,7 +7238,7 @@ type RestoreFromBackupResponse struct { func (x *RestoreFromBackupResponse) Reset() { *x = RestoreFromBackupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[124] + mi := &file_vtctldata_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7120,7 +7251,7 @@ func (x *RestoreFromBackupResponse) String() string { func (*RestoreFromBackupResponse) ProtoMessage() {} func (x *RestoreFromBackupResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[124] + mi := &file_vtctldata_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7133,7 +7264,7 @@ func (x *RestoreFromBackupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreFromBackupResponse.ProtoReflect.Descriptor instead. func (*RestoreFromBackupResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{124} + return file_vtctldata_proto_rawDescGZIP(), []int{126} } func (x *RestoreFromBackupResponse) GetTabletAlias() *topodata.TabletAlias { @@ -7175,7 +7306,7 @@ type RunHealthCheckRequest struct { func (x *RunHealthCheckRequest) Reset() { *x = RunHealthCheckRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[125] + mi := &file_vtctldata_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7188,7 +7319,7 @@ func (x *RunHealthCheckRequest) String() string { func (*RunHealthCheckRequest) ProtoMessage() {} func (x *RunHealthCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[125] + mi := &file_vtctldata_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7201,7 +7332,7 @@ func (x *RunHealthCheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunHealthCheckRequest.ProtoReflect.Descriptor instead. func (*RunHealthCheckRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{125} + return file_vtctldata_proto_rawDescGZIP(), []int{127} } func (x *RunHealthCheckRequest) GetTabletAlias() *topodata.TabletAlias { @@ -7220,7 +7351,7 @@ type RunHealthCheckResponse struct { func (x *RunHealthCheckResponse) Reset() { *x = RunHealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[126] + mi := &file_vtctldata_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7233,7 +7364,7 @@ func (x *RunHealthCheckResponse) String() string { func (*RunHealthCheckResponse) ProtoMessage() {} func (x *RunHealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[126] + mi := &file_vtctldata_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7246,7 +7377,7 @@ func (x *RunHealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunHealthCheckResponse.ProtoReflect.Descriptor instead. func (*RunHealthCheckResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{126} + return file_vtctldata_proto_rawDescGZIP(), []int{128} } type SetKeyspaceDurabilityPolicyRequest struct { @@ -7261,7 +7392,7 @@ type SetKeyspaceDurabilityPolicyRequest struct { func (x *SetKeyspaceDurabilityPolicyRequest) Reset() { *x = SetKeyspaceDurabilityPolicyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[127] + mi := &file_vtctldata_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7274,7 +7405,7 @@ func (x *SetKeyspaceDurabilityPolicyRequest) String() string { func (*SetKeyspaceDurabilityPolicyRequest) ProtoMessage() {} func (x *SetKeyspaceDurabilityPolicyRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[127] + mi := &file_vtctldata_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7287,7 +7418,7 @@ func (x *SetKeyspaceDurabilityPolicyRequest) ProtoReflect() protoreflect.Message // Deprecated: Use SetKeyspaceDurabilityPolicyRequest.ProtoReflect.Descriptor instead. func (*SetKeyspaceDurabilityPolicyRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{127} + return file_vtctldata_proto_rawDescGZIP(), []int{129} } func (x *SetKeyspaceDurabilityPolicyRequest) GetKeyspace() string { @@ -7316,7 +7447,7 @@ type SetKeyspaceDurabilityPolicyResponse struct { func (x *SetKeyspaceDurabilityPolicyResponse) Reset() { *x = SetKeyspaceDurabilityPolicyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[128] + mi := &file_vtctldata_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7329,7 +7460,7 @@ func (x *SetKeyspaceDurabilityPolicyResponse) String() string { func (*SetKeyspaceDurabilityPolicyResponse) ProtoMessage() {} func (x *SetKeyspaceDurabilityPolicyResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[128] + mi := &file_vtctldata_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7342,7 +7473,7 @@ func (x *SetKeyspaceDurabilityPolicyResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use SetKeyspaceDurabilityPolicyResponse.ProtoReflect.Descriptor instead. func (*SetKeyspaceDurabilityPolicyResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{128} + return file_vtctldata_proto_rawDescGZIP(), []int{130} } func (x *SetKeyspaceDurabilityPolicyResponse) GetKeyspace() *topodata.Keyspace { @@ -7367,7 +7498,7 @@ type SetKeyspaceServedFromRequest struct { func (x *SetKeyspaceServedFromRequest) Reset() { *x = SetKeyspaceServedFromRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[129] + mi := &file_vtctldata_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7380,7 +7511,7 @@ func (x *SetKeyspaceServedFromRequest) String() string { func (*SetKeyspaceServedFromRequest) ProtoMessage() {} func (x *SetKeyspaceServedFromRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[129] + mi := &file_vtctldata_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7393,7 +7524,7 @@ func (x *SetKeyspaceServedFromRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetKeyspaceServedFromRequest.ProtoReflect.Descriptor instead. func (*SetKeyspaceServedFromRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{129} + return file_vtctldata_proto_rawDescGZIP(), []int{131} } func (x *SetKeyspaceServedFromRequest) GetKeyspace() string { @@ -7443,7 +7574,7 @@ type SetKeyspaceServedFromResponse struct { func (x *SetKeyspaceServedFromResponse) Reset() { *x = SetKeyspaceServedFromResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[130] + mi := &file_vtctldata_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7456,7 +7587,7 @@ func (x *SetKeyspaceServedFromResponse) String() string { func (*SetKeyspaceServedFromResponse) ProtoMessage() {} func (x *SetKeyspaceServedFromResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[130] + mi := &file_vtctldata_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7469,7 +7600,7 @@ func (x *SetKeyspaceServedFromResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetKeyspaceServedFromResponse.ProtoReflect.Descriptor instead. func (*SetKeyspaceServedFromResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{130} + return file_vtctldata_proto_rawDescGZIP(), []int{132} } func (x *SetKeyspaceServedFromResponse) GetKeyspace() *topodata.Keyspace { @@ -7491,7 +7622,7 @@ type SetKeyspaceShardingInfoRequest struct { func (x *SetKeyspaceShardingInfoRequest) Reset() { *x = SetKeyspaceShardingInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[131] + mi := &file_vtctldata_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7504,7 +7635,7 @@ func (x *SetKeyspaceShardingInfoRequest) String() string { func (*SetKeyspaceShardingInfoRequest) ProtoMessage() {} func (x *SetKeyspaceShardingInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[131] + mi := &file_vtctldata_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7517,7 +7648,7 @@ func (x *SetKeyspaceShardingInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetKeyspaceShardingInfoRequest.ProtoReflect.Descriptor instead. func (*SetKeyspaceShardingInfoRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{131} + return file_vtctldata_proto_rawDescGZIP(), []int{133} } func (x *SetKeyspaceShardingInfoRequest) GetKeyspace() string { @@ -7546,7 +7677,7 @@ type SetKeyspaceShardingInfoResponse struct { func (x *SetKeyspaceShardingInfoResponse) Reset() { *x = SetKeyspaceShardingInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[132] + mi := &file_vtctldata_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7559,7 +7690,7 @@ func (x *SetKeyspaceShardingInfoResponse) String() string { func (*SetKeyspaceShardingInfoResponse) ProtoMessage() {} func (x *SetKeyspaceShardingInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[132] + mi := &file_vtctldata_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7572,7 +7703,7 @@ func (x *SetKeyspaceShardingInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetKeyspaceShardingInfoResponse.ProtoReflect.Descriptor instead. func (*SetKeyspaceShardingInfoResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{132} + return file_vtctldata_proto_rawDescGZIP(), []int{134} } func (x *SetKeyspaceShardingInfoResponse) GetKeyspace() *topodata.Keyspace { @@ -7595,7 +7726,7 @@ type SetShardIsPrimaryServingRequest struct { func (x *SetShardIsPrimaryServingRequest) Reset() { *x = SetShardIsPrimaryServingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[133] + mi := &file_vtctldata_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7608,7 +7739,7 @@ func (x *SetShardIsPrimaryServingRequest) String() string { func (*SetShardIsPrimaryServingRequest) ProtoMessage() {} func (x *SetShardIsPrimaryServingRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[133] + mi := &file_vtctldata_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7621,7 +7752,7 @@ func (x *SetShardIsPrimaryServingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetShardIsPrimaryServingRequest.ProtoReflect.Descriptor instead. func (*SetShardIsPrimaryServingRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{133} + return file_vtctldata_proto_rawDescGZIP(), []int{135} } func (x *SetShardIsPrimaryServingRequest) GetKeyspace() string { @@ -7657,7 +7788,7 @@ type SetShardIsPrimaryServingResponse struct { func (x *SetShardIsPrimaryServingResponse) Reset() { *x = SetShardIsPrimaryServingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[134] + mi := &file_vtctldata_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7670,7 +7801,7 @@ func (x *SetShardIsPrimaryServingResponse) String() string { func (*SetShardIsPrimaryServingResponse) ProtoMessage() {} func (x *SetShardIsPrimaryServingResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[134] + mi := &file_vtctldata_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7683,7 +7814,7 @@ func (x *SetShardIsPrimaryServingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetShardIsPrimaryServingResponse.ProtoReflect.Descriptor instead. func (*SetShardIsPrimaryServingResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{134} + return file_vtctldata_proto_rawDescGZIP(), []int{136} } func (x *SetShardIsPrimaryServingResponse) GetShard() *topodata.Shard { @@ -7724,7 +7855,7 @@ type SetShardTabletControlRequest struct { func (x *SetShardTabletControlRequest) Reset() { *x = SetShardTabletControlRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[135] + mi := &file_vtctldata_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7737,7 +7868,7 @@ func (x *SetShardTabletControlRequest) String() string { func (*SetShardTabletControlRequest) ProtoMessage() {} func (x *SetShardTabletControlRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[135] + mi := &file_vtctldata_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7750,7 +7881,7 @@ func (x *SetShardTabletControlRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetShardTabletControlRequest.ProtoReflect.Descriptor instead. func (*SetShardTabletControlRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{135} + return file_vtctldata_proto_rawDescGZIP(), []int{137} } func (x *SetShardTabletControlRequest) GetKeyspace() string { @@ -7814,7 +7945,7 @@ type SetShardTabletControlResponse struct { func (x *SetShardTabletControlResponse) Reset() { *x = SetShardTabletControlResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[136] + mi := &file_vtctldata_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7827,7 +7958,7 @@ func (x *SetShardTabletControlResponse) String() string { func (*SetShardTabletControlResponse) ProtoMessage() {} func (x *SetShardTabletControlResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[136] + mi := &file_vtctldata_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7840,7 +7971,7 @@ func (x *SetShardTabletControlResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetShardTabletControlResponse.ProtoReflect.Descriptor instead. func (*SetShardTabletControlResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{136} + return file_vtctldata_proto_rawDescGZIP(), []int{138} } func (x *SetShardTabletControlResponse) GetShard() *topodata.Shard { @@ -7862,7 +7993,7 @@ type SetWritableRequest struct { func (x *SetWritableRequest) Reset() { *x = SetWritableRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[137] + mi := &file_vtctldata_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7875,7 +8006,7 @@ func (x *SetWritableRequest) String() string { func (*SetWritableRequest) ProtoMessage() {} func (x *SetWritableRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[137] + mi := &file_vtctldata_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7888,7 +8019,7 @@ func (x *SetWritableRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetWritableRequest.ProtoReflect.Descriptor instead. func (*SetWritableRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{137} + return file_vtctldata_proto_rawDescGZIP(), []int{139} } func (x *SetWritableRequest) GetTabletAlias() *topodata.TabletAlias { @@ -7914,7 +8045,7 @@ type SetWritableResponse struct { func (x *SetWritableResponse) Reset() { *x = SetWritableResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[138] + mi := &file_vtctldata_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7927,7 +8058,7 @@ func (x *SetWritableResponse) String() string { func (*SetWritableResponse) ProtoMessage() {} func (x *SetWritableResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[138] + mi := &file_vtctldata_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7940,7 +8071,7 @@ func (x *SetWritableResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetWritableResponse.ProtoReflect.Descriptor instead. func (*SetWritableResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{138} + return file_vtctldata_proto_rawDescGZIP(), []int{140} } type ShardReplicationAddRequest struct { @@ -7956,7 +8087,7 @@ type ShardReplicationAddRequest struct { func (x *ShardReplicationAddRequest) Reset() { *x = ShardReplicationAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[139] + mi := &file_vtctldata_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7969,7 +8100,7 @@ func (x *ShardReplicationAddRequest) String() string { func (*ShardReplicationAddRequest) ProtoMessage() {} func (x *ShardReplicationAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[139] + mi := &file_vtctldata_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7982,7 +8113,7 @@ func (x *ShardReplicationAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationAddRequest.ProtoReflect.Descriptor instead. func (*ShardReplicationAddRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{139} + return file_vtctldata_proto_rawDescGZIP(), []int{141} } func (x *ShardReplicationAddRequest) GetKeyspace() string { @@ -8015,7 +8146,7 @@ type ShardReplicationAddResponse struct { func (x *ShardReplicationAddResponse) Reset() { *x = ShardReplicationAddResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[140] + mi := &file_vtctldata_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8028,7 +8159,7 @@ func (x *ShardReplicationAddResponse) String() string { func (*ShardReplicationAddResponse) ProtoMessage() {} func (x *ShardReplicationAddResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[140] + mi := &file_vtctldata_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8041,7 +8172,7 @@ func (x *ShardReplicationAddResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationAddResponse.ProtoReflect.Descriptor instead. func (*ShardReplicationAddResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{140} + return file_vtctldata_proto_rawDescGZIP(), []int{142} } type ShardReplicationFixRequest struct { @@ -8057,7 +8188,7 @@ type ShardReplicationFixRequest struct { func (x *ShardReplicationFixRequest) Reset() { *x = ShardReplicationFixRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[141] + mi := &file_vtctldata_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8070,7 +8201,7 @@ func (x *ShardReplicationFixRequest) String() string { func (*ShardReplicationFixRequest) ProtoMessage() {} func (x *ShardReplicationFixRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[141] + mi := &file_vtctldata_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8083,7 +8214,7 @@ func (x *ShardReplicationFixRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationFixRequest.ProtoReflect.Descriptor instead. func (*ShardReplicationFixRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{141} + return file_vtctldata_proto_rawDescGZIP(), []int{143} } func (x *ShardReplicationFixRequest) GetKeyspace() string { @@ -8121,7 +8252,7 @@ type ShardReplicationFixResponse struct { func (x *ShardReplicationFixResponse) Reset() { *x = ShardReplicationFixResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[142] + mi := &file_vtctldata_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8134,7 +8265,7 @@ func (x *ShardReplicationFixResponse) String() string { func (*ShardReplicationFixResponse) ProtoMessage() {} func (x *ShardReplicationFixResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[142] + mi := &file_vtctldata_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8147,7 +8278,7 @@ func (x *ShardReplicationFixResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationFixResponse.ProtoReflect.Descriptor instead. func (*ShardReplicationFixResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{142} + return file_vtctldata_proto_rawDescGZIP(), []int{144} } func (x *ShardReplicationFixResponse) GetError() *topodata.ShardReplicationError { @@ -8169,7 +8300,7 @@ type ShardReplicationPositionsRequest struct { func (x *ShardReplicationPositionsRequest) Reset() { *x = ShardReplicationPositionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[143] + mi := &file_vtctldata_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8182,7 +8313,7 @@ func (x *ShardReplicationPositionsRequest) String() string { func (*ShardReplicationPositionsRequest) ProtoMessage() {} func (x *ShardReplicationPositionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[143] + mi := &file_vtctldata_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8195,7 +8326,7 @@ func (x *ShardReplicationPositionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationPositionsRequest.ProtoReflect.Descriptor instead. func (*ShardReplicationPositionsRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{143} + return file_vtctldata_proto_rawDescGZIP(), []int{145} } func (x *ShardReplicationPositionsRequest) GetKeyspace() string { @@ -8228,7 +8359,7 @@ type ShardReplicationPositionsResponse struct { func (x *ShardReplicationPositionsResponse) Reset() { *x = ShardReplicationPositionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[144] + mi := &file_vtctldata_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8241,7 +8372,7 @@ func (x *ShardReplicationPositionsResponse) String() string { func (*ShardReplicationPositionsResponse) ProtoMessage() {} func (x *ShardReplicationPositionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[144] + mi := &file_vtctldata_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8254,7 +8385,7 @@ func (x *ShardReplicationPositionsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ShardReplicationPositionsResponse.ProtoReflect.Descriptor instead. func (*ShardReplicationPositionsResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{144} + return file_vtctldata_proto_rawDescGZIP(), []int{146} } func (x *ShardReplicationPositionsResponse) GetReplicationStatuses() map[string]*replicationdata.Status { @@ -8284,7 +8415,7 @@ type ShardReplicationRemoveRequest struct { func (x *ShardReplicationRemoveRequest) Reset() { *x = ShardReplicationRemoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[145] + mi := &file_vtctldata_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8297,7 +8428,7 @@ func (x *ShardReplicationRemoveRequest) String() string { func (*ShardReplicationRemoveRequest) ProtoMessage() {} func (x *ShardReplicationRemoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[145] + mi := &file_vtctldata_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8310,7 +8441,7 @@ func (x *ShardReplicationRemoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationRemoveRequest.ProtoReflect.Descriptor instead. func (*ShardReplicationRemoveRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{145} + return file_vtctldata_proto_rawDescGZIP(), []int{147} } func (x *ShardReplicationRemoveRequest) GetKeyspace() string { @@ -8343,7 +8474,7 @@ type ShardReplicationRemoveResponse struct { func (x *ShardReplicationRemoveResponse) Reset() { *x = ShardReplicationRemoveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[146] + mi := &file_vtctldata_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8356,7 +8487,7 @@ func (x *ShardReplicationRemoveResponse) String() string { func (*ShardReplicationRemoveResponse) ProtoMessage() {} func (x *ShardReplicationRemoveResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[146] + mi := &file_vtctldata_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8369,7 +8500,7 @@ func (x *ShardReplicationRemoveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationRemoveResponse.ProtoReflect.Descriptor instead. func (*ShardReplicationRemoveResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{146} + return file_vtctldata_proto_rawDescGZIP(), []int{148} } type SleepTabletRequest struct { @@ -8384,7 +8515,7 @@ type SleepTabletRequest struct { func (x *SleepTabletRequest) Reset() { *x = SleepTabletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[147] + mi := &file_vtctldata_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8397,7 +8528,7 @@ func (x *SleepTabletRequest) String() string { func (*SleepTabletRequest) ProtoMessage() {} func (x *SleepTabletRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[147] + mi := &file_vtctldata_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8410,7 +8541,7 @@ func (x *SleepTabletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SleepTabletRequest.ProtoReflect.Descriptor instead. func (*SleepTabletRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{147} + return file_vtctldata_proto_rawDescGZIP(), []int{149} } func (x *SleepTabletRequest) GetTabletAlias() *topodata.TabletAlias { @@ -8436,7 +8567,7 @@ type SleepTabletResponse struct { func (x *SleepTabletResponse) Reset() { *x = SleepTabletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[148] + mi := &file_vtctldata_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8449,7 +8580,7 @@ func (x *SleepTabletResponse) String() string { func (*SleepTabletResponse) ProtoMessage() {} func (x *SleepTabletResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[148] + mi := &file_vtctldata_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8462,7 +8593,7 @@ func (x *SleepTabletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SleepTabletResponse.ProtoReflect.Descriptor instead. func (*SleepTabletResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{148} + return file_vtctldata_proto_rawDescGZIP(), []int{150} } type SourceShardAddRequest struct { @@ -8486,7 +8617,7 @@ type SourceShardAddRequest struct { func (x *SourceShardAddRequest) Reset() { *x = SourceShardAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[149] + mi := &file_vtctldata_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8499,7 +8630,7 @@ func (x *SourceShardAddRequest) String() string { func (*SourceShardAddRequest) ProtoMessage() {} func (x *SourceShardAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[149] + mi := &file_vtctldata_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8512,7 +8643,7 @@ func (x *SourceShardAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceShardAddRequest.ProtoReflect.Descriptor instead. func (*SourceShardAddRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{149} + return file_vtctldata_proto_rawDescGZIP(), []int{151} } func (x *SourceShardAddRequest) GetKeyspace() string { @@ -8576,7 +8707,7 @@ type SourceShardAddResponse struct { func (x *SourceShardAddResponse) Reset() { *x = SourceShardAddResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[150] + mi := &file_vtctldata_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8589,7 +8720,7 @@ func (x *SourceShardAddResponse) String() string { func (*SourceShardAddResponse) ProtoMessage() {} func (x *SourceShardAddResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[150] + mi := &file_vtctldata_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8602,7 +8733,7 @@ func (x *SourceShardAddResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceShardAddResponse.ProtoReflect.Descriptor instead. func (*SourceShardAddResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{150} + return file_vtctldata_proto_rawDescGZIP(), []int{152} } func (x *SourceShardAddResponse) GetShard() *topodata.Shard { @@ -8625,7 +8756,7 @@ type SourceShardDeleteRequest struct { func (x *SourceShardDeleteRequest) Reset() { *x = SourceShardDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[151] + mi := &file_vtctldata_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8638,7 +8769,7 @@ func (x *SourceShardDeleteRequest) String() string { func (*SourceShardDeleteRequest) ProtoMessage() {} func (x *SourceShardDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[151] + mi := &file_vtctldata_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8651,7 +8782,7 @@ func (x *SourceShardDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceShardDeleteRequest.ProtoReflect.Descriptor instead. func (*SourceShardDeleteRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{151} + return file_vtctldata_proto_rawDescGZIP(), []int{153} } func (x *SourceShardDeleteRequest) GetKeyspace() string { @@ -8687,7 +8818,7 @@ type SourceShardDeleteResponse struct { func (x *SourceShardDeleteResponse) Reset() { *x = SourceShardDeleteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[152] + mi := &file_vtctldata_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8700,7 +8831,7 @@ func (x *SourceShardDeleteResponse) String() string { func (*SourceShardDeleteResponse) ProtoMessage() {} func (x *SourceShardDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[152] + mi := &file_vtctldata_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8713,7 +8844,7 @@ func (x *SourceShardDeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceShardDeleteResponse.ProtoReflect.Descriptor instead. func (*SourceShardDeleteResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{152} + return file_vtctldata_proto_rawDescGZIP(), []int{154} } func (x *SourceShardDeleteResponse) GetShard() *topodata.Shard { @@ -8734,7 +8865,7 @@ type StartReplicationRequest struct { func (x *StartReplicationRequest) Reset() { *x = StartReplicationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[153] + mi := &file_vtctldata_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8747,7 +8878,7 @@ func (x *StartReplicationRequest) String() string { func (*StartReplicationRequest) ProtoMessage() {} func (x *StartReplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[153] + mi := &file_vtctldata_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8760,7 +8891,7 @@ func (x *StartReplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartReplicationRequest.ProtoReflect.Descriptor instead. func (*StartReplicationRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{153} + return file_vtctldata_proto_rawDescGZIP(), []int{155} } func (x *StartReplicationRequest) GetTabletAlias() *topodata.TabletAlias { @@ -8779,7 +8910,7 @@ type StartReplicationResponse struct { func (x *StartReplicationResponse) Reset() { *x = StartReplicationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[154] + mi := &file_vtctldata_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8792,7 +8923,7 @@ func (x *StartReplicationResponse) String() string { func (*StartReplicationResponse) ProtoMessage() {} func (x *StartReplicationResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[154] + mi := &file_vtctldata_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8805,7 +8936,7 @@ func (x *StartReplicationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartReplicationResponse.ProtoReflect.Descriptor instead. func (*StartReplicationResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{154} + return file_vtctldata_proto_rawDescGZIP(), []int{156} } type StopReplicationRequest struct { @@ -8819,7 +8950,7 @@ type StopReplicationRequest struct { func (x *StopReplicationRequest) Reset() { *x = StopReplicationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[155] + mi := &file_vtctldata_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8832,7 +8963,7 @@ func (x *StopReplicationRequest) String() string { func (*StopReplicationRequest) ProtoMessage() {} func (x *StopReplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[155] + mi := &file_vtctldata_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8845,7 +8976,7 @@ func (x *StopReplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopReplicationRequest.ProtoReflect.Descriptor instead. func (*StopReplicationRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{155} + return file_vtctldata_proto_rawDescGZIP(), []int{157} } func (x *StopReplicationRequest) GetTabletAlias() *topodata.TabletAlias { @@ -8864,7 +8995,7 @@ type StopReplicationResponse struct { func (x *StopReplicationResponse) Reset() { *x = StopReplicationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[156] + mi := &file_vtctldata_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8877,7 +9008,7 @@ func (x *StopReplicationResponse) String() string { func (*StopReplicationResponse) ProtoMessage() {} func (x *StopReplicationResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[156] + mi := &file_vtctldata_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8890,7 +9021,7 @@ func (x *StopReplicationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopReplicationResponse.ProtoReflect.Descriptor instead. func (*StopReplicationResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{156} + return file_vtctldata_proto_rawDescGZIP(), []int{158} } type TabletExternallyReparentedRequest struct { @@ -8906,7 +9037,7 @@ type TabletExternallyReparentedRequest struct { func (x *TabletExternallyReparentedRequest) Reset() { *x = TabletExternallyReparentedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[157] + mi := &file_vtctldata_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8919,7 +9050,7 @@ func (x *TabletExternallyReparentedRequest) String() string { func (*TabletExternallyReparentedRequest) ProtoMessage() {} func (x *TabletExternallyReparentedRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[157] + mi := &file_vtctldata_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8932,7 +9063,7 @@ func (x *TabletExternallyReparentedRequest) ProtoReflect() protoreflect.Message // Deprecated: Use TabletExternallyReparentedRequest.ProtoReflect.Descriptor instead. func (*TabletExternallyReparentedRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{157} + return file_vtctldata_proto_rawDescGZIP(), []int{159} } func (x *TabletExternallyReparentedRequest) GetTablet() *topodata.TabletAlias { @@ -8956,7 +9087,7 @@ type TabletExternallyReparentedResponse struct { func (x *TabletExternallyReparentedResponse) Reset() { *x = TabletExternallyReparentedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[158] + mi := &file_vtctldata_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8969,7 +9100,7 @@ func (x *TabletExternallyReparentedResponse) String() string { func (*TabletExternallyReparentedResponse) ProtoMessage() {} func (x *TabletExternallyReparentedResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[158] + mi := &file_vtctldata_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8982,7 +9113,7 @@ func (x *TabletExternallyReparentedResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TabletExternallyReparentedResponse.ProtoReflect.Descriptor instead. func (*TabletExternallyReparentedResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{158} + return file_vtctldata_proto_rawDescGZIP(), []int{160} } func (x *TabletExternallyReparentedResponse) GetKeyspace() string { @@ -9025,7 +9156,7 @@ type UpdateCellInfoRequest struct { func (x *UpdateCellInfoRequest) Reset() { *x = UpdateCellInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[159] + mi := &file_vtctldata_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9038,7 +9169,7 @@ func (x *UpdateCellInfoRequest) String() string { func (*UpdateCellInfoRequest) ProtoMessage() {} func (x *UpdateCellInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[159] + mi := &file_vtctldata_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9051,7 +9182,7 @@ func (x *UpdateCellInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCellInfoRequest.ProtoReflect.Descriptor instead. func (*UpdateCellInfoRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{159} + return file_vtctldata_proto_rawDescGZIP(), []int{161} } func (x *UpdateCellInfoRequest) GetName() string { @@ -9080,7 +9211,7 @@ type UpdateCellInfoResponse struct { func (x *UpdateCellInfoResponse) Reset() { *x = UpdateCellInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[160] + mi := &file_vtctldata_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9093,7 +9224,7 @@ func (x *UpdateCellInfoResponse) String() string { func (*UpdateCellInfoResponse) ProtoMessage() {} func (x *UpdateCellInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[160] + mi := &file_vtctldata_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9106,7 +9237,7 @@ func (x *UpdateCellInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCellInfoResponse.ProtoReflect.Descriptor instead. func (*UpdateCellInfoResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{160} + return file_vtctldata_proto_rawDescGZIP(), []int{162} } func (x *UpdateCellInfoResponse) GetName() string { @@ -9135,7 +9266,7 @@ type UpdateCellsAliasRequest struct { func (x *UpdateCellsAliasRequest) Reset() { *x = UpdateCellsAliasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[161] + mi := &file_vtctldata_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9148,7 +9279,7 @@ func (x *UpdateCellsAliasRequest) String() string { func (*UpdateCellsAliasRequest) ProtoMessage() {} func (x *UpdateCellsAliasRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[161] + mi := &file_vtctldata_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9161,7 +9292,7 @@ func (x *UpdateCellsAliasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCellsAliasRequest.ProtoReflect.Descriptor instead. func (*UpdateCellsAliasRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{161} + return file_vtctldata_proto_rawDescGZIP(), []int{163} } func (x *UpdateCellsAliasRequest) GetName() string { @@ -9190,7 +9321,7 @@ type UpdateCellsAliasResponse struct { func (x *UpdateCellsAliasResponse) Reset() { *x = UpdateCellsAliasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[162] + mi := &file_vtctldata_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9203,7 +9334,7 @@ func (x *UpdateCellsAliasResponse) String() string { func (*UpdateCellsAliasResponse) ProtoMessage() {} func (x *UpdateCellsAliasResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[162] + mi := &file_vtctldata_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9216,7 +9347,7 @@ func (x *UpdateCellsAliasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCellsAliasResponse.ProtoReflect.Descriptor instead. func (*UpdateCellsAliasResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{162} + return file_vtctldata_proto_rawDescGZIP(), []int{164} } func (x *UpdateCellsAliasResponse) GetName() string { @@ -9244,7 +9375,7 @@ type ValidateRequest struct { func (x *ValidateRequest) Reset() { *x = ValidateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[163] + mi := &file_vtctldata_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9257,7 +9388,7 @@ func (x *ValidateRequest) String() string { func (*ValidateRequest) ProtoMessage() {} func (x *ValidateRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[163] + mi := &file_vtctldata_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9270,7 +9401,7 @@ func (x *ValidateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateRequest.ProtoReflect.Descriptor instead. func (*ValidateRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{163} + return file_vtctldata_proto_rawDescGZIP(), []int{165} } func (x *ValidateRequest) GetPingTablets() bool { @@ -9292,7 +9423,7 @@ type ValidateResponse struct { func (x *ValidateResponse) Reset() { *x = ValidateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[164] + mi := &file_vtctldata_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9305,7 +9436,7 @@ func (x *ValidateResponse) String() string { func (*ValidateResponse) ProtoMessage() {} func (x *ValidateResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[164] + mi := &file_vtctldata_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9318,7 +9449,7 @@ func (x *ValidateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateResponse.ProtoReflect.Descriptor instead. func (*ValidateResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{164} + return file_vtctldata_proto_rawDescGZIP(), []int{166} } func (x *ValidateResponse) GetResults() []string { @@ -9347,7 +9478,7 @@ type ValidateKeyspaceRequest struct { func (x *ValidateKeyspaceRequest) Reset() { *x = ValidateKeyspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[165] + mi := &file_vtctldata_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9360,7 +9491,7 @@ func (x *ValidateKeyspaceRequest) String() string { func (*ValidateKeyspaceRequest) ProtoMessage() {} func (x *ValidateKeyspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[165] + mi := &file_vtctldata_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9373,7 +9504,7 @@ func (x *ValidateKeyspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateKeyspaceRequest.ProtoReflect.Descriptor instead. func (*ValidateKeyspaceRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{165} + return file_vtctldata_proto_rawDescGZIP(), []int{167} } func (x *ValidateKeyspaceRequest) GetKeyspace() string { @@ -9402,7 +9533,7 @@ type ValidateKeyspaceResponse struct { func (x *ValidateKeyspaceResponse) Reset() { *x = ValidateKeyspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[166] + mi := &file_vtctldata_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9415,7 +9546,7 @@ func (x *ValidateKeyspaceResponse) String() string { func (*ValidateKeyspaceResponse) ProtoMessage() {} func (x *ValidateKeyspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[166] + mi := &file_vtctldata_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9428,7 +9559,7 @@ func (x *ValidateKeyspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateKeyspaceResponse.ProtoReflect.Descriptor instead. func (*ValidateKeyspaceResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{166} + return file_vtctldata_proto_rawDescGZIP(), []int{168} } func (x *ValidateKeyspaceResponse) GetResults() []string { @@ -9460,7 +9591,7 @@ type ValidateSchemaKeyspaceRequest struct { func (x *ValidateSchemaKeyspaceRequest) Reset() { *x = ValidateSchemaKeyspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[167] + mi := &file_vtctldata_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9473,7 +9604,7 @@ func (x *ValidateSchemaKeyspaceRequest) String() string { func (*ValidateSchemaKeyspaceRequest) ProtoMessage() {} func (x *ValidateSchemaKeyspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[167] + mi := &file_vtctldata_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9486,7 +9617,7 @@ func (x *ValidateSchemaKeyspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateSchemaKeyspaceRequest.ProtoReflect.Descriptor instead. func (*ValidateSchemaKeyspaceRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{167} + return file_vtctldata_proto_rawDescGZIP(), []int{169} } func (x *ValidateSchemaKeyspaceRequest) GetKeyspace() string { @@ -9536,7 +9667,7 @@ type ValidateSchemaKeyspaceResponse struct { func (x *ValidateSchemaKeyspaceResponse) Reset() { *x = ValidateSchemaKeyspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[168] + mi := &file_vtctldata_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9549,7 +9680,7 @@ func (x *ValidateSchemaKeyspaceResponse) String() string { func (*ValidateSchemaKeyspaceResponse) ProtoMessage() {} func (x *ValidateSchemaKeyspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[168] + mi := &file_vtctldata_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9562,7 +9693,7 @@ func (x *ValidateSchemaKeyspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateSchemaKeyspaceResponse.ProtoReflect.Descriptor instead. func (*ValidateSchemaKeyspaceResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{168} + return file_vtctldata_proto_rawDescGZIP(), []int{170} } func (x *ValidateSchemaKeyspaceResponse) GetResults() []string { @@ -9592,7 +9723,7 @@ type ValidateShardRequest struct { func (x *ValidateShardRequest) Reset() { *x = ValidateShardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[169] + mi := &file_vtctldata_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9605,7 +9736,7 @@ func (x *ValidateShardRequest) String() string { func (*ValidateShardRequest) ProtoMessage() {} func (x *ValidateShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[169] + mi := &file_vtctldata_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9618,7 +9749,7 @@ func (x *ValidateShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateShardRequest.ProtoReflect.Descriptor instead. func (*ValidateShardRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{169} + return file_vtctldata_proto_rawDescGZIP(), []int{171} } func (x *ValidateShardRequest) GetKeyspace() string { @@ -9653,7 +9784,7 @@ type ValidateShardResponse struct { func (x *ValidateShardResponse) Reset() { *x = ValidateShardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[170] + mi := &file_vtctldata_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9666,7 +9797,7 @@ func (x *ValidateShardResponse) String() string { func (*ValidateShardResponse) ProtoMessage() {} func (x *ValidateShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[170] + mi := &file_vtctldata_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9679,7 +9810,7 @@ func (x *ValidateShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateShardResponse.ProtoReflect.Descriptor instead. func (*ValidateShardResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{170} + return file_vtctldata_proto_rawDescGZIP(), []int{172} } func (x *ValidateShardResponse) GetResults() []string { @@ -9700,7 +9831,7 @@ type ValidateVersionKeyspaceRequest struct { func (x *ValidateVersionKeyspaceRequest) Reset() { *x = ValidateVersionKeyspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[171] + mi := &file_vtctldata_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9713,7 +9844,7 @@ func (x *ValidateVersionKeyspaceRequest) String() string { func (*ValidateVersionKeyspaceRequest) ProtoMessage() {} func (x *ValidateVersionKeyspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[171] + mi := &file_vtctldata_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9726,7 +9857,7 @@ func (x *ValidateVersionKeyspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVersionKeyspaceRequest.ProtoReflect.Descriptor instead. func (*ValidateVersionKeyspaceRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{171} + return file_vtctldata_proto_rawDescGZIP(), []int{173} } func (x *ValidateVersionKeyspaceRequest) GetKeyspace() string { @@ -9748,7 +9879,7 @@ type ValidateVersionKeyspaceResponse struct { func (x *ValidateVersionKeyspaceResponse) Reset() { *x = ValidateVersionKeyspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[172] + mi := &file_vtctldata_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9761,7 +9892,7 @@ func (x *ValidateVersionKeyspaceResponse) String() string { func (*ValidateVersionKeyspaceResponse) ProtoMessage() {} func (x *ValidateVersionKeyspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[172] + mi := &file_vtctldata_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9774,7 +9905,7 @@ func (x *ValidateVersionKeyspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVersionKeyspaceResponse.ProtoReflect.Descriptor instead. func (*ValidateVersionKeyspaceResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{172} + return file_vtctldata_proto_rawDescGZIP(), []int{174} } func (x *ValidateVersionKeyspaceResponse) GetResults() []string { @@ -9803,7 +9934,7 @@ type ValidateVersionShardRequest struct { func (x *ValidateVersionShardRequest) Reset() { *x = ValidateVersionShardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[173] + mi := &file_vtctldata_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9816,7 +9947,7 @@ func (x *ValidateVersionShardRequest) String() string { func (*ValidateVersionShardRequest) ProtoMessage() {} func (x *ValidateVersionShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[173] + mi := &file_vtctldata_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9829,7 +9960,7 @@ func (x *ValidateVersionShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVersionShardRequest.ProtoReflect.Descriptor instead. func (*ValidateVersionShardRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{173} + return file_vtctldata_proto_rawDescGZIP(), []int{175} } func (x *ValidateVersionShardRequest) GetKeyspace() string { @@ -9857,7 +9988,7 @@ type ValidateVersionShardResponse struct { func (x *ValidateVersionShardResponse) Reset() { *x = ValidateVersionShardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[174] + mi := &file_vtctldata_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9870,7 +10001,7 @@ func (x *ValidateVersionShardResponse) String() string { func (*ValidateVersionShardResponse) ProtoMessage() {} func (x *ValidateVersionShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[174] + mi := &file_vtctldata_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9883,7 +10014,7 @@ func (x *ValidateVersionShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVersionShardResponse.ProtoReflect.Descriptor instead. func (*ValidateVersionShardResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{174} + return file_vtctldata_proto_rawDescGZIP(), []int{176} } func (x *ValidateVersionShardResponse) GetResults() []string { @@ -9907,7 +10038,7 @@ type ValidateVSchemaRequest struct { func (x *ValidateVSchemaRequest) Reset() { *x = ValidateVSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[175] + mi := &file_vtctldata_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9920,7 +10051,7 @@ func (x *ValidateVSchemaRequest) String() string { func (*ValidateVSchemaRequest) ProtoMessage() {} func (x *ValidateVSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[175] + mi := &file_vtctldata_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9933,7 +10064,7 @@ func (x *ValidateVSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVSchemaRequest.ProtoReflect.Descriptor instead. func (*ValidateVSchemaRequest) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{175} + return file_vtctldata_proto_rawDescGZIP(), []int{177} } func (x *ValidateVSchemaRequest) GetKeyspace() string { @@ -9976,7 +10107,7 @@ type ValidateVSchemaResponse struct { func (x *ValidateVSchemaResponse) Reset() { *x = ValidateVSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[176] + mi := &file_vtctldata_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9989,7 +10120,7 @@ func (x *ValidateVSchemaResponse) String() string { func (*ValidateVSchemaResponse) ProtoMessage() {} func (x *ValidateVSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[176] + mi := &file_vtctldata_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10002,7 +10133,7 @@ func (x *ValidateVSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidateVSchemaResponse.ProtoReflect.Descriptor instead. func (*ValidateVSchemaResponse) Descriptor() ([]byte, []int) { - return file_vtctldata_proto_rawDescGZIP(), []int{176} + return file_vtctldata_proto_rawDescGZIP(), []int{178} } func (x *ValidateVSchemaResponse) GetResults() []string { @@ -10031,7 +10162,7 @@ type Workflow_ReplicationLocation struct { func (x *Workflow_ReplicationLocation) Reset() { *x = Workflow_ReplicationLocation{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[178] + mi := &file_vtctldata_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10044,7 +10175,7 @@ func (x *Workflow_ReplicationLocation) String() string { func (*Workflow_ReplicationLocation) ProtoMessage() {} func (x *Workflow_ReplicationLocation) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[178] + mi := &file_vtctldata_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10087,7 +10218,7 @@ type Workflow_ShardStream struct { func (x *Workflow_ShardStream) Reset() { *x = Workflow_ShardStream{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[179] + mi := &file_vtctldata_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10100,7 +10231,7 @@ func (x *Workflow_ShardStream) String() string { func (*Workflow_ShardStream) ProtoMessage() {} func (x *Workflow_ShardStream) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[179] + mi := &file_vtctldata_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10170,7 +10301,7 @@ type Workflow_Stream struct { func (x *Workflow_Stream) Reset() { *x = Workflow_Stream{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[180] + mi := &file_vtctldata_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10183,7 +10314,7 @@ func (x *Workflow_Stream) String() string { func (*Workflow_Stream) ProtoMessage() {} func (x *Workflow_Stream) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[180] + mi := &file_vtctldata_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10316,7 +10447,7 @@ type Workflow_Stream_CopyState struct { func (x *Workflow_Stream_CopyState) Reset() { *x = Workflow_Stream_CopyState{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[181] + mi := &file_vtctldata_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10329,7 +10460,7 @@ func (x *Workflow_Stream_CopyState) String() string { func (*Workflow_Stream_CopyState) ProtoMessage() {} func (x *Workflow_Stream_CopyState) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[181] + mi := &file_vtctldata_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10377,7 +10508,7 @@ type Workflow_Stream_Log struct { func (x *Workflow_Stream_Log) Reset() { *x = Workflow_Stream_Log{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[182] + mi := &file_vtctldata_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10390,7 +10521,7 @@ func (x *Workflow_Stream_Log) String() string { func (*Workflow_Stream_Log) ProtoMessage() {} func (x *Workflow_Stream_Log) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[182] + mi := &file_vtctldata_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10473,7 +10604,7 @@ type GetSrvKeyspaceNamesResponse_NameList struct { func (x *GetSrvKeyspaceNamesResponse_NameList) Reset() { *x = GetSrvKeyspaceNamesResponse_NameList{} if protoimpl.UnsafeEnabled { - mi := &file_vtctldata_proto_msgTypes[186] + mi := &file_vtctldata_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10486,7 +10617,7 @@ func (x *GetSrvKeyspaceNamesResponse_NameList) String() string { func (*GetSrvKeyspaceNamesResponse_NameList) ProtoMessage() {} func (x *GetSrvKeyspaceNamesResponse_NameList) ProtoReflect() protoreflect.Message { - mi := &file_vtctldata_proto_msgTypes[186] + mi := &file_vtctldata_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11165,598 +11296,646 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, - 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x72, 0x76, - 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, - 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x73, 0x72, - 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x73, 0x1a, 0x53, 0x0a, 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, - 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, - 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, - 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, - 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x63, 0x65, - 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, - 0x6c, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, - 0x2f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x42, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x76, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x52, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x17, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, - 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x22, 0x42, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, - 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x1b, 0x50, 0x6c, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf1, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, + 0x0a, 0x0c, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, + 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x56, 0x0a, 0x0d, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x53, 0x0a, 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x28, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, + 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2b, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, + 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, - 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, - 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x52, 0x0c, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x07, 0x76, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x52, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x5f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x17, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, - 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x22, 0x74, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, - 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x1d, 0x0a, 0x1b, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, - 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x52, 0x65, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, - 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, 0x01, - 0x0a, 0x18, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, - 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x19, - 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, - 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, - 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, - 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, - 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, - 0x69, 0x76, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, - 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, - 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x0b, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x75, 0x6e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x18, 0x0a, 0x16, - 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x75, 0x72, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xc8, 0x01, 0x0a, - 0x1c, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, - 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x72, 0x0a, 0x1f, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x42, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, + 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, + 0x02, 0x0a, 0x1b, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x22, - 0x49, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1c, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, + 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, + 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0c, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, + 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, - 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x46, 0x0a, 0x1d, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, - 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, + 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, + 0x1c, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, + 0x1a, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x62, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x20, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, + 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, + 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x22, 0xaa, 0x03, 0x0a, 0x21, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, - 0x12, 0x5a, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x5f, 0x0a, 0x18, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4e, 0x0a, - 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x01, - 0x0a, 0x1d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, + 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, + 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, 0x0a, - 0x12, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2c, 0x0a, - 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x53, - 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x09, - 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x1a, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x16, 0x53, - 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x19, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x21, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xc6, - 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x22, 0x43, 0x0a, 0x19, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, + 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, + 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, - 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, + 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, + 0x2d, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, + 0x01, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, + 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, + 0x0a, 0x15, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, + 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, + 0x11, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, + 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, + 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, + 0x1e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, + 0x1f, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x22, 0x72, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, + 0x8e, 0x02, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, + 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x22, 0x46, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, + 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6f, 0x6c, 0x64, - 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, - 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, - 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x65, 0x0a, 0x18, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, - 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x22, 0x34, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x69, 0x0a, 0x16, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x54, 0x0a, 0x20, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0xaa, 0x03, 0x0a, 0x21, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, + 0x70, 0x1a, 0x5f, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x4e, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x7c, 0x0a, 0x12, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x15, 0x0a, 0x13, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x4b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, + 0x53, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x52, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x52, 0x0a, 0x21, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, + 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x0a, 0x6f, 0x6c, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, + 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, + 0x65, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x34, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, + 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, + 0x69, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, - 0xfc, 0x01, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, - 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, - 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, - 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x56, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, 0x02, 0x0a, 0x1e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, + 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, + 0x02, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, + 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, @@ -11766,79 +11945,49 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0x98, 0x01, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x68, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x76, 0x74, 0x63, + 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x4f, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x16, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, - 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x2a, 0x4a, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x43, - 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x52, 0x45, 0x41, 0x54, - 0x45, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x42, 0x28, - 0x5a, 0x26, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, - 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x4a, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, + 0x4d, 0x4f, 0x56, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, + 0x58, 0x10, 0x02, 0x42, 0x28, 0x5a, 0x26, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, + 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11854,7 +12003,7 @@ func file_vtctldata_proto_rawDescGZIP() []byte { } var file_vtctldata_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_vtctldata_proto_msgTypes = make([]protoimpl.MessageInfo, 196) +var file_vtctldata_proto_msgTypes = make([]protoimpl.MessageInfo, 198) var file_vtctldata_proto_goTypes = []interface{}{ (MaterializationIntent)(0), // 0: vtctldata.MaterializationIntent (*ExecuteVtctlCommandRequest)(nil), // 1: vtctldata.ExecuteVtctlCommandRequest @@ -11935,301 +12084,303 @@ var file_vtctldata_proto_goTypes = []interface{}{ (*GetSrvKeyspaceNamesResponse)(nil), // 76: vtctldata.GetSrvKeyspaceNamesResponse (*GetSrvKeyspacesRequest)(nil), // 77: vtctldata.GetSrvKeyspacesRequest (*GetSrvKeyspacesResponse)(nil), // 78: vtctldata.GetSrvKeyspacesResponse - (*GetSrvVSchemaRequest)(nil), // 79: vtctldata.GetSrvVSchemaRequest - (*GetSrvVSchemaResponse)(nil), // 80: vtctldata.GetSrvVSchemaResponse - (*GetSrvVSchemasRequest)(nil), // 81: vtctldata.GetSrvVSchemasRequest - (*GetSrvVSchemasResponse)(nil), // 82: vtctldata.GetSrvVSchemasResponse - (*GetTabletRequest)(nil), // 83: vtctldata.GetTabletRequest - (*GetTabletResponse)(nil), // 84: vtctldata.GetTabletResponse - (*GetTabletsRequest)(nil), // 85: vtctldata.GetTabletsRequest - (*GetTabletsResponse)(nil), // 86: vtctldata.GetTabletsResponse - (*GetTopologyPathRequest)(nil), // 87: vtctldata.GetTopologyPathRequest - (*GetTopologyPathResponse)(nil), // 88: vtctldata.GetTopologyPathResponse - (*TopologyCell)(nil), // 89: vtctldata.TopologyCell - (*GetVSchemaRequest)(nil), // 90: vtctldata.GetVSchemaRequest - (*GetVersionRequest)(nil), // 91: vtctldata.GetVersionRequest - (*GetVersionResponse)(nil), // 92: vtctldata.GetVersionResponse - (*GetVSchemaResponse)(nil), // 93: vtctldata.GetVSchemaResponse - (*GetWorkflowsRequest)(nil), // 94: vtctldata.GetWorkflowsRequest - (*GetWorkflowsResponse)(nil), // 95: vtctldata.GetWorkflowsResponse - (*InitShardPrimaryRequest)(nil), // 96: vtctldata.InitShardPrimaryRequest - (*InitShardPrimaryResponse)(nil), // 97: vtctldata.InitShardPrimaryResponse - (*PingTabletRequest)(nil), // 98: vtctldata.PingTabletRequest - (*PingTabletResponse)(nil), // 99: vtctldata.PingTabletResponse - (*PlannedReparentShardRequest)(nil), // 100: vtctldata.PlannedReparentShardRequest - (*PlannedReparentShardResponse)(nil), // 101: vtctldata.PlannedReparentShardResponse - (*RebuildKeyspaceGraphRequest)(nil), // 102: vtctldata.RebuildKeyspaceGraphRequest - (*RebuildKeyspaceGraphResponse)(nil), // 103: vtctldata.RebuildKeyspaceGraphResponse - (*RebuildVSchemaGraphRequest)(nil), // 104: vtctldata.RebuildVSchemaGraphRequest - (*RebuildVSchemaGraphResponse)(nil), // 105: vtctldata.RebuildVSchemaGraphResponse - (*RefreshStateRequest)(nil), // 106: vtctldata.RefreshStateRequest - (*RefreshStateResponse)(nil), // 107: vtctldata.RefreshStateResponse - (*RefreshStateByShardRequest)(nil), // 108: vtctldata.RefreshStateByShardRequest - (*RefreshStateByShardResponse)(nil), // 109: vtctldata.RefreshStateByShardResponse - (*ReloadSchemaRequest)(nil), // 110: vtctldata.ReloadSchemaRequest - (*ReloadSchemaResponse)(nil), // 111: vtctldata.ReloadSchemaResponse - (*ReloadSchemaKeyspaceRequest)(nil), // 112: vtctldata.ReloadSchemaKeyspaceRequest - (*ReloadSchemaKeyspaceResponse)(nil), // 113: vtctldata.ReloadSchemaKeyspaceResponse - (*ReloadSchemaShardRequest)(nil), // 114: vtctldata.ReloadSchemaShardRequest - (*ReloadSchemaShardResponse)(nil), // 115: vtctldata.ReloadSchemaShardResponse - (*RemoveBackupRequest)(nil), // 116: vtctldata.RemoveBackupRequest - (*RemoveBackupResponse)(nil), // 117: vtctldata.RemoveBackupResponse - (*RemoveKeyspaceCellRequest)(nil), // 118: vtctldata.RemoveKeyspaceCellRequest - (*RemoveKeyspaceCellResponse)(nil), // 119: vtctldata.RemoveKeyspaceCellResponse - (*RemoveShardCellRequest)(nil), // 120: vtctldata.RemoveShardCellRequest - (*RemoveShardCellResponse)(nil), // 121: vtctldata.RemoveShardCellResponse - (*ReparentTabletRequest)(nil), // 122: vtctldata.ReparentTabletRequest - (*ReparentTabletResponse)(nil), // 123: vtctldata.ReparentTabletResponse - (*RestoreFromBackupRequest)(nil), // 124: vtctldata.RestoreFromBackupRequest - (*RestoreFromBackupResponse)(nil), // 125: vtctldata.RestoreFromBackupResponse - (*RunHealthCheckRequest)(nil), // 126: vtctldata.RunHealthCheckRequest - (*RunHealthCheckResponse)(nil), // 127: vtctldata.RunHealthCheckResponse - (*SetKeyspaceDurabilityPolicyRequest)(nil), // 128: vtctldata.SetKeyspaceDurabilityPolicyRequest - (*SetKeyspaceDurabilityPolicyResponse)(nil), // 129: vtctldata.SetKeyspaceDurabilityPolicyResponse - (*SetKeyspaceServedFromRequest)(nil), // 130: vtctldata.SetKeyspaceServedFromRequest - (*SetKeyspaceServedFromResponse)(nil), // 131: vtctldata.SetKeyspaceServedFromResponse - (*SetKeyspaceShardingInfoRequest)(nil), // 132: vtctldata.SetKeyspaceShardingInfoRequest - (*SetKeyspaceShardingInfoResponse)(nil), // 133: vtctldata.SetKeyspaceShardingInfoResponse - (*SetShardIsPrimaryServingRequest)(nil), // 134: vtctldata.SetShardIsPrimaryServingRequest - (*SetShardIsPrimaryServingResponse)(nil), // 135: vtctldata.SetShardIsPrimaryServingResponse - (*SetShardTabletControlRequest)(nil), // 136: vtctldata.SetShardTabletControlRequest - (*SetShardTabletControlResponse)(nil), // 137: vtctldata.SetShardTabletControlResponse - (*SetWritableRequest)(nil), // 138: vtctldata.SetWritableRequest - (*SetWritableResponse)(nil), // 139: vtctldata.SetWritableResponse - (*ShardReplicationAddRequest)(nil), // 140: vtctldata.ShardReplicationAddRequest - (*ShardReplicationAddResponse)(nil), // 141: vtctldata.ShardReplicationAddResponse - (*ShardReplicationFixRequest)(nil), // 142: vtctldata.ShardReplicationFixRequest - (*ShardReplicationFixResponse)(nil), // 143: vtctldata.ShardReplicationFixResponse - (*ShardReplicationPositionsRequest)(nil), // 144: vtctldata.ShardReplicationPositionsRequest - (*ShardReplicationPositionsResponse)(nil), // 145: vtctldata.ShardReplicationPositionsResponse - (*ShardReplicationRemoveRequest)(nil), // 146: vtctldata.ShardReplicationRemoveRequest - (*ShardReplicationRemoveResponse)(nil), // 147: vtctldata.ShardReplicationRemoveResponse - (*SleepTabletRequest)(nil), // 148: vtctldata.SleepTabletRequest - (*SleepTabletResponse)(nil), // 149: vtctldata.SleepTabletResponse - (*SourceShardAddRequest)(nil), // 150: vtctldata.SourceShardAddRequest - (*SourceShardAddResponse)(nil), // 151: vtctldata.SourceShardAddResponse - (*SourceShardDeleteRequest)(nil), // 152: vtctldata.SourceShardDeleteRequest - (*SourceShardDeleteResponse)(nil), // 153: vtctldata.SourceShardDeleteResponse - (*StartReplicationRequest)(nil), // 154: vtctldata.StartReplicationRequest - (*StartReplicationResponse)(nil), // 155: vtctldata.StartReplicationResponse - (*StopReplicationRequest)(nil), // 156: vtctldata.StopReplicationRequest - (*StopReplicationResponse)(nil), // 157: vtctldata.StopReplicationResponse - (*TabletExternallyReparentedRequest)(nil), // 158: vtctldata.TabletExternallyReparentedRequest - (*TabletExternallyReparentedResponse)(nil), // 159: vtctldata.TabletExternallyReparentedResponse - (*UpdateCellInfoRequest)(nil), // 160: vtctldata.UpdateCellInfoRequest - (*UpdateCellInfoResponse)(nil), // 161: vtctldata.UpdateCellInfoResponse - (*UpdateCellsAliasRequest)(nil), // 162: vtctldata.UpdateCellsAliasRequest - (*UpdateCellsAliasResponse)(nil), // 163: vtctldata.UpdateCellsAliasResponse - (*ValidateRequest)(nil), // 164: vtctldata.ValidateRequest - (*ValidateResponse)(nil), // 165: vtctldata.ValidateResponse - (*ValidateKeyspaceRequest)(nil), // 166: vtctldata.ValidateKeyspaceRequest - (*ValidateKeyspaceResponse)(nil), // 167: vtctldata.ValidateKeyspaceResponse - (*ValidateSchemaKeyspaceRequest)(nil), // 168: vtctldata.ValidateSchemaKeyspaceRequest - (*ValidateSchemaKeyspaceResponse)(nil), // 169: vtctldata.ValidateSchemaKeyspaceResponse - (*ValidateShardRequest)(nil), // 170: vtctldata.ValidateShardRequest - (*ValidateShardResponse)(nil), // 171: vtctldata.ValidateShardResponse - (*ValidateVersionKeyspaceRequest)(nil), // 172: vtctldata.ValidateVersionKeyspaceRequest - (*ValidateVersionKeyspaceResponse)(nil), // 173: vtctldata.ValidateVersionKeyspaceResponse - (*ValidateVersionShardRequest)(nil), // 174: vtctldata.ValidateVersionShardRequest - (*ValidateVersionShardResponse)(nil), // 175: vtctldata.ValidateVersionShardResponse - (*ValidateVSchemaRequest)(nil), // 176: vtctldata.ValidateVSchemaRequest - (*ValidateVSchemaResponse)(nil), // 177: vtctldata.ValidateVSchemaResponse - nil, // 178: vtctldata.Workflow.ShardStreamsEntry - (*Workflow_ReplicationLocation)(nil), // 179: vtctldata.Workflow.ReplicationLocation - (*Workflow_ShardStream)(nil), // 180: vtctldata.Workflow.ShardStream - (*Workflow_Stream)(nil), // 181: vtctldata.Workflow.Stream - (*Workflow_Stream_CopyState)(nil), // 182: vtctldata.Workflow.Stream.CopyState - (*Workflow_Stream_Log)(nil), // 183: vtctldata.Workflow.Stream.Log - nil, // 184: vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry - nil, // 185: vtctldata.GetCellsAliasesResponse.AliasesEntry - nil, // 186: vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry - (*GetSrvKeyspaceNamesResponse_NameList)(nil), // 187: vtctldata.GetSrvKeyspaceNamesResponse.NameList - nil, // 188: vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry - nil, // 189: vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry - nil, // 190: vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry - nil, // 191: vtctldata.ShardReplicationPositionsResponse.TabletMapEntry - nil, // 192: vtctldata.ValidateResponse.ResultsByKeyspaceEntry - nil, // 193: vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry - nil, // 194: vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry - nil, // 195: vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry - nil, // 196: vtctldata.ValidateVSchemaResponse.ResultsByShardEntry - (*logutil.Event)(nil), // 197: logutil.Event - (*topodata.Keyspace)(nil), // 198: topodata.Keyspace - (*topodata.Shard)(nil), // 199: topodata.Shard - (*topodata.CellInfo)(nil), // 200: topodata.CellInfo - (*vschema.RoutingRules)(nil), // 201: vschema.RoutingRules - (*vschema.ShardRoutingRules)(nil), // 202: vschema.ShardRoutingRules - (*vttime.Duration)(nil), // 203: vttime.Duration - (*vtrpc.CallerID)(nil), // 204: vtrpc.CallerID - (*vschema.Keyspace)(nil), // 205: vschema.Keyspace - (*topodata.TabletAlias)(nil), // 206: topodata.TabletAlias - (topodata.TabletType)(0), // 207: topodata.TabletType - (*topodata.Tablet)(nil), // 208: topodata.Tablet - (*topodata.Keyspace_ServedFrom)(nil), // 209: topodata.Keyspace.ServedFrom - (topodata.KeyspaceType)(0), // 210: topodata.KeyspaceType - (*vttime.Time)(nil), // 211: vttime.Time - (*query.QueryResult)(nil), // 212: query.QueryResult - (*tabletmanagerdata.ExecuteHookRequest)(nil), // 213: tabletmanagerdata.ExecuteHookRequest - (*tabletmanagerdata.ExecuteHookResponse)(nil), // 214: tabletmanagerdata.ExecuteHookResponse - (*mysqlctl.BackupInfo)(nil), // 215: mysqlctl.BackupInfo - (*replicationdata.FullStatus)(nil), // 216: replicationdata.FullStatus - (*tabletmanagerdata.Permissions)(nil), // 217: tabletmanagerdata.Permissions - (*tabletmanagerdata.SchemaDefinition)(nil), // 218: tabletmanagerdata.SchemaDefinition - (*vschema.SrvVSchema)(nil), // 219: vschema.SrvVSchema - (*topodata.ShardReplicationError)(nil), // 220: topodata.ShardReplicationError - (*topodata.KeyRange)(nil), // 221: topodata.KeyRange - (*topodata.CellsAlias)(nil), // 222: topodata.CellsAlias - (*topodata.Shard_TabletControl)(nil), // 223: topodata.Shard.TabletControl - (*binlogdata.BinlogSource)(nil), // 224: binlogdata.BinlogSource - (*topodata.SrvKeyspace)(nil), // 225: topodata.SrvKeyspace - (*replicationdata.Status)(nil), // 226: replicationdata.Status + (*UpdateThrottlerConfigRequest)(nil), // 79: vtctldata.UpdateThrottlerConfigRequest + (*UpdateThrottlerConfigResponse)(nil), // 80: vtctldata.UpdateThrottlerConfigResponse + (*GetSrvVSchemaRequest)(nil), // 81: vtctldata.GetSrvVSchemaRequest + (*GetSrvVSchemaResponse)(nil), // 82: vtctldata.GetSrvVSchemaResponse + (*GetSrvVSchemasRequest)(nil), // 83: vtctldata.GetSrvVSchemasRequest + (*GetSrvVSchemasResponse)(nil), // 84: vtctldata.GetSrvVSchemasResponse + (*GetTabletRequest)(nil), // 85: vtctldata.GetTabletRequest + (*GetTabletResponse)(nil), // 86: vtctldata.GetTabletResponse + (*GetTabletsRequest)(nil), // 87: vtctldata.GetTabletsRequest + (*GetTabletsResponse)(nil), // 88: vtctldata.GetTabletsResponse + (*GetTopologyPathRequest)(nil), // 89: vtctldata.GetTopologyPathRequest + (*GetTopologyPathResponse)(nil), // 90: vtctldata.GetTopologyPathResponse + (*TopologyCell)(nil), // 91: vtctldata.TopologyCell + (*GetVSchemaRequest)(nil), // 92: vtctldata.GetVSchemaRequest + (*GetVersionRequest)(nil), // 93: vtctldata.GetVersionRequest + (*GetVersionResponse)(nil), // 94: vtctldata.GetVersionResponse + (*GetVSchemaResponse)(nil), // 95: vtctldata.GetVSchemaResponse + (*GetWorkflowsRequest)(nil), // 96: vtctldata.GetWorkflowsRequest + (*GetWorkflowsResponse)(nil), // 97: vtctldata.GetWorkflowsResponse + (*InitShardPrimaryRequest)(nil), // 98: vtctldata.InitShardPrimaryRequest + (*InitShardPrimaryResponse)(nil), // 99: vtctldata.InitShardPrimaryResponse + (*PingTabletRequest)(nil), // 100: vtctldata.PingTabletRequest + (*PingTabletResponse)(nil), // 101: vtctldata.PingTabletResponse + (*PlannedReparentShardRequest)(nil), // 102: vtctldata.PlannedReparentShardRequest + (*PlannedReparentShardResponse)(nil), // 103: vtctldata.PlannedReparentShardResponse + (*RebuildKeyspaceGraphRequest)(nil), // 104: vtctldata.RebuildKeyspaceGraphRequest + (*RebuildKeyspaceGraphResponse)(nil), // 105: vtctldata.RebuildKeyspaceGraphResponse + (*RebuildVSchemaGraphRequest)(nil), // 106: vtctldata.RebuildVSchemaGraphRequest + (*RebuildVSchemaGraphResponse)(nil), // 107: vtctldata.RebuildVSchemaGraphResponse + (*RefreshStateRequest)(nil), // 108: vtctldata.RefreshStateRequest + (*RefreshStateResponse)(nil), // 109: vtctldata.RefreshStateResponse + (*RefreshStateByShardRequest)(nil), // 110: vtctldata.RefreshStateByShardRequest + (*RefreshStateByShardResponse)(nil), // 111: vtctldata.RefreshStateByShardResponse + (*ReloadSchemaRequest)(nil), // 112: vtctldata.ReloadSchemaRequest + (*ReloadSchemaResponse)(nil), // 113: vtctldata.ReloadSchemaResponse + (*ReloadSchemaKeyspaceRequest)(nil), // 114: vtctldata.ReloadSchemaKeyspaceRequest + (*ReloadSchemaKeyspaceResponse)(nil), // 115: vtctldata.ReloadSchemaKeyspaceResponse + (*ReloadSchemaShardRequest)(nil), // 116: vtctldata.ReloadSchemaShardRequest + (*ReloadSchemaShardResponse)(nil), // 117: vtctldata.ReloadSchemaShardResponse + (*RemoveBackupRequest)(nil), // 118: vtctldata.RemoveBackupRequest + (*RemoveBackupResponse)(nil), // 119: vtctldata.RemoveBackupResponse + (*RemoveKeyspaceCellRequest)(nil), // 120: vtctldata.RemoveKeyspaceCellRequest + (*RemoveKeyspaceCellResponse)(nil), // 121: vtctldata.RemoveKeyspaceCellResponse + (*RemoveShardCellRequest)(nil), // 122: vtctldata.RemoveShardCellRequest + (*RemoveShardCellResponse)(nil), // 123: vtctldata.RemoveShardCellResponse + (*ReparentTabletRequest)(nil), // 124: vtctldata.ReparentTabletRequest + (*ReparentTabletResponse)(nil), // 125: vtctldata.ReparentTabletResponse + (*RestoreFromBackupRequest)(nil), // 126: vtctldata.RestoreFromBackupRequest + (*RestoreFromBackupResponse)(nil), // 127: vtctldata.RestoreFromBackupResponse + (*RunHealthCheckRequest)(nil), // 128: vtctldata.RunHealthCheckRequest + (*RunHealthCheckResponse)(nil), // 129: vtctldata.RunHealthCheckResponse + (*SetKeyspaceDurabilityPolicyRequest)(nil), // 130: vtctldata.SetKeyspaceDurabilityPolicyRequest + (*SetKeyspaceDurabilityPolicyResponse)(nil), // 131: vtctldata.SetKeyspaceDurabilityPolicyResponse + (*SetKeyspaceServedFromRequest)(nil), // 132: vtctldata.SetKeyspaceServedFromRequest + (*SetKeyspaceServedFromResponse)(nil), // 133: vtctldata.SetKeyspaceServedFromResponse + (*SetKeyspaceShardingInfoRequest)(nil), // 134: vtctldata.SetKeyspaceShardingInfoRequest + (*SetKeyspaceShardingInfoResponse)(nil), // 135: vtctldata.SetKeyspaceShardingInfoResponse + (*SetShardIsPrimaryServingRequest)(nil), // 136: vtctldata.SetShardIsPrimaryServingRequest + (*SetShardIsPrimaryServingResponse)(nil), // 137: vtctldata.SetShardIsPrimaryServingResponse + (*SetShardTabletControlRequest)(nil), // 138: vtctldata.SetShardTabletControlRequest + (*SetShardTabletControlResponse)(nil), // 139: vtctldata.SetShardTabletControlResponse + (*SetWritableRequest)(nil), // 140: vtctldata.SetWritableRequest + (*SetWritableResponse)(nil), // 141: vtctldata.SetWritableResponse + (*ShardReplicationAddRequest)(nil), // 142: vtctldata.ShardReplicationAddRequest + (*ShardReplicationAddResponse)(nil), // 143: vtctldata.ShardReplicationAddResponse + (*ShardReplicationFixRequest)(nil), // 144: vtctldata.ShardReplicationFixRequest + (*ShardReplicationFixResponse)(nil), // 145: vtctldata.ShardReplicationFixResponse + (*ShardReplicationPositionsRequest)(nil), // 146: vtctldata.ShardReplicationPositionsRequest + (*ShardReplicationPositionsResponse)(nil), // 147: vtctldata.ShardReplicationPositionsResponse + (*ShardReplicationRemoveRequest)(nil), // 148: vtctldata.ShardReplicationRemoveRequest + (*ShardReplicationRemoveResponse)(nil), // 149: vtctldata.ShardReplicationRemoveResponse + (*SleepTabletRequest)(nil), // 150: vtctldata.SleepTabletRequest + (*SleepTabletResponse)(nil), // 151: vtctldata.SleepTabletResponse + (*SourceShardAddRequest)(nil), // 152: vtctldata.SourceShardAddRequest + (*SourceShardAddResponse)(nil), // 153: vtctldata.SourceShardAddResponse + (*SourceShardDeleteRequest)(nil), // 154: vtctldata.SourceShardDeleteRequest + (*SourceShardDeleteResponse)(nil), // 155: vtctldata.SourceShardDeleteResponse + (*StartReplicationRequest)(nil), // 156: vtctldata.StartReplicationRequest + (*StartReplicationResponse)(nil), // 157: vtctldata.StartReplicationResponse + (*StopReplicationRequest)(nil), // 158: vtctldata.StopReplicationRequest + (*StopReplicationResponse)(nil), // 159: vtctldata.StopReplicationResponse + (*TabletExternallyReparentedRequest)(nil), // 160: vtctldata.TabletExternallyReparentedRequest + (*TabletExternallyReparentedResponse)(nil), // 161: vtctldata.TabletExternallyReparentedResponse + (*UpdateCellInfoRequest)(nil), // 162: vtctldata.UpdateCellInfoRequest + (*UpdateCellInfoResponse)(nil), // 163: vtctldata.UpdateCellInfoResponse + (*UpdateCellsAliasRequest)(nil), // 164: vtctldata.UpdateCellsAliasRequest + (*UpdateCellsAliasResponse)(nil), // 165: vtctldata.UpdateCellsAliasResponse + (*ValidateRequest)(nil), // 166: vtctldata.ValidateRequest + (*ValidateResponse)(nil), // 167: vtctldata.ValidateResponse + (*ValidateKeyspaceRequest)(nil), // 168: vtctldata.ValidateKeyspaceRequest + (*ValidateKeyspaceResponse)(nil), // 169: vtctldata.ValidateKeyspaceResponse + (*ValidateSchemaKeyspaceRequest)(nil), // 170: vtctldata.ValidateSchemaKeyspaceRequest + (*ValidateSchemaKeyspaceResponse)(nil), // 171: vtctldata.ValidateSchemaKeyspaceResponse + (*ValidateShardRequest)(nil), // 172: vtctldata.ValidateShardRequest + (*ValidateShardResponse)(nil), // 173: vtctldata.ValidateShardResponse + (*ValidateVersionKeyspaceRequest)(nil), // 174: vtctldata.ValidateVersionKeyspaceRequest + (*ValidateVersionKeyspaceResponse)(nil), // 175: vtctldata.ValidateVersionKeyspaceResponse + (*ValidateVersionShardRequest)(nil), // 176: vtctldata.ValidateVersionShardRequest + (*ValidateVersionShardResponse)(nil), // 177: vtctldata.ValidateVersionShardResponse + (*ValidateVSchemaRequest)(nil), // 178: vtctldata.ValidateVSchemaRequest + (*ValidateVSchemaResponse)(nil), // 179: vtctldata.ValidateVSchemaResponse + nil, // 180: vtctldata.Workflow.ShardStreamsEntry + (*Workflow_ReplicationLocation)(nil), // 181: vtctldata.Workflow.ReplicationLocation + (*Workflow_ShardStream)(nil), // 182: vtctldata.Workflow.ShardStream + (*Workflow_Stream)(nil), // 183: vtctldata.Workflow.Stream + (*Workflow_Stream_CopyState)(nil), // 184: vtctldata.Workflow.Stream.CopyState + (*Workflow_Stream_Log)(nil), // 185: vtctldata.Workflow.Stream.Log + nil, // 186: vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry + nil, // 187: vtctldata.GetCellsAliasesResponse.AliasesEntry + nil, // 188: vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry + (*GetSrvKeyspaceNamesResponse_NameList)(nil), // 189: vtctldata.GetSrvKeyspaceNamesResponse.NameList + nil, // 190: vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry + nil, // 191: vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry + nil, // 192: vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry + nil, // 193: vtctldata.ShardReplicationPositionsResponse.TabletMapEntry + nil, // 194: vtctldata.ValidateResponse.ResultsByKeyspaceEntry + nil, // 195: vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry + nil, // 196: vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry + nil, // 197: vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry + nil, // 198: vtctldata.ValidateVSchemaResponse.ResultsByShardEntry + (*logutil.Event)(nil), // 199: logutil.Event + (*topodata.Keyspace)(nil), // 200: topodata.Keyspace + (*topodata.Shard)(nil), // 201: topodata.Shard + (*topodata.CellInfo)(nil), // 202: topodata.CellInfo + (*vschema.RoutingRules)(nil), // 203: vschema.RoutingRules + (*vschema.ShardRoutingRules)(nil), // 204: vschema.ShardRoutingRules + (*vttime.Duration)(nil), // 205: vttime.Duration + (*vtrpc.CallerID)(nil), // 206: vtrpc.CallerID + (*vschema.Keyspace)(nil), // 207: vschema.Keyspace + (*topodata.TabletAlias)(nil), // 208: topodata.TabletAlias + (topodata.TabletType)(0), // 209: topodata.TabletType + (*topodata.Tablet)(nil), // 210: topodata.Tablet + (*topodata.Keyspace_ServedFrom)(nil), // 211: topodata.Keyspace.ServedFrom + (topodata.KeyspaceType)(0), // 212: topodata.KeyspaceType + (*vttime.Time)(nil), // 213: vttime.Time + (*query.QueryResult)(nil), // 214: query.QueryResult + (*tabletmanagerdata.ExecuteHookRequest)(nil), // 215: tabletmanagerdata.ExecuteHookRequest + (*tabletmanagerdata.ExecuteHookResponse)(nil), // 216: tabletmanagerdata.ExecuteHookResponse + (*mysqlctl.BackupInfo)(nil), // 217: mysqlctl.BackupInfo + (*replicationdata.FullStatus)(nil), // 218: replicationdata.FullStatus + (*tabletmanagerdata.Permissions)(nil), // 219: tabletmanagerdata.Permissions + (*tabletmanagerdata.SchemaDefinition)(nil), // 220: tabletmanagerdata.SchemaDefinition + (*vschema.SrvVSchema)(nil), // 221: vschema.SrvVSchema + (*topodata.ShardReplicationError)(nil), // 222: topodata.ShardReplicationError + (*topodata.KeyRange)(nil), // 223: topodata.KeyRange + (*topodata.CellsAlias)(nil), // 224: topodata.CellsAlias + (*topodata.Shard_TabletControl)(nil), // 225: topodata.Shard.TabletControl + (*binlogdata.BinlogSource)(nil), // 226: binlogdata.BinlogSource + (*topodata.SrvKeyspace)(nil), // 227: topodata.SrvKeyspace + (*replicationdata.Status)(nil), // 228: replicationdata.Status } var file_vtctldata_proto_depIdxs = []int32{ - 197, // 0: vtctldata.ExecuteVtctlCommandResponse.event:type_name -> logutil.Event + 199, // 0: vtctldata.ExecuteVtctlCommandResponse.event:type_name -> logutil.Event 3, // 1: vtctldata.MaterializeSettings.table_settings:type_name -> vtctldata.TableMaterializeSettings 0, // 2: vtctldata.MaterializeSettings.materialization_intent:type_name -> vtctldata.MaterializationIntent - 198, // 3: vtctldata.Keyspace.keyspace:type_name -> topodata.Keyspace - 199, // 4: vtctldata.Shard.shard:type_name -> topodata.Shard - 179, // 5: vtctldata.Workflow.source:type_name -> vtctldata.Workflow.ReplicationLocation - 179, // 6: vtctldata.Workflow.target:type_name -> vtctldata.Workflow.ReplicationLocation - 178, // 7: vtctldata.Workflow.shard_streams:type_name -> vtctldata.Workflow.ShardStreamsEntry - 200, // 8: vtctldata.AddCellInfoRequest.cell_info:type_name -> topodata.CellInfo - 201, // 9: vtctldata.ApplyRoutingRulesRequest.routing_rules:type_name -> vschema.RoutingRules - 202, // 10: vtctldata.ApplyShardRoutingRulesRequest.shard_routing_rules:type_name -> vschema.ShardRoutingRules - 203, // 11: vtctldata.ApplySchemaRequest.wait_replicas_timeout:type_name -> vttime.Duration - 204, // 12: vtctldata.ApplySchemaRequest.caller_id:type_name -> vtrpc.CallerID - 205, // 13: vtctldata.ApplyVSchemaRequest.v_schema:type_name -> vschema.Keyspace - 205, // 14: vtctldata.ApplyVSchemaResponse.v_schema:type_name -> vschema.Keyspace - 206, // 15: vtctldata.BackupRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 16: vtctldata.BackupResponse.tablet_alias:type_name -> topodata.TabletAlias - 197, // 17: vtctldata.BackupResponse.event:type_name -> logutil.Event - 206, // 18: vtctldata.ChangeTabletTypeRequest.tablet_alias:type_name -> topodata.TabletAlias - 207, // 19: vtctldata.ChangeTabletTypeRequest.db_type:type_name -> topodata.TabletType - 208, // 20: vtctldata.ChangeTabletTypeResponse.before_tablet:type_name -> topodata.Tablet - 208, // 21: vtctldata.ChangeTabletTypeResponse.after_tablet:type_name -> topodata.Tablet - 209, // 22: vtctldata.CreateKeyspaceRequest.served_froms:type_name -> topodata.Keyspace.ServedFrom - 210, // 23: vtctldata.CreateKeyspaceRequest.type:type_name -> topodata.KeyspaceType - 211, // 24: vtctldata.CreateKeyspaceRequest.snapshot_time:type_name -> vttime.Time + 200, // 3: vtctldata.Keyspace.keyspace:type_name -> topodata.Keyspace + 201, // 4: vtctldata.Shard.shard:type_name -> topodata.Shard + 181, // 5: vtctldata.Workflow.source:type_name -> vtctldata.Workflow.ReplicationLocation + 181, // 6: vtctldata.Workflow.target:type_name -> vtctldata.Workflow.ReplicationLocation + 180, // 7: vtctldata.Workflow.shard_streams:type_name -> vtctldata.Workflow.ShardStreamsEntry + 202, // 8: vtctldata.AddCellInfoRequest.cell_info:type_name -> topodata.CellInfo + 203, // 9: vtctldata.ApplyRoutingRulesRequest.routing_rules:type_name -> vschema.RoutingRules + 204, // 10: vtctldata.ApplyShardRoutingRulesRequest.shard_routing_rules:type_name -> vschema.ShardRoutingRules + 205, // 11: vtctldata.ApplySchemaRequest.wait_replicas_timeout:type_name -> vttime.Duration + 206, // 12: vtctldata.ApplySchemaRequest.caller_id:type_name -> vtrpc.CallerID + 207, // 13: vtctldata.ApplyVSchemaRequest.v_schema:type_name -> vschema.Keyspace + 207, // 14: vtctldata.ApplyVSchemaResponse.v_schema:type_name -> vschema.Keyspace + 208, // 15: vtctldata.BackupRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 16: vtctldata.BackupResponse.tablet_alias:type_name -> topodata.TabletAlias + 199, // 17: vtctldata.BackupResponse.event:type_name -> logutil.Event + 208, // 18: vtctldata.ChangeTabletTypeRequest.tablet_alias:type_name -> topodata.TabletAlias + 209, // 19: vtctldata.ChangeTabletTypeRequest.db_type:type_name -> topodata.TabletType + 210, // 20: vtctldata.ChangeTabletTypeResponse.before_tablet:type_name -> topodata.Tablet + 210, // 21: vtctldata.ChangeTabletTypeResponse.after_tablet:type_name -> topodata.Tablet + 211, // 22: vtctldata.CreateKeyspaceRequest.served_froms:type_name -> topodata.Keyspace.ServedFrom + 212, // 23: vtctldata.CreateKeyspaceRequest.type:type_name -> topodata.KeyspaceType + 213, // 24: vtctldata.CreateKeyspaceRequest.snapshot_time:type_name -> vttime.Time 5, // 25: vtctldata.CreateKeyspaceResponse.keyspace:type_name -> vtctldata.Keyspace 5, // 26: vtctldata.CreateShardResponse.keyspace:type_name -> vtctldata.Keyspace 6, // 27: vtctldata.CreateShardResponse.shard:type_name -> vtctldata.Shard 6, // 28: vtctldata.DeleteShardsRequest.shards:type_name -> vtctldata.Shard - 206, // 29: vtctldata.DeleteTabletsRequest.tablet_aliases:type_name -> topodata.TabletAlias - 206, // 30: vtctldata.EmergencyReparentShardRequest.new_primary:type_name -> topodata.TabletAlias - 206, // 31: vtctldata.EmergencyReparentShardRequest.ignore_replicas:type_name -> topodata.TabletAlias - 203, // 32: vtctldata.EmergencyReparentShardRequest.wait_replicas_timeout:type_name -> vttime.Duration - 206, // 33: vtctldata.EmergencyReparentShardResponse.promoted_primary:type_name -> topodata.TabletAlias - 197, // 34: vtctldata.EmergencyReparentShardResponse.events:type_name -> logutil.Event - 206, // 35: vtctldata.ExecuteFetchAsAppRequest.tablet_alias:type_name -> topodata.TabletAlias - 212, // 36: vtctldata.ExecuteFetchAsAppResponse.result:type_name -> query.QueryResult - 206, // 37: vtctldata.ExecuteFetchAsDBARequest.tablet_alias:type_name -> topodata.TabletAlias - 212, // 38: vtctldata.ExecuteFetchAsDBAResponse.result:type_name -> query.QueryResult - 206, // 39: vtctldata.ExecuteHookRequest.tablet_alias:type_name -> topodata.TabletAlias - 213, // 40: vtctldata.ExecuteHookRequest.tablet_hook_request:type_name -> tabletmanagerdata.ExecuteHookRequest - 214, // 41: vtctldata.ExecuteHookResponse.hook_result:type_name -> tabletmanagerdata.ExecuteHookResponse - 184, // 42: vtctldata.FindAllShardsInKeyspaceResponse.shards:type_name -> vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry - 215, // 43: vtctldata.GetBackupsResponse.backups:type_name -> mysqlctl.BackupInfo - 200, // 44: vtctldata.GetCellInfoResponse.cell_info:type_name -> topodata.CellInfo - 185, // 45: vtctldata.GetCellsAliasesResponse.aliases:type_name -> vtctldata.GetCellsAliasesResponse.AliasesEntry - 206, // 46: vtctldata.GetFullStatusRequest.tablet_alias:type_name -> topodata.TabletAlias - 216, // 47: vtctldata.GetFullStatusResponse.status:type_name -> replicationdata.FullStatus + 208, // 29: vtctldata.DeleteTabletsRequest.tablet_aliases:type_name -> topodata.TabletAlias + 208, // 30: vtctldata.EmergencyReparentShardRequest.new_primary:type_name -> topodata.TabletAlias + 208, // 31: vtctldata.EmergencyReparentShardRequest.ignore_replicas:type_name -> topodata.TabletAlias + 205, // 32: vtctldata.EmergencyReparentShardRequest.wait_replicas_timeout:type_name -> vttime.Duration + 208, // 33: vtctldata.EmergencyReparentShardResponse.promoted_primary:type_name -> topodata.TabletAlias + 199, // 34: vtctldata.EmergencyReparentShardResponse.events:type_name -> logutil.Event + 208, // 35: vtctldata.ExecuteFetchAsAppRequest.tablet_alias:type_name -> topodata.TabletAlias + 214, // 36: vtctldata.ExecuteFetchAsAppResponse.result:type_name -> query.QueryResult + 208, // 37: vtctldata.ExecuteFetchAsDBARequest.tablet_alias:type_name -> topodata.TabletAlias + 214, // 38: vtctldata.ExecuteFetchAsDBAResponse.result:type_name -> query.QueryResult + 208, // 39: vtctldata.ExecuteHookRequest.tablet_alias:type_name -> topodata.TabletAlias + 215, // 40: vtctldata.ExecuteHookRequest.tablet_hook_request:type_name -> tabletmanagerdata.ExecuteHookRequest + 216, // 41: vtctldata.ExecuteHookResponse.hook_result:type_name -> tabletmanagerdata.ExecuteHookResponse + 186, // 42: vtctldata.FindAllShardsInKeyspaceResponse.shards:type_name -> vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry + 217, // 43: vtctldata.GetBackupsResponse.backups:type_name -> mysqlctl.BackupInfo + 202, // 44: vtctldata.GetCellInfoResponse.cell_info:type_name -> topodata.CellInfo + 187, // 45: vtctldata.GetCellsAliasesResponse.aliases:type_name -> vtctldata.GetCellsAliasesResponse.AliasesEntry + 208, // 46: vtctldata.GetFullStatusRequest.tablet_alias:type_name -> topodata.TabletAlias + 218, // 47: vtctldata.GetFullStatusResponse.status:type_name -> replicationdata.FullStatus 5, // 48: vtctldata.GetKeyspacesResponse.keyspaces:type_name -> vtctldata.Keyspace 5, // 49: vtctldata.GetKeyspaceResponse.keyspace:type_name -> vtctldata.Keyspace - 206, // 50: vtctldata.GetPermissionsRequest.tablet_alias:type_name -> topodata.TabletAlias - 217, // 51: vtctldata.GetPermissionsResponse.permissions:type_name -> tabletmanagerdata.Permissions - 201, // 52: vtctldata.GetRoutingRulesResponse.routing_rules:type_name -> vschema.RoutingRules - 206, // 53: vtctldata.GetSchemaRequest.tablet_alias:type_name -> topodata.TabletAlias - 218, // 54: vtctldata.GetSchemaResponse.schema:type_name -> tabletmanagerdata.SchemaDefinition + 208, // 50: vtctldata.GetPermissionsRequest.tablet_alias:type_name -> topodata.TabletAlias + 219, // 51: vtctldata.GetPermissionsResponse.permissions:type_name -> tabletmanagerdata.Permissions + 203, // 52: vtctldata.GetRoutingRulesResponse.routing_rules:type_name -> vschema.RoutingRules + 208, // 53: vtctldata.GetSchemaRequest.tablet_alias:type_name -> topodata.TabletAlias + 220, // 54: vtctldata.GetSchemaResponse.schema:type_name -> tabletmanagerdata.SchemaDefinition 6, // 55: vtctldata.GetShardResponse.shard:type_name -> vtctldata.Shard - 202, // 56: vtctldata.GetShardRoutingRulesResponse.shard_routing_rules:type_name -> vschema.ShardRoutingRules - 186, // 57: vtctldata.GetSrvKeyspaceNamesResponse.names:type_name -> vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry - 188, // 58: vtctldata.GetSrvKeyspacesResponse.srv_keyspaces:type_name -> vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry - 219, // 59: vtctldata.GetSrvVSchemaResponse.srv_v_schema:type_name -> vschema.SrvVSchema - 189, // 60: vtctldata.GetSrvVSchemasResponse.srv_v_schemas:type_name -> vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry - 206, // 61: vtctldata.GetTabletRequest.tablet_alias:type_name -> topodata.TabletAlias - 208, // 62: vtctldata.GetTabletResponse.tablet:type_name -> topodata.Tablet - 206, // 63: vtctldata.GetTabletsRequest.tablet_aliases:type_name -> topodata.TabletAlias - 207, // 64: vtctldata.GetTabletsRequest.tablet_type:type_name -> topodata.TabletType - 208, // 65: vtctldata.GetTabletsResponse.tablets:type_name -> topodata.Tablet - 89, // 66: vtctldata.GetTopologyPathResponse.cell:type_name -> vtctldata.TopologyCell - 206, // 67: vtctldata.GetVersionRequest.tablet_alias:type_name -> topodata.TabletAlias - 205, // 68: vtctldata.GetVSchemaResponse.v_schema:type_name -> vschema.Keyspace + 204, // 56: vtctldata.GetShardRoutingRulesResponse.shard_routing_rules:type_name -> vschema.ShardRoutingRules + 188, // 57: vtctldata.GetSrvKeyspaceNamesResponse.names:type_name -> vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry + 190, // 58: vtctldata.GetSrvKeyspacesResponse.srv_keyspaces:type_name -> vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry + 221, // 59: vtctldata.GetSrvVSchemaResponse.srv_v_schema:type_name -> vschema.SrvVSchema + 191, // 60: vtctldata.GetSrvVSchemasResponse.srv_v_schemas:type_name -> vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry + 208, // 61: vtctldata.GetTabletRequest.tablet_alias:type_name -> topodata.TabletAlias + 210, // 62: vtctldata.GetTabletResponse.tablet:type_name -> topodata.Tablet + 208, // 63: vtctldata.GetTabletsRequest.tablet_aliases:type_name -> topodata.TabletAlias + 209, // 64: vtctldata.GetTabletsRequest.tablet_type:type_name -> topodata.TabletType + 210, // 65: vtctldata.GetTabletsResponse.tablets:type_name -> topodata.Tablet + 91, // 66: vtctldata.GetTopologyPathResponse.cell:type_name -> vtctldata.TopologyCell + 208, // 67: vtctldata.GetVersionRequest.tablet_alias:type_name -> topodata.TabletAlias + 207, // 68: vtctldata.GetVSchemaResponse.v_schema:type_name -> vschema.Keyspace 7, // 69: vtctldata.GetWorkflowsResponse.workflows:type_name -> vtctldata.Workflow - 206, // 70: vtctldata.InitShardPrimaryRequest.primary_elect_tablet_alias:type_name -> topodata.TabletAlias - 203, // 71: vtctldata.InitShardPrimaryRequest.wait_replicas_timeout:type_name -> vttime.Duration - 197, // 72: vtctldata.InitShardPrimaryResponse.events:type_name -> logutil.Event - 206, // 73: vtctldata.PingTabletRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 74: vtctldata.PlannedReparentShardRequest.new_primary:type_name -> topodata.TabletAlias - 206, // 75: vtctldata.PlannedReparentShardRequest.avoid_primary:type_name -> topodata.TabletAlias - 203, // 76: vtctldata.PlannedReparentShardRequest.wait_replicas_timeout:type_name -> vttime.Duration - 206, // 77: vtctldata.PlannedReparentShardResponse.promoted_primary:type_name -> topodata.TabletAlias - 197, // 78: vtctldata.PlannedReparentShardResponse.events:type_name -> logutil.Event - 206, // 79: vtctldata.RefreshStateRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 80: vtctldata.ReloadSchemaRequest.tablet_alias:type_name -> topodata.TabletAlias - 197, // 81: vtctldata.ReloadSchemaKeyspaceResponse.events:type_name -> logutil.Event - 197, // 82: vtctldata.ReloadSchemaShardResponse.events:type_name -> logutil.Event - 206, // 83: vtctldata.ReparentTabletRequest.tablet:type_name -> topodata.TabletAlias - 206, // 84: vtctldata.ReparentTabletResponse.primary:type_name -> topodata.TabletAlias - 206, // 85: vtctldata.RestoreFromBackupRequest.tablet_alias:type_name -> topodata.TabletAlias - 211, // 86: vtctldata.RestoreFromBackupRequest.backup_time:type_name -> vttime.Time - 206, // 87: vtctldata.RestoreFromBackupResponse.tablet_alias:type_name -> topodata.TabletAlias - 197, // 88: vtctldata.RestoreFromBackupResponse.event:type_name -> logutil.Event - 206, // 89: vtctldata.RunHealthCheckRequest.tablet_alias:type_name -> topodata.TabletAlias - 198, // 90: vtctldata.SetKeyspaceDurabilityPolicyResponse.keyspace:type_name -> topodata.Keyspace - 207, // 91: vtctldata.SetKeyspaceServedFromRequest.tablet_type:type_name -> topodata.TabletType - 198, // 92: vtctldata.SetKeyspaceServedFromResponse.keyspace:type_name -> topodata.Keyspace - 198, // 93: vtctldata.SetKeyspaceShardingInfoResponse.keyspace:type_name -> topodata.Keyspace - 199, // 94: vtctldata.SetShardIsPrimaryServingResponse.shard:type_name -> topodata.Shard - 207, // 95: vtctldata.SetShardTabletControlRequest.tablet_type:type_name -> topodata.TabletType - 199, // 96: vtctldata.SetShardTabletControlResponse.shard:type_name -> topodata.Shard - 206, // 97: vtctldata.SetWritableRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 98: vtctldata.ShardReplicationAddRequest.tablet_alias:type_name -> topodata.TabletAlias - 220, // 99: vtctldata.ShardReplicationFixResponse.error:type_name -> topodata.ShardReplicationError - 190, // 100: vtctldata.ShardReplicationPositionsResponse.replication_statuses:type_name -> vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry - 191, // 101: vtctldata.ShardReplicationPositionsResponse.tablet_map:type_name -> vtctldata.ShardReplicationPositionsResponse.TabletMapEntry - 206, // 102: vtctldata.ShardReplicationRemoveRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 103: vtctldata.SleepTabletRequest.tablet_alias:type_name -> topodata.TabletAlias - 203, // 104: vtctldata.SleepTabletRequest.duration:type_name -> vttime.Duration - 221, // 105: vtctldata.SourceShardAddRequest.key_range:type_name -> topodata.KeyRange - 199, // 106: vtctldata.SourceShardAddResponse.shard:type_name -> topodata.Shard - 199, // 107: vtctldata.SourceShardDeleteResponse.shard:type_name -> topodata.Shard - 206, // 108: vtctldata.StartReplicationRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 109: vtctldata.StopReplicationRequest.tablet_alias:type_name -> topodata.TabletAlias - 206, // 110: vtctldata.TabletExternallyReparentedRequest.tablet:type_name -> topodata.TabletAlias - 206, // 111: vtctldata.TabletExternallyReparentedResponse.new_primary:type_name -> topodata.TabletAlias - 206, // 112: vtctldata.TabletExternallyReparentedResponse.old_primary:type_name -> topodata.TabletAlias - 200, // 113: vtctldata.UpdateCellInfoRequest.cell_info:type_name -> topodata.CellInfo - 200, // 114: vtctldata.UpdateCellInfoResponse.cell_info:type_name -> topodata.CellInfo - 222, // 115: vtctldata.UpdateCellsAliasRequest.cells_alias:type_name -> topodata.CellsAlias - 222, // 116: vtctldata.UpdateCellsAliasResponse.cells_alias:type_name -> topodata.CellsAlias - 192, // 117: vtctldata.ValidateResponse.results_by_keyspace:type_name -> vtctldata.ValidateResponse.ResultsByKeyspaceEntry - 193, // 118: vtctldata.ValidateKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry - 194, // 119: vtctldata.ValidateSchemaKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry - 195, // 120: vtctldata.ValidateVersionKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry - 196, // 121: vtctldata.ValidateVSchemaResponse.results_by_shard:type_name -> vtctldata.ValidateVSchemaResponse.ResultsByShardEntry - 180, // 122: vtctldata.Workflow.ShardStreamsEntry.value:type_name -> vtctldata.Workflow.ShardStream - 181, // 123: vtctldata.Workflow.ShardStream.streams:type_name -> vtctldata.Workflow.Stream - 223, // 124: vtctldata.Workflow.ShardStream.tablet_controls:type_name -> topodata.Shard.TabletControl - 206, // 125: vtctldata.Workflow.Stream.tablet:type_name -> topodata.TabletAlias - 224, // 126: vtctldata.Workflow.Stream.binlog_source:type_name -> binlogdata.BinlogSource - 211, // 127: vtctldata.Workflow.Stream.transaction_timestamp:type_name -> vttime.Time - 211, // 128: vtctldata.Workflow.Stream.time_updated:type_name -> vttime.Time - 182, // 129: vtctldata.Workflow.Stream.copy_states:type_name -> vtctldata.Workflow.Stream.CopyState - 183, // 130: vtctldata.Workflow.Stream.logs:type_name -> vtctldata.Workflow.Stream.Log - 211, // 131: vtctldata.Workflow.Stream.Log.created_at:type_name -> vttime.Time - 211, // 132: vtctldata.Workflow.Stream.Log.updated_at:type_name -> vttime.Time + 208, // 70: vtctldata.InitShardPrimaryRequest.primary_elect_tablet_alias:type_name -> topodata.TabletAlias + 205, // 71: vtctldata.InitShardPrimaryRequest.wait_replicas_timeout:type_name -> vttime.Duration + 199, // 72: vtctldata.InitShardPrimaryResponse.events:type_name -> logutil.Event + 208, // 73: vtctldata.PingTabletRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 74: vtctldata.PlannedReparentShardRequest.new_primary:type_name -> topodata.TabletAlias + 208, // 75: vtctldata.PlannedReparentShardRequest.avoid_primary:type_name -> topodata.TabletAlias + 205, // 76: vtctldata.PlannedReparentShardRequest.wait_replicas_timeout:type_name -> vttime.Duration + 208, // 77: vtctldata.PlannedReparentShardResponse.promoted_primary:type_name -> topodata.TabletAlias + 199, // 78: vtctldata.PlannedReparentShardResponse.events:type_name -> logutil.Event + 208, // 79: vtctldata.RefreshStateRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 80: vtctldata.ReloadSchemaRequest.tablet_alias:type_name -> topodata.TabletAlias + 199, // 81: vtctldata.ReloadSchemaKeyspaceResponse.events:type_name -> logutil.Event + 199, // 82: vtctldata.ReloadSchemaShardResponse.events:type_name -> logutil.Event + 208, // 83: vtctldata.ReparentTabletRequest.tablet:type_name -> topodata.TabletAlias + 208, // 84: vtctldata.ReparentTabletResponse.primary:type_name -> topodata.TabletAlias + 208, // 85: vtctldata.RestoreFromBackupRequest.tablet_alias:type_name -> topodata.TabletAlias + 213, // 86: vtctldata.RestoreFromBackupRequest.backup_time:type_name -> vttime.Time + 208, // 87: vtctldata.RestoreFromBackupResponse.tablet_alias:type_name -> topodata.TabletAlias + 199, // 88: vtctldata.RestoreFromBackupResponse.event:type_name -> logutil.Event + 208, // 89: vtctldata.RunHealthCheckRequest.tablet_alias:type_name -> topodata.TabletAlias + 200, // 90: vtctldata.SetKeyspaceDurabilityPolicyResponse.keyspace:type_name -> topodata.Keyspace + 209, // 91: vtctldata.SetKeyspaceServedFromRequest.tablet_type:type_name -> topodata.TabletType + 200, // 92: vtctldata.SetKeyspaceServedFromResponse.keyspace:type_name -> topodata.Keyspace + 200, // 93: vtctldata.SetKeyspaceShardingInfoResponse.keyspace:type_name -> topodata.Keyspace + 201, // 94: vtctldata.SetShardIsPrimaryServingResponse.shard:type_name -> topodata.Shard + 209, // 95: vtctldata.SetShardTabletControlRequest.tablet_type:type_name -> topodata.TabletType + 201, // 96: vtctldata.SetShardTabletControlResponse.shard:type_name -> topodata.Shard + 208, // 97: vtctldata.SetWritableRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 98: vtctldata.ShardReplicationAddRequest.tablet_alias:type_name -> topodata.TabletAlias + 222, // 99: vtctldata.ShardReplicationFixResponse.error:type_name -> topodata.ShardReplicationError + 192, // 100: vtctldata.ShardReplicationPositionsResponse.replication_statuses:type_name -> vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry + 193, // 101: vtctldata.ShardReplicationPositionsResponse.tablet_map:type_name -> vtctldata.ShardReplicationPositionsResponse.TabletMapEntry + 208, // 102: vtctldata.ShardReplicationRemoveRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 103: vtctldata.SleepTabletRequest.tablet_alias:type_name -> topodata.TabletAlias + 205, // 104: vtctldata.SleepTabletRequest.duration:type_name -> vttime.Duration + 223, // 105: vtctldata.SourceShardAddRequest.key_range:type_name -> topodata.KeyRange + 201, // 106: vtctldata.SourceShardAddResponse.shard:type_name -> topodata.Shard + 201, // 107: vtctldata.SourceShardDeleteResponse.shard:type_name -> topodata.Shard + 208, // 108: vtctldata.StartReplicationRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 109: vtctldata.StopReplicationRequest.tablet_alias:type_name -> topodata.TabletAlias + 208, // 110: vtctldata.TabletExternallyReparentedRequest.tablet:type_name -> topodata.TabletAlias + 208, // 111: vtctldata.TabletExternallyReparentedResponse.new_primary:type_name -> topodata.TabletAlias + 208, // 112: vtctldata.TabletExternallyReparentedResponse.old_primary:type_name -> topodata.TabletAlias + 202, // 113: vtctldata.UpdateCellInfoRequest.cell_info:type_name -> topodata.CellInfo + 202, // 114: vtctldata.UpdateCellInfoResponse.cell_info:type_name -> topodata.CellInfo + 224, // 115: vtctldata.UpdateCellsAliasRequest.cells_alias:type_name -> topodata.CellsAlias + 224, // 116: vtctldata.UpdateCellsAliasResponse.cells_alias:type_name -> topodata.CellsAlias + 194, // 117: vtctldata.ValidateResponse.results_by_keyspace:type_name -> vtctldata.ValidateResponse.ResultsByKeyspaceEntry + 195, // 118: vtctldata.ValidateKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry + 196, // 119: vtctldata.ValidateSchemaKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry + 197, // 120: vtctldata.ValidateVersionKeyspaceResponse.results_by_shard:type_name -> vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry + 198, // 121: vtctldata.ValidateVSchemaResponse.results_by_shard:type_name -> vtctldata.ValidateVSchemaResponse.ResultsByShardEntry + 182, // 122: vtctldata.Workflow.ShardStreamsEntry.value:type_name -> vtctldata.Workflow.ShardStream + 183, // 123: vtctldata.Workflow.ShardStream.streams:type_name -> vtctldata.Workflow.Stream + 225, // 124: vtctldata.Workflow.ShardStream.tablet_controls:type_name -> topodata.Shard.TabletControl + 208, // 125: vtctldata.Workflow.Stream.tablet:type_name -> topodata.TabletAlias + 226, // 126: vtctldata.Workflow.Stream.binlog_source:type_name -> binlogdata.BinlogSource + 213, // 127: vtctldata.Workflow.Stream.transaction_timestamp:type_name -> vttime.Time + 213, // 128: vtctldata.Workflow.Stream.time_updated:type_name -> vttime.Time + 184, // 129: vtctldata.Workflow.Stream.copy_states:type_name -> vtctldata.Workflow.Stream.CopyState + 185, // 130: vtctldata.Workflow.Stream.logs:type_name -> vtctldata.Workflow.Stream.Log + 213, // 131: vtctldata.Workflow.Stream.Log.created_at:type_name -> vttime.Time + 213, // 132: vtctldata.Workflow.Stream.Log.updated_at:type_name -> vttime.Time 6, // 133: vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry.value:type_name -> vtctldata.Shard - 222, // 134: vtctldata.GetCellsAliasesResponse.AliasesEntry.value:type_name -> topodata.CellsAlias - 187, // 135: vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry.value:type_name -> vtctldata.GetSrvKeyspaceNamesResponse.NameList - 225, // 136: vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry.value:type_name -> topodata.SrvKeyspace - 219, // 137: vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry.value:type_name -> vschema.SrvVSchema - 226, // 138: vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry.value:type_name -> replicationdata.Status - 208, // 139: vtctldata.ShardReplicationPositionsResponse.TabletMapEntry.value:type_name -> topodata.Tablet - 167, // 140: vtctldata.ValidateResponse.ResultsByKeyspaceEntry.value:type_name -> vtctldata.ValidateKeyspaceResponse - 171, // 141: vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse - 171, // 142: vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse - 171, // 143: vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse - 171, // 144: vtctldata.ValidateVSchemaResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse + 224, // 134: vtctldata.GetCellsAliasesResponse.AliasesEntry.value:type_name -> topodata.CellsAlias + 189, // 135: vtctldata.GetSrvKeyspaceNamesResponse.NamesEntry.value:type_name -> vtctldata.GetSrvKeyspaceNamesResponse.NameList + 227, // 136: vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry.value:type_name -> topodata.SrvKeyspace + 221, // 137: vtctldata.GetSrvVSchemasResponse.SrvVSchemasEntry.value:type_name -> vschema.SrvVSchema + 228, // 138: vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry.value:type_name -> replicationdata.Status + 210, // 139: vtctldata.ShardReplicationPositionsResponse.TabletMapEntry.value:type_name -> topodata.Tablet + 169, // 140: vtctldata.ValidateResponse.ResultsByKeyspaceEntry.value:type_name -> vtctldata.ValidateKeyspaceResponse + 173, // 141: vtctldata.ValidateKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse + 173, // 142: vtctldata.ValidateSchemaKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse + 173, // 143: vtctldata.ValidateVersionKeyspaceResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse + 173, // 144: vtctldata.ValidateVSchemaResponse.ResultsByShardEntry.value:type_name -> vtctldata.ValidateShardResponse 145, // [145:145] is the sub-list for method output_type 145, // [145:145] is the sub-list for method input_type 145, // [145:145] is the sub-list for extension type_name @@ -13180,7 +13331,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSrvVSchemaRequest); i { + switch v := v.(*UpdateThrottlerConfigRequest); i { case 0: return &v.state case 1: @@ -13192,7 +13343,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSrvVSchemaResponse); i { + switch v := v.(*UpdateThrottlerConfigResponse); i { case 0: return &v.state case 1: @@ -13204,7 +13355,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSrvVSchemasRequest); i { + switch v := v.(*GetSrvVSchemaRequest); i { case 0: return &v.state case 1: @@ -13216,7 +13367,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSrvVSchemasResponse); i { + switch v := v.(*GetSrvVSchemaResponse); i { case 0: return &v.state case 1: @@ -13228,7 +13379,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTabletRequest); i { + switch v := v.(*GetSrvVSchemasRequest); i { case 0: return &v.state case 1: @@ -13240,7 +13391,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTabletResponse); i { + switch v := v.(*GetSrvVSchemasResponse); i { case 0: return &v.state case 1: @@ -13252,7 +13403,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTabletsRequest); i { + switch v := v.(*GetTabletRequest); i { case 0: return &v.state case 1: @@ -13264,7 +13415,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTabletsResponse); i { + switch v := v.(*GetTabletResponse); i { case 0: return &v.state case 1: @@ -13276,7 +13427,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTopologyPathRequest); i { + switch v := v.(*GetTabletsRequest); i { case 0: return &v.state case 1: @@ -13288,7 +13439,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTopologyPathResponse); i { + switch v := v.(*GetTabletsResponse); i { case 0: return &v.state case 1: @@ -13300,7 +13451,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyCell); i { + switch v := v.(*GetTopologyPathRequest); i { case 0: return &v.state case 1: @@ -13312,7 +13463,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVSchemaRequest); i { + switch v := v.(*GetTopologyPathResponse); i { case 0: return &v.state case 1: @@ -13324,7 +13475,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVersionRequest); i { + switch v := v.(*TopologyCell); i { case 0: return &v.state case 1: @@ -13336,7 +13487,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVersionResponse); i { + switch v := v.(*GetVSchemaRequest); i { case 0: return &v.state case 1: @@ -13348,7 +13499,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVSchemaResponse); i { + switch v := v.(*GetVersionRequest); i { case 0: return &v.state case 1: @@ -13360,7 +13511,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkflowsRequest); i { + switch v := v.(*GetVersionResponse); i { case 0: return &v.state case 1: @@ -13372,7 +13523,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkflowsResponse); i { + switch v := v.(*GetVSchemaResponse); i { case 0: return &v.state case 1: @@ -13384,7 +13535,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitShardPrimaryRequest); i { + switch v := v.(*GetWorkflowsRequest); i { case 0: return &v.state case 1: @@ -13396,7 +13547,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitShardPrimaryResponse); i { + switch v := v.(*GetWorkflowsResponse); i { case 0: return &v.state case 1: @@ -13408,7 +13559,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PingTabletRequest); i { + switch v := v.(*InitShardPrimaryRequest); i { case 0: return &v.state case 1: @@ -13420,7 +13571,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PingTabletResponse); i { + switch v := v.(*InitShardPrimaryResponse); i { case 0: return &v.state case 1: @@ -13432,7 +13583,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlannedReparentShardRequest); i { + switch v := v.(*PingTabletRequest); i { case 0: return &v.state case 1: @@ -13444,7 +13595,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlannedReparentShardResponse); i { + switch v := v.(*PingTabletResponse); i { case 0: return &v.state case 1: @@ -13456,7 +13607,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebuildKeyspaceGraphRequest); i { + switch v := v.(*PlannedReparentShardRequest); i { case 0: return &v.state case 1: @@ -13468,7 +13619,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebuildKeyspaceGraphResponse); i { + switch v := v.(*PlannedReparentShardResponse); i { case 0: return &v.state case 1: @@ -13480,7 +13631,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebuildVSchemaGraphRequest); i { + switch v := v.(*RebuildKeyspaceGraphRequest); i { case 0: return &v.state case 1: @@ -13492,7 +13643,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebuildVSchemaGraphResponse); i { + switch v := v.(*RebuildKeyspaceGraphResponse); i { case 0: return &v.state case 1: @@ -13504,7 +13655,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshStateRequest); i { + switch v := v.(*RebuildVSchemaGraphRequest); i { case 0: return &v.state case 1: @@ -13516,7 +13667,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshStateResponse); i { + switch v := v.(*RebuildVSchemaGraphResponse); i { case 0: return &v.state case 1: @@ -13528,7 +13679,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshStateByShardRequest); i { + switch v := v.(*RefreshStateRequest); i { case 0: return &v.state case 1: @@ -13540,7 +13691,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshStateByShardResponse); i { + switch v := v.(*RefreshStateResponse); i { case 0: return &v.state case 1: @@ -13552,7 +13703,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaRequest); i { + switch v := v.(*RefreshStateByShardRequest); i { case 0: return &v.state case 1: @@ -13564,7 +13715,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaResponse); i { + switch v := v.(*RefreshStateByShardResponse); i { case 0: return &v.state case 1: @@ -13576,7 +13727,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaKeyspaceRequest); i { + switch v := v.(*ReloadSchemaRequest); i { case 0: return &v.state case 1: @@ -13588,7 +13739,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaKeyspaceResponse); i { + switch v := v.(*ReloadSchemaResponse); i { case 0: return &v.state case 1: @@ -13600,7 +13751,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaShardRequest); i { + switch v := v.(*ReloadSchemaKeyspaceRequest); i { case 0: return &v.state case 1: @@ -13612,7 +13763,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReloadSchemaShardResponse); i { + switch v := v.(*ReloadSchemaKeyspaceResponse); i { case 0: return &v.state case 1: @@ -13624,7 +13775,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveBackupRequest); i { + switch v := v.(*ReloadSchemaShardRequest); i { case 0: return &v.state case 1: @@ -13636,7 +13787,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveBackupResponse); i { + switch v := v.(*ReloadSchemaShardResponse); i { case 0: return &v.state case 1: @@ -13648,7 +13799,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyspaceCellRequest); i { + switch v := v.(*RemoveBackupRequest); i { case 0: return &v.state case 1: @@ -13660,7 +13811,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveKeyspaceCellResponse); i { + switch v := v.(*RemoveBackupResponse); i { case 0: return &v.state case 1: @@ -13672,7 +13823,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveShardCellRequest); i { + switch v := v.(*RemoveKeyspaceCellRequest); i { case 0: return &v.state case 1: @@ -13684,7 +13835,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveShardCellResponse); i { + switch v := v.(*RemoveKeyspaceCellResponse); i { case 0: return &v.state case 1: @@ -13696,7 +13847,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReparentTabletRequest); i { + switch v := v.(*RemoveShardCellRequest); i { case 0: return &v.state case 1: @@ -13708,7 +13859,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReparentTabletResponse); i { + switch v := v.(*RemoveShardCellResponse); i { case 0: return &v.state case 1: @@ -13720,7 +13871,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreFromBackupRequest); i { + switch v := v.(*ReparentTabletRequest); i { case 0: return &v.state case 1: @@ -13732,7 +13883,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreFromBackupResponse); i { + switch v := v.(*ReparentTabletResponse); i { case 0: return &v.state case 1: @@ -13744,7 +13895,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunHealthCheckRequest); i { + switch v := v.(*RestoreFromBackupRequest); i { case 0: return &v.state case 1: @@ -13756,7 +13907,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunHealthCheckResponse); i { + switch v := v.(*RestoreFromBackupResponse); i { case 0: return &v.state case 1: @@ -13768,7 +13919,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceDurabilityPolicyRequest); i { + switch v := v.(*RunHealthCheckRequest); i { case 0: return &v.state case 1: @@ -13780,7 +13931,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceDurabilityPolicyResponse); i { + switch v := v.(*RunHealthCheckResponse); i { case 0: return &v.state case 1: @@ -13792,7 +13943,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceServedFromRequest); i { + switch v := v.(*SetKeyspaceDurabilityPolicyRequest); i { case 0: return &v.state case 1: @@ -13804,7 +13955,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceServedFromResponse); i { + switch v := v.(*SetKeyspaceDurabilityPolicyResponse); i { case 0: return &v.state case 1: @@ -13816,7 +13967,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceShardingInfoRequest); i { + switch v := v.(*SetKeyspaceServedFromRequest); i { case 0: return &v.state case 1: @@ -13828,7 +13979,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetKeyspaceShardingInfoResponse); i { + switch v := v.(*SetKeyspaceServedFromResponse); i { case 0: return &v.state case 1: @@ -13840,7 +13991,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardIsPrimaryServingRequest); i { + switch v := v.(*SetKeyspaceShardingInfoRequest); i { case 0: return &v.state case 1: @@ -13852,7 +14003,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardIsPrimaryServingResponse); i { + switch v := v.(*SetKeyspaceShardingInfoResponse); i { case 0: return &v.state case 1: @@ -13864,7 +14015,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardTabletControlRequest); i { + switch v := v.(*SetShardIsPrimaryServingRequest); i { case 0: return &v.state case 1: @@ -13876,7 +14027,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardTabletControlResponse); i { + switch v := v.(*SetShardIsPrimaryServingResponse); i { case 0: return &v.state case 1: @@ -13888,7 +14039,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetWritableRequest); i { + switch v := v.(*SetShardTabletControlRequest); i { case 0: return &v.state case 1: @@ -13900,7 +14051,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetWritableResponse); i { + switch v := v.(*SetShardTabletControlResponse); i { case 0: return &v.state case 1: @@ -13912,7 +14063,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationAddRequest); i { + switch v := v.(*SetWritableRequest); i { case 0: return &v.state case 1: @@ -13924,7 +14075,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationAddResponse); i { + switch v := v.(*SetWritableResponse); i { case 0: return &v.state case 1: @@ -13936,7 +14087,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationFixRequest); i { + switch v := v.(*ShardReplicationAddRequest); i { case 0: return &v.state case 1: @@ -13948,7 +14099,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationFixResponse); i { + switch v := v.(*ShardReplicationAddResponse); i { case 0: return &v.state case 1: @@ -13960,7 +14111,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationPositionsRequest); i { + switch v := v.(*ShardReplicationFixRequest); i { case 0: return &v.state case 1: @@ -13972,7 +14123,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationPositionsResponse); i { + switch v := v.(*ShardReplicationFixResponse); i { case 0: return &v.state case 1: @@ -13984,7 +14135,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationRemoveRequest); i { + switch v := v.(*ShardReplicationPositionsRequest); i { case 0: return &v.state case 1: @@ -13996,7 +14147,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardReplicationRemoveResponse); i { + switch v := v.(*ShardReplicationPositionsResponse); i { case 0: return &v.state case 1: @@ -14008,7 +14159,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SleepTabletRequest); i { + switch v := v.(*ShardReplicationRemoveRequest); i { case 0: return &v.state case 1: @@ -14020,7 +14171,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SleepTabletResponse); i { + switch v := v.(*ShardReplicationRemoveResponse); i { case 0: return &v.state case 1: @@ -14032,7 +14183,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceShardAddRequest); i { + switch v := v.(*SleepTabletRequest); i { case 0: return &v.state case 1: @@ -14044,7 +14195,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceShardAddResponse); i { + switch v := v.(*SleepTabletResponse); i { case 0: return &v.state case 1: @@ -14056,7 +14207,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceShardDeleteRequest); i { + switch v := v.(*SourceShardAddRequest); i { case 0: return &v.state case 1: @@ -14068,7 +14219,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceShardDeleteResponse); i { + switch v := v.(*SourceShardAddResponse); i { case 0: return &v.state case 1: @@ -14080,7 +14231,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartReplicationRequest); i { + switch v := v.(*SourceShardDeleteRequest); i { case 0: return &v.state case 1: @@ -14092,7 +14243,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartReplicationResponse); i { + switch v := v.(*SourceShardDeleteResponse); i { case 0: return &v.state case 1: @@ -14104,7 +14255,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopReplicationRequest); i { + switch v := v.(*StartReplicationRequest); i { case 0: return &v.state case 1: @@ -14116,7 +14267,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopReplicationResponse); i { + switch v := v.(*StartReplicationResponse); i { case 0: return &v.state case 1: @@ -14128,7 +14279,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TabletExternallyReparentedRequest); i { + switch v := v.(*StopReplicationRequest); i { case 0: return &v.state case 1: @@ -14140,7 +14291,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TabletExternallyReparentedResponse); i { + switch v := v.(*StopReplicationResponse); i { case 0: return &v.state case 1: @@ -14152,7 +14303,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCellInfoRequest); i { + switch v := v.(*TabletExternallyReparentedRequest); i { case 0: return &v.state case 1: @@ -14164,7 +14315,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCellInfoResponse); i { + switch v := v.(*TabletExternallyReparentedResponse); i { case 0: return &v.state case 1: @@ -14176,7 +14327,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCellsAliasRequest); i { + switch v := v.(*UpdateCellInfoRequest); i { case 0: return &v.state case 1: @@ -14188,7 +14339,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCellsAliasResponse); i { + switch v := v.(*UpdateCellInfoResponse); i { case 0: return &v.state case 1: @@ -14200,7 +14351,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateRequest); i { + switch v := v.(*UpdateCellsAliasRequest); i { case 0: return &v.state case 1: @@ -14212,7 +14363,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateResponse); i { + switch v := v.(*UpdateCellsAliasResponse); i { case 0: return &v.state case 1: @@ -14224,7 +14375,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateKeyspaceRequest); i { + switch v := v.(*ValidateRequest); i { case 0: return &v.state case 1: @@ -14236,7 +14387,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateKeyspaceResponse); i { + switch v := v.(*ValidateResponse); i { case 0: return &v.state case 1: @@ -14248,7 +14399,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateSchemaKeyspaceRequest); i { + switch v := v.(*ValidateKeyspaceRequest); i { case 0: return &v.state case 1: @@ -14260,7 +14411,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateSchemaKeyspaceResponse); i { + switch v := v.(*ValidateKeyspaceResponse); i { case 0: return &v.state case 1: @@ -14272,7 +14423,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateShardRequest); i { + switch v := v.(*ValidateSchemaKeyspaceRequest); i { case 0: return &v.state case 1: @@ -14284,7 +14435,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateShardResponse); i { + switch v := v.(*ValidateSchemaKeyspaceResponse); i { case 0: return &v.state case 1: @@ -14296,7 +14447,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVersionKeyspaceRequest); i { + switch v := v.(*ValidateShardRequest); i { case 0: return &v.state case 1: @@ -14308,7 +14459,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVersionKeyspaceResponse); i { + switch v := v.(*ValidateShardResponse); i { case 0: return &v.state case 1: @@ -14320,7 +14471,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVersionShardRequest); i { + switch v := v.(*ValidateVersionKeyspaceRequest); i { case 0: return &v.state case 1: @@ -14332,7 +14483,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVersionShardResponse); i { + switch v := v.(*ValidateVersionKeyspaceResponse); i { case 0: return &v.state case 1: @@ -14344,7 +14495,7 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVSchemaRequest); i { + switch v := v.(*ValidateVersionShardRequest); i { case 0: return &v.state case 1: @@ -14356,7 +14507,19 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVSchemaResponse); i { + switch v := v.(*ValidateVersionShardResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vtctldata_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateVSchemaRequest); i { case 0: return &v.state case 1: @@ -14368,6 +14531,18 @@ func file_vtctldata_proto_init() { } } file_vtctldata_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateVSchemaResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vtctldata_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workflow_ReplicationLocation); i { case 0: return &v.state @@ -14379,7 +14554,7 @@ func file_vtctldata_proto_init() { return nil } } - file_vtctldata_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_vtctldata_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workflow_ShardStream); i { case 0: return &v.state @@ -14391,7 +14566,7 @@ func file_vtctldata_proto_init() { return nil } } - file_vtctldata_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_vtctldata_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workflow_Stream); i { case 0: return &v.state @@ -14403,7 +14578,7 @@ func file_vtctldata_proto_init() { return nil } } - file_vtctldata_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + file_vtctldata_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workflow_Stream_CopyState); i { case 0: return &v.state @@ -14415,7 +14590,7 @@ func file_vtctldata_proto_init() { return nil } } - file_vtctldata_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + file_vtctldata_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workflow_Stream_Log); i { case 0: return &v.state @@ -14427,7 +14602,7 @@ func file_vtctldata_proto_init() { return nil } } - file_vtctldata_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + file_vtctldata_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSrvKeyspaceNamesResponse_NameList); i { case 0: return &v.state @@ -14446,7 +14621,7 @@ func file_vtctldata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_vtctldata_proto_rawDesc, NumEnums: 1, - NumMessages: 196, + NumMessages: 198, NumExtensions: 0, NumServices: 0, }, diff --git a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go index 929b09d1c3e..ac5247e449e 100644 --- a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go +++ b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go @@ -5,9 +5,11 @@ package vtctldata import ( + binary "encoding/binary" fmt "fmt" protoimpl "google.golang.org/protobuf/runtime/protoimpl" io "io" + math "math" bits "math/bits" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" logutil "vitess.io/vitess/go/vt/proto/logutil" @@ -4536,6 +4538,125 @@ func (m *GetSrvKeyspacesResponse) MarshalToSizedBufferVT(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *UpdateThrottlerConfigRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateThrottlerConfigRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.CheckAsCheckShard { + i-- + if m.CheckAsCheckShard { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.CheckAsCheckSelf { + i-- + if m.CheckAsCheckSelf { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.CustomQuery) > 0 { + i -= len(m.CustomQuery) + copy(dAtA[i:], m.CustomQuery) + i = encodeVarint(dAtA, i, uint64(len(m.CustomQuery))) + i-- + dAtA[i] = 0x22 + } + if m.Threshold != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Threshold)))) + i-- + dAtA[i] = 0x19 + } + if m.Disable { + i-- + if m.Disable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.Enable { + i-- + if m.Enable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *UpdateThrottlerConfigResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateThrottlerConfigResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *UpdateThrottlerConfigResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + return len(dAtA) - i, nil +} + func (m *GetSrvVSchemaRequest) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -11339,6 +11460,49 @@ func (m *GetSrvKeyspacesResponse) SizeVT() (n int) { return n } +func (m *UpdateThrottlerConfigRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Enable { + n += 2 + } + if m.Disable { + n += 2 + } + if m.Threshold != 0 { + n += 9 + } + l = len(m.CustomQuery) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.CheckAsCheckSelf { + n += 2 + } + if m.CheckAsCheckShard { + n += 2 + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *UpdateThrottlerConfigResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + func (m *GetSrvVSchemaRequest) SizeVT() (n int) { if m == nil { return 0 @@ -23946,6 +24110,231 @@ func (m *GetSrvKeyspacesResponse) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateThrottlerConfigRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateThrottlerConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enable = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Disable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Disable = bool(v != 0) + case 3: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Threshold", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Threshold = float64(math.Float64frombits(v)) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomQuery", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomQuery = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckSelf", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CheckAsCheckSelf = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckShard", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CheckAsCheckShard = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateThrottlerConfigResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateThrottlerConfigResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateThrottlerConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *GetSrvVSchemaRequest) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/go/vt/proto/vtctlservice/vtctlservice.pb.go b/go/vt/proto/vtctlservice/vtctlservice.pb.go index fab6c3b40f7..1073b14cc51 100644 --- a/go/vt/proto/vtctlservice/vtctlservice.pb.go +++ b/go/vt/proto/vtctlservice/vtctlservice.pb.go @@ -51,7 +51,7 @@ var file_vtctlservice_proto_rawDesc = []byte{ 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x56, 0x74, 0x63, 0x74, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0xa3, 0x3c, 0x0a, 0x06, 0x56, 0x74, 0x63, 0x74, 0x6c, + 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0x91, 0x3d, 0x0a, 0x06, 0x56, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, @@ -252,292 +252,298 @@ var file_vtctlservice_proto_rawDesc = []byte{ 0x65, 0x74, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, - 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x76, 0x74, - 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, + 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, - 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x49, 0x6e, - 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, - 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, - 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x50, 0x69, 0x6e, - 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, - 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x69, 0x0a, 0x14, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x25, - 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x69, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x50, 0x69, 0x6e, 0x67, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x26, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x51, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, - 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, - 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x11, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x12, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x69, 0x0a, 0x14, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x52, 0x65, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x25, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, + 0x0c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1e, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x69, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x51, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, + 0x12, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, + 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1e, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x63, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x11, - 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x12, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, - 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x1b, 0x53, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, - 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x53, 0x65, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, - 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6c, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, - 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x12, 0x25, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, - 0x0a, 0x19, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x76, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x11, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x57, + 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x75, 0x6e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, + 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, + 0x0a, 0x15, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, + 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x64, 0x64, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x12, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x6c, 0x65, - 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x12, 0x20, 0x2e, 0x76, 0x74, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x12, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x6c, 0x65, 0x65, 0x70, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x12, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7b, 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x76, 0x74, + 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x60, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, + 0x1a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, + 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, - 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, + 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, + 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x76, + 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x28, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x26, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x72, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x76, 0x74, 0x63, + 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x5a, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2b, 0x5a, 0x29, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, - 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x26, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, + 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x12, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2b, 0x5a, 0x29, 0x76, 0x69, + 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, + 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_vtctlservice_proto_goTypes = []interface{}{ @@ -578,136 +584,138 @@ var file_vtctlservice_proto_goTypes = []interface{}{ (*vtctldata.GetShardRoutingRulesRequest)(nil), // 34: vtctldata.GetShardRoutingRulesRequest (*vtctldata.GetSrvKeyspaceNamesRequest)(nil), // 35: vtctldata.GetSrvKeyspaceNamesRequest (*vtctldata.GetSrvKeyspacesRequest)(nil), // 36: vtctldata.GetSrvKeyspacesRequest - (*vtctldata.GetSrvVSchemaRequest)(nil), // 37: vtctldata.GetSrvVSchemaRequest - (*vtctldata.GetSrvVSchemasRequest)(nil), // 38: vtctldata.GetSrvVSchemasRequest - (*vtctldata.GetTabletRequest)(nil), // 39: vtctldata.GetTabletRequest - (*vtctldata.GetTabletsRequest)(nil), // 40: vtctldata.GetTabletsRequest - (*vtctldata.GetTopologyPathRequest)(nil), // 41: vtctldata.GetTopologyPathRequest - (*vtctldata.GetVersionRequest)(nil), // 42: vtctldata.GetVersionRequest - (*vtctldata.GetVSchemaRequest)(nil), // 43: vtctldata.GetVSchemaRequest - (*vtctldata.GetWorkflowsRequest)(nil), // 44: vtctldata.GetWorkflowsRequest - (*vtctldata.InitShardPrimaryRequest)(nil), // 45: vtctldata.InitShardPrimaryRequest - (*vtctldata.PingTabletRequest)(nil), // 46: vtctldata.PingTabletRequest - (*vtctldata.PlannedReparentShardRequest)(nil), // 47: vtctldata.PlannedReparentShardRequest - (*vtctldata.RebuildKeyspaceGraphRequest)(nil), // 48: vtctldata.RebuildKeyspaceGraphRequest - (*vtctldata.RebuildVSchemaGraphRequest)(nil), // 49: vtctldata.RebuildVSchemaGraphRequest - (*vtctldata.RefreshStateRequest)(nil), // 50: vtctldata.RefreshStateRequest - (*vtctldata.RefreshStateByShardRequest)(nil), // 51: vtctldata.RefreshStateByShardRequest - (*vtctldata.ReloadSchemaRequest)(nil), // 52: vtctldata.ReloadSchemaRequest - (*vtctldata.ReloadSchemaKeyspaceRequest)(nil), // 53: vtctldata.ReloadSchemaKeyspaceRequest - (*vtctldata.ReloadSchemaShardRequest)(nil), // 54: vtctldata.ReloadSchemaShardRequest - (*vtctldata.RemoveBackupRequest)(nil), // 55: vtctldata.RemoveBackupRequest - (*vtctldata.RemoveKeyspaceCellRequest)(nil), // 56: vtctldata.RemoveKeyspaceCellRequest - (*vtctldata.RemoveShardCellRequest)(nil), // 57: vtctldata.RemoveShardCellRequest - (*vtctldata.ReparentTabletRequest)(nil), // 58: vtctldata.ReparentTabletRequest - (*vtctldata.RestoreFromBackupRequest)(nil), // 59: vtctldata.RestoreFromBackupRequest - (*vtctldata.RunHealthCheckRequest)(nil), // 60: vtctldata.RunHealthCheckRequest - (*vtctldata.SetKeyspaceDurabilityPolicyRequest)(nil), // 61: vtctldata.SetKeyspaceDurabilityPolicyRequest - (*vtctldata.SetShardIsPrimaryServingRequest)(nil), // 62: vtctldata.SetShardIsPrimaryServingRequest - (*vtctldata.SetShardTabletControlRequest)(nil), // 63: vtctldata.SetShardTabletControlRequest - (*vtctldata.SetWritableRequest)(nil), // 64: vtctldata.SetWritableRequest - (*vtctldata.ShardReplicationAddRequest)(nil), // 65: vtctldata.ShardReplicationAddRequest - (*vtctldata.ShardReplicationFixRequest)(nil), // 66: vtctldata.ShardReplicationFixRequest - (*vtctldata.ShardReplicationPositionsRequest)(nil), // 67: vtctldata.ShardReplicationPositionsRequest - (*vtctldata.ShardReplicationRemoveRequest)(nil), // 68: vtctldata.ShardReplicationRemoveRequest - (*vtctldata.SleepTabletRequest)(nil), // 69: vtctldata.SleepTabletRequest - (*vtctldata.SourceShardAddRequest)(nil), // 70: vtctldata.SourceShardAddRequest - (*vtctldata.SourceShardDeleteRequest)(nil), // 71: vtctldata.SourceShardDeleteRequest - (*vtctldata.StartReplicationRequest)(nil), // 72: vtctldata.StartReplicationRequest - (*vtctldata.StopReplicationRequest)(nil), // 73: vtctldata.StopReplicationRequest - (*vtctldata.TabletExternallyReparentedRequest)(nil), // 74: vtctldata.TabletExternallyReparentedRequest - (*vtctldata.UpdateCellInfoRequest)(nil), // 75: vtctldata.UpdateCellInfoRequest - (*vtctldata.UpdateCellsAliasRequest)(nil), // 76: vtctldata.UpdateCellsAliasRequest - (*vtctldata.ValidateRequest)(nil), // 77: vtctldata.ValidateRequest - (*vtctldata.ValidateKeyspaceRequest)(nil), // 78: vtctldata.ValidateKeyspaceRequest - (*vtctldata.ValidateSchemaKeyspaceRequest)(nil), // 79: vtctldata.ValidateSchemaKeyspaceRequest - (*vtctldata.ValidateShardRequest)(nil), // 80: vtctldata.ValidateShardRequest - (*vtctldata.ValidateVersionKeyspaceRequest)(nil), // 81: vtctldata.ValidateVersionKeyspaceRequest - (*vtctldata.ValidateVersionShardRequest)(nil), // 82: vtctldata.ValidateVersionShardRequest - (*vtctldata.ValidateVSchemaRequest)(nil), // 83: vtctldata.ValidateVSchemaRequest - (*vtctldata.ExecuteVtctlCommandResponse)(nil), // 84: vtctldata.ExecuteVtctlCommandResponse - (*vtctldata.AddCellInfoResponse)(nil), // 85: vtctldata.AddCellInfoResponse - (*vtctldata.AddCellsAliasResponse)(nil), // 86: vtctldata.AddCellsAliasResponse - (*vtctldata.ApplyRoutingRulesResponse)(nil), // 87: vtctldata.ApplyRoutingRulesResponse - (*vtctldata.ApplySchemaResponse)(nil), // 88: vtctldata.ApplySchemaResponse - (*vtctldata.ApplyShardRoutingRulesResponse)(nil), // 89: vtctldata.ApplyShardRoutingRulesResponse - (*vtctldata.ApplyVSchemaResponse)(nil), // 90: vtctldata.ApplyVSchemaResponse - (*vtctldata.BackupResponse)(nil), // 91: vtctldata.BackupResponse - (*vtctldata.ChangeTabletTypeResponse)(nil), // 92: vtctldata.ChangeTabletTypeResponse - (*vtctldata.CreateKeyspaceResponse)(nil), // 93: vtctldata.CreateKeyspaceResponse - (*vtctldata.CreateShardResponse)(nil), // 94: vtctldata.CreateShardResponse - (*vtctldata.DeleteCellInfoResponse)(nil), // 95: vtctldata.DeleteCellInfoResponse - (*vtctldata.DeleteCellsAliasResponse)(nil), // 96: vtctldata.DeleteCellsAliasResponse - (*vtctldata.DeleteKeyspaceResponse)(nil), // 97: vtctldata.DeleteKeyspaceResponse - (*vtctldata.DeleteShardsResponse)(nil), // 98: vtctldata.DeleteShardsResponse - (*vtctldata.DeleteSrvVSchemaResponse)(nil), // 99: vtctldata.DeleteSrvVSchemaResponse - (*vtctldata.DeleteTabletsResponse)(nil), // 100: vtctldata.DeleteTabletsResponse - (*vtctldata.EmergencyReparentShardResponse)(nil), // 101: vtctldata.EmergencyReparentShardResponse - (*vtctldata.ExecuteFetchAsAppResponse)(nil), // 102: vtctldata.ExecuteFetchAsAppResponse - (*vtctldata.ExecuteFetchAsDBAResponse)(nil), // 103: vtctldata.ExecuteFetchAsDBAResponse - (*vtctldata.ExecuteHookResponse)(nil), // 104: vtctldata.ExecuteHookResponse - (*vtctldata.FindAllShardsInKeyspaceResponse)(nil), // 105: vtctldata.FindAllShardsInKeyspaceResponse - (*vtctldata.GetBackupsResponse)(nil), // 106: vtctldata.GetBackupsResponse - (*vtctldata.GetCellInfoResponse)(nil), // 107: vtctldata.GetCellInfoResponse - (*vtctldata.GetCellInfoNamesResponse)(nil), // 108: vtctldata.GetCellInfoNamesResponse - (*vtctldata.GetCellsAliasesResponse)(nil), // 109: vtctldata.GetCellsAliasesResponse - (*vtctldata.GetFullStatusResponse)(nil), // 110: vtctldata.GetFullStatusResponse - (*vtctldata.GetKeyspaceResponse)(nil), // 111: vtctldata.GetKeyspaceResponse - (*vtctldata.GetKeyspacesResponse)(nil), // 112: vtctldata.GetKeyspacesResponse - (*vtctldata.GetPermissionsResponse)(nil), // 113: vtctldata.GetPermissionsResponse - (*vtctldata.GetRoutingRulesResponse)(nil), // 114: vtctldata.GetRoutingRulesResponse - (*vtctldata.GetSchemaResponse)(nil), // 115: vtctldata.GetSchemaResponse - (*vtctldata.GetShardResponse)(nil), // 116: vtctldata.GetShardResponse - (*vtctldata.GetShardRoutingRulesResponse)(nil), // 117: vtctldata.GetShardRoutingRulesResponse - (*vtctldata.GetSrvKeyspaceNamesResponse)(nil), // 118: vtctldata.GetSrvKeyspaceNamesResponse - (*vtctldata.GetSrvKeyspacesResponse)(nil), // 119: vtctldata.GetSrvKeyspacesResponse - (*vtctldata.GetSrvVSchemaResponse)(nil), // 120: vtctldata.GetSrvVSchemaResponse - (*vtctldata.GetSrvVSchemasResponse)(nil), // 121: vtctldata.GetSrvVSchemasResponse - (*vtctldata.GetTabletResponse)(nil), // 122: vtctldata.GetTabletResponse - (*vtctldata.GetTabletsResponse)(nil), // 123: vtctldata.GetTabletsResponse - (*vtctldata.GetTopologyPathResponse)(nil), // 124: vtctldata.GetTopologyPathResponse - (*vtctldata.GetVersionResponse)(nil), // 125: vtctldata.GetVersionResponse - (*vtctldata.GetVSchemaResponse)(nil), // 126: vtctldata.GetVSchemaResponse - (*vtctldata.GetWorkflowsResponse)(nil), // 127: vtctldata.GetWorkflowsResponse - (*vtctldata.InitShardPrimaryResponse)(nil), // 128: vtctldata.InitShardPrimaryResponse - (*vtctldata.PingTabletResponse)(nil), // 129: vtctldata.PingTabletResponse - (*vtctldata.PlannedReparentShardResponse)(nil), // 130: vtctldata.PlannedReparentShardResponse - (*vtctldata.RebuildKeyspaceGraphResponse)(nil), // 131: vtctldata.RebuildKeyspaceGraphResponse - (*vtctldata.RebuildVSchemaGraphResponse)(nil), // 132: vtctldata.RebuildVSchemaGraphResponse - (*vtctldata.RefreshStateResponse)(nil), // 133: vtctldata.RefreshStateResponse - (*vtctldata.RefreshStateByShardResponse)(nil), // 134: vtctldata.RefreshStateByShardResponse - (*vtctldata.ReloadSchemaResponse)(nil), // 135: vtctldata.ReloadSchemaResponse - (*vtctldata.ReloadSchemaKeyspaceResponse)(nil), // 136: vtctldata.ReloadSchemaKeyspaceResponse - (*vtctldata.ReloadSchemaShardResponse)(nil), // 137: vtctldata.ReloadSchemaShardResponse - (*vtctldata.RemoveBackupResponse)(nil), // 138: vtctldata.RemoveBackupResponse - (*vtctldata.RemoveKeyspaceCellResponse)(nil), // 139: vtctldata.RemoveKeyspaceCellResponse - (*vtctldata.RemoveShardCellResponse)(nil), // 140: vtctldata.RemoveShardCellResponse - (*vtctldata.ReparentTabletResponse)(nil), // 141: vtctldata.ReparentTabletResponse - (*vtctldata.RestoreFromBackupResponse)(nil), // 142: vtctldata.RestoreFromBackupResponse - (*vtctldata.RunHealthCheckResponse)(nil), // 143: vtctldata.RunHealthCheckResponse - (*vtctldata.SetKeyspaceDurabilityPolicyResponse)(nil), // 144: vtctldata.SetKeyspaceDurabilityPolicyResponse - (*vtctldata.SetShardIsPrimaryServingResponse)(nil), // 145: vtctldata.SetShardIsPrimaryServingResponse - (*vtctldata.SetShardTabletControlResponse)(nil), // 146: vtctldata.SetShardTabletControlResponse - (*vtctldata.SetWritableResponse)(nil), // 147: vtctldata.SetWritableResponse - (*vtctldata.ShardReplicationAddResponse)(nil), // 148: vtctldata.ShardReplicationAddResponse - (*vtctldata.ShardReplicationFixResponse)(nil), // 149: vtctldata.ShardReplicationFixResponse - (*vtctldata.ShardReplicationPositionsResponse)(nil), // 150: vtctldata.ShardReplicationPositionsResponse - (*vtctldata.ShardReplicationRemoveResponse)(nil), // 151: vtctldata.ShardReplicationRemoveResponse - (*vtctldata.SleepTabletResponse)(nil), // 152: vtctldata.SleepTabletResponse - (*vtctldata.SourceShardAddResponse)(nil), // 153: vtctldata.SourceShardAddResponse - (*vtctldata.SourceShardDeleteResponse)(nil), // 154: vtctldata.SourceShardDeleteResponse - (*vtctldata.StartReplicationResponse)(nil), // 155: vtctldata.StartReplicationResponse - (*vtctldata.StopReplicationResponse)(nil), // 156: vtctldata.StopReplicationResponse - (*vtctldata.TabletExternallyReparentedResponse)(nil), // 157: vtctldata.TabletExternallyReparentedResponse - (*vtctldata.UpdateCellInfoResponse)(nil), // 158: vtctldata.UpdateCellInfoResponse - (*vtctldata.UpdateCellsAliasResponse)(nil), // 159: vtctldata.UpdateCellsAliasResponse - (*vtctldata.ValidateResponse)(nil), // 160: vtctldata.ValidateResponse - (*vtctldata.ValidateKeyspaceResponse)(nil), // 161: vtctldata.ValidateKeyspaceResponse - (*vtctldata.ValidateSchemaKeyspaceResponse)(nil), // 162: vtctldata.ValidateSchemaKeyspaceResponse - (*vtctldata.ValidateShardResponse)(nil), // 163: vtctldata.ValidateShardResponse - (*vtctldata.ValidateVersionKeyspaceResponse)(nil), // 164: vtctldata.ValidateVersionKeyspaceResponse - (*vtctldata.ValidateVersionShardResponse)(nil), // 165: vtctldata.ValidateVersionShardResponse - (*vtctldata.ValidateVSchemaResponse)(nil), // 166: vtctldata.ValidateVSchemaResponse + (*vtctldata.UpdateThrottlerConfigRequest)(nil), // 37: vtctldata.UpdateThrottlerConfigRequest + (*vtctldata.GetSrvVSchemaRequest)(nil), // 38: vtctldata.GetSrvVSchemaRequest + (*vtctldata.GetSrvVSchemasRequest)(nil), // 39: vtctldata.GetSrvVSchemasRequest + (*vtctldata.GetTabletRequest)(nil), // 40: vtctldata.GetTabletRequest + (*vtctldata.GetTabletsRequest)(nil), // 41: vtctldata.GetTabletsRequest + (*vtctldata.GetTopologyPathRequest)(nil), // 42: vtctldata.GetTopologyPathRequest + (*vtctldata.GetVersionRequest)(nil), // 43: vtctldata.GetVersionRequest + (*vtctldata.GetVSchemaRequest)(nil), // 44: vtctldata.GetVSchemaRequest + (*vtctldata.GetWorkflowsRequest)(nil), // 45: vtctldata.GetWorkflowsRequest + (*vtctldata.InitShardPrimaryRequest)(nil), // 46: vtctldata.InitShardPrimaryRequest + (*vtctldata.PingTabletRequest)(nil), // 47: vtctldata.PingTabletRequest + (*vtctldata.PlannedReparentShardRequest)(nil), // 48: vtctldata.PlannedReparentShardRequest + (*vtctldata.RebuildKeyspaceGraphRequest)(nil), // 49: vtctldata.RebuildKeyspaceGraphRequest + (*vtctldata.RebuildVSchemaGraphRequest)(nil), // 50: vtctldata.RebuildVSchemaGraphRequest + (*vtctldata.RefreshStateRequest)(nil), // 51: vtctldata.RefreshStateRequest + (*vtctldata.RefreshStateByShardRequest)(nil), // 52: vtctldata.RefreshStateByShardRequest + (*vtctldata.ReloadSchemaRequest)(nil), // 53: vtctldata.ReloadSchemaRequest + (*vtctldata.ReloadSchemaKeyspaceRequest)(nil), // 54: vtctldata.ReloadSchemaKeyspaceRequest + (*vtctldata.ReloadSchemaShardRequest)(nil), // 55: vtctldata.ReloadSchemaShardRequest + (*vtctldata.RemoveBackupRequest)(nil), // 56: vtctldata.RemoveBackupRequest + (*vtctldata.RemoveKeyspaceCellRequest)(nil), // 57: vtctldata.RemoveKeyspaceCellRequest + (*vtctldata.RemoveShardCellRequest)(nil), // 58: vtctldata.RemoveShardCellRequest + (*vtctldata.ReparentTabletRequest)(nil), // 59: vtctldata.ReparentTabletRequest + (*vtctldata.RestoreFromBackupRequest)(nil), // 60: vtctldata.RestoreFromBackupRequest + (*vtctldata.RunHealthCheckRequest)(nil), // 61: vtctldata.RunHealthCheckRequest + (*vtctldata.SetKeyspaceDurabilityPolicyRequest)(nil), // 62: vtctldata.SetKeyspaceDurabilityPolicyRequest + (*vtctldata.SetShardIsPrimaryServingRequest)(nil), // 63: vtctldata.SetShardIsPrimaryServingRequest + (*vtctldata.SetShardTabletControlRequest)(nil), // 64: vtctldata.SetShardTabletControlRequest + (*vtctldata.SetWritableRequest)(nil), // 65: vtctldata.SetWritableRequest + (*vtctldata.ShardReplicationAddRequest)(nil), // 66: vtctldata.ShardReplicationAddRequest + (*vtctldata.ShardReplicationFixRequest)(nil), // 67: vtctldata.ShardReplicationFixRequest + (*vtctldata.ShardReplicationPositionsRequest)(nil), // 68: vtctldata.ShardReplicationPositionsRequest + (*vtctldata.ShardReplicationRemoveRequest)(nil), // 69: vtctldata.ShardReplicationRemoveRequest + (*vtctldata.SleepTabletRequest)(nil), // 70: vtctldata.SleepTabletRequest + (*vtctldata.SourceShardAddRequest)(nil), // 71: vtctldata.SourceShardAddRequest + (*vtctldata.SourceShardDeleteRequest)(nil), // 72: vtctldata.SourceShardDeleteRequest + (*vtctldata.StartReplicationRequest)(nil), // 73: vtctldata.StartReplicationRequest + (*vtctldata.StopReplicationRequest)(nil), // 74: vtctldata.StopReplicationRequest + (*vtctldata.TabletExternallyReparentedRequest)(nil), // 75: vtctldata.TabletExternallyReparentedRequest + (*vtctldata.UpdateCellInfoRequest)(nil), // 76: vtctldata.UpdateCellInfoRequest + (*vtctldata.UpdateCellsAliasRequest)(nil), // 77: vtctldata.UpdateCellsAliasRequest + (*vtctldata.ValidateRequest)(nil), // 78: vtctldata.ValidateRequest + (*vtctldata.ValidateKeyspaceRequest)(nil), // 79: vtctldata.ValidateKeyspaceRequest + (*vtctldata.ValidateSchemaKeyspaceRequest)(nil), // 80: vtctldata.ValidateSchemaKeyspaceRequest + (*vtctldata.ValidateShardRequest)(nil), // 81: vtctldata.ValidateShardRequest + (*vtctldata.ValidateVersionKeyspaceRequest)(nil), // 82: vtctldata.ValidateVersionKeyspaceRequest + (*vtctldata.ValidateVersionShardRequest)(nil), // 83: vtctldata.ValidateVersionShardRequest + (*vtctldata.ValidateVSchemaRequest)(nil), // 84: vtctldata.ValidateVSchemaRequest + (*vtctldata.ExecuteVtctlCommandResponse)(nil), // 85: vtctldata.ExecuteVtctlCommandResponse + (*vtctldata.AddCellInfoResponse)(nil), // 86: vtctldata.AddCellInfoResponse + (*vtctldata.AddCellsAliasResponse)(nil), // 87: vtctldata.AddCellsAliasResponse + (*vtctldata.ApplyRoutingRulesResponse)(nil), // 88: vtctldata.ApplyRoutingRulesResponse + (*vtctldata.ApplySchemaResponse)(nil), // 89: vtctldata.ApplySchemaResponse + (*vtctldata.ApplyShardRoutingRulesResponse)(nil), // 90: vtctldata.ApplyShardRoutingRulesResponse + (*vtctldata.ApplyVSchemaResponse)(nil), // 91: vtctldata.ApplyVSchemaResponse + (*vtctldata.BackupResponse)(nil), // 92: vtctldata.BackupResponse + (*vtctldata.ChangeTabletTypeResponse)(nil), // 93: vtctldata.ChangeTabletTypeResponse + (*vtctldata.CreateKeyspaceResponse)(nil), // 94: vtctldata.CreateKeyspaceResponse + (*vtctldata.CreateShardResponse)(nil), // 95: vtctldata.CreateShardResponse + (*vtctldata.DeleteCellInfoResponse)(nil), // 96: vtctldata.DeleteCellInfoResponse + (*vtctldata.DeleteCellsAliasResponse)(nil), // 97: vtctldata.DeleteCellsAliasResponse + (*vtctldata.DeleteKeyspaceResponse)(nil), // 98: vtctldata.DeleteKeyspaceResponse + (*vtctldata.DeleteShardsResponse)(nil), // 99: vtctldata.DeleteShardsResponse + (*vtctldata.DeleteSrvVSchemaResponse)(nil), // 100: vtctldata.DeleteSrvVSchemaResponse + (*vtctldata.DeleteTabletsResponse)(nil), // 101: vtctldata.DeleteTabletsResponse + (*vtctldata.EmergencyReparentShardResponse)(nil), // 102: vtctldata.EmergencyReparentShardResponse + (*vtctldata.ExecuteFetchAsAppResponse)(nil), // 103: vtctldata.ExecuteFetchAsAppResponse + (*vtctldata.ExecuteFetchAsDBAResponse)(nil), // 104: vtctldata.ExecuteFetchAsDBAResponse + (*vtctldata.ExecuteHookResponse)(nil), // 105: vtctldata.ExecuteHookResponse + (*vtctldata.FindAllShardsInKeyspaceResponse)(nil), // 106: vtctldata.FindAllShardsInKeyspaceResponse + (*vtctldata.GetBackupsResponse)(nil), // 107: vtctldata.GetBackupsResponse + (*vtctldata.GetCellInfoResponse)(nil), // 108: vtctldata.GetCellInfoResponse + (*vtctldata.GetCellInfoNamesResponse)(nil), // 109: vtctldata.GetCellInfoNamesResponse + (*vtctldata.GetCellsAliasesResponse)(nil), // 110: vtctldata.GetCellsAliasesResponse + (*vtctldata.GetFullStatusResponse)(nil), // 111: vtctldata.GetFullStatusResponse + (*vtctldata.GetKeyspaceResponse)(nil), // 112: vtctldata.GetKeyspaceResponse + (*vtctldata.GetKeyspacesResponse)(nil), // 113: vtctldata.GetKeyspacesResponse + (*vtctldata.GetPermissionsResponse)(nil), // 114: vtctldata.GetPermissionsResponse + (*vtctldata.GetRoutingRulesResponse)(nil), // 115: vtctldata.GetRoutingRulesResponse + (*vtctldata.GetSchemaResponse)(nil), // 116: vtctldata.GetSchemaResponse + (*vtctldata.GetShardResponse)(nil), // 117: vtctldata.GetShardResponse + (*vtctldata.GetShardRoutingRulesResponse)(nil), // 118: vtctldata.GetShardRoutingRulesResponse + (*vtctldata.GetSrvKeyspaceNamesResponse)(nil), // 119: vtctldata.GetSrvKeyspaceNamesResponse + (*vtctldata.GetSrvKeyspacesResponse)(nil), // 120: vtctldata.GetSrvKeyspacesResponse + (*vtctldata.UpdateThrottlerConfigResponse)(nil), // 121: vtctldata.UpdateThrottlerConfigResponse + (*vtctldata.GetSrvVSchemaResponse)(nil), // 122: vtctldata.GetSrvVSchemaResponse + (*vtctldata.GetSrvVSchemasResponse)(nil), // 123: vtctldata.GetSrvVSchemasResponse + (*vtctldata.GetTabletResponse)(nil), // 124: vtctldata.GetTabletResponse + (*vtctldata.GetTabletsResponse)(nil), // 125: vtctldata.GetTabletsResponse + (*vtctldata.GetTopologyPathResponse)(nil), // 126: vtctldata.GetTopologyPathResponse + (*vtctldata.GetVersionResponse)(nil), // 127: vtctldata.GetVersionResponse + (*vtctldata.GetVSchemaResponse)(nil), // 128: vtctldata.GetVSchemaResponse + (*vtctldata.GetWorkflowsResponse)(nil), // 129: vtctldata.GetWorkflowsResponse + (*vtctldata.InitShardPrimaryResponse)(nil), // 130: vtctldata.InitShardPrimaryResponse + (*vtctldata.PingTabletResponse)(nil), // 131: vtctldata.PingTabletResponse + (*vtctldata.PlannedReparentShardResponse)(nil), // 132: vtctldata.PlannedReparentShardResponse + (*vtctldata.RebuildKeyspaceGraphResponse)(nil), // 133: vtctldata.RebuildKeyspaceGraphResponse + (*vtctldata.RebuildVSchemaGraphResponse)(nil), // 134: vtctldata.RebuildVSchemaGraphResponse + (*vtctldata.RefreshStateResponse)(nil), // 135: vtctldata.RefreshStateResponse + (*vtctldata.RefreshStateByShardResponse)(nil), // 136: vtctldata.RefreshStateByShardResponse + (*vtctldata.ReloadSchemaResponse)(nil), // 137: vtctldata.ReloadSchemaResponse + (*vtctldata.ReloadSchemaKeyspaceResponse)(nil), // 138: vtctldata.ReloadSchemaKeyspaceResponse + (*vtctldata.ReloadSchemaShardResponse)(nil), // 139: vtctldata.ReloadSchemaShardResponse + (*vtctldata.RemoveBackupResponse)(nil), // 140: vtctldata.RemoveBackupResponse + (*vtctldata.RemoveKeyspaceCellResponse)(nil), // 141: vtctldata.RemoveKeyspaceCellResponse + (*vtctldata.RemoveShardCellResponse)(nil), // 142: vtctldata.RemoveShardCellResponse + (*vtctldata.ReparentTabletResponse)(nil), // 143: vtctldata.ReparentTabletResponse + (*vtctldata.RestoreFromBackupResponse)(nil), // 144: vtctldata.RestoreFromBackupResponse + (*vtctldata.RunHealthCheckResponse)(nil), // 145: vtctldata.RunHealthCheckResponse + (*vtctldata.SetKeyspaceDurabilityPolicyResponse)(nil), // 146: vtctldata.SetKeyspaceDurabilityPolicyResponse + (*vtctldata.SetShardIsPrimaryServingResponse)(nil), // 147: vtctldata.SetShardIsPrimaryServingResponse + (*vtctldata.SetShardTabletControlResponse)(nil), // 148: vtctldata.SetShardTabletControlResponse + (*vtctldata.SetWritableResponse)(nil), // 149: vtctldata.SetWritableResponse + (*vtctldata.ShardReplicationAddResponse)(nil), // 150: vtctldata.ShardReplicationAddResponse + (*vtctldata.ShardReplicationFixResponse)(nil), // 151: vtctldata.ShardReplicationFixResponse + (*vtctldata.ShardReplicationPositionsResponse)(nil), // 152: vtctldata.ShardReplicationPositionsResponse + (*vtctldata.ShardReplicationRemoveResponse)(nil), // 153: vtctldata.ShardReplicationRemoveResponse + (*vtctldata.SleepTabletResponse)(nil), // 154: vtctldata.SleepTabletResponse + (*vtctldata.SourceShardAddResponse)(nil), // 155: vtctldata.SourceShardAddResponse + (*vtctldata.SourceShardDeleteResponse)(nil), // 156: vtctldata.SourceShardDeleteResponse + (*vtctldata.StartReplicationResponse)(nil), // 157: vtctldata.StartReplicationResponse + (*vtctldata.StopReplicationResponse)(nil), // 158: vtctldata.StopReplicationResponse + (*vtctldata.TabletExternallyReparentedResponse)(nil), // 159: vtctldata.TabletExternallyReparentedResponse + (*vtctldata.UpdateCellInfoResponse)(nil), // 160: vtctldata.UpdateCellInfoResponse + (*vtctldata.UpdateCellsAliasResponse)(nil), // 161: vtctldata.UpdateCellsAliasResponse + (*vtctldata.ValidateResponse)(nil), // 162: vtctldata.ValidateResponse + (*vtctldata.ValidateKeyspaceResponse)(nil), // 163: vtctldata.ValidateKeyspaceResponse + (*vtctldata.ValidateSchemaKeyspaceResponse)(nil), // 164: vtctldata.ValidateSchemaKeyspaceResponse + (*vtctldata.ValidateShardResponse)(nil), // 165: vtctldata.ValidateShardResponse + (*vtctldata.ValidateVersionKeyspaceResponse)(nil), // 166: vtctldata.ValidateVersionKeyspaceResponse + (*vtctldata.ValidateVersionShardResponse)(nil), // 167: vtctldata.ValidateVersionShardResponse + (*vtctldata.ValidateVSchemaResponse)(nil), // 168: vtctldata.ValidateVSchemaResponse } var file_vtctlservice_proto_depIdxs = []int32{ 0, // 0: vtctlservice.Vtctl.ExecuteVtctlCommand:input_type -> vtctldata.ExecuteVtctlCommandRequest @@ -747,139 +755,141 @@ var file_vtctlservice_proto_depIdxs = []int32{ 34, // 34: vtctlservice.Vtctld.GetShardRoutingRules:input_type -> vtctldata.GetShardRoutingRulesRequest 35, // 35: vtctlservice.Vtctld.GetSrvKeyspaceNames:input_type -> vtctldata.GetSrvKeyspaceNamesRequest 36, // 36: vtctlservice.Vtctld.GetSrvKeyspaces:input_type -> vtctldata.GetSrvKeyspacesRequest - 37, // 37: vtctlservice.Vtctld.GetSrvVSchema:input_type -> vtctldata.GetSrvVSchemaRequest - 38, // 38: vtctlservice.Vtctld.GetSrvVSchemas:input_type -> vtctldata.GetSrvVSchemasRequest - 39, // 39: vtctlservice.Vtctld.GetTablet:input_type -> vtctldata.GetTabletRequest - 40, // 40: vtctlservice.Vtctld.GetTablets:input_type -> vtctldata.GetTabletsRequest - 41, // 41: vtctlservice.Vtctld.GetTopologyPath:input_type -> vtctldata.GetTopologyPathRequest - 42, // 42: vtctlservice.Vtctld.GetVersion:input_type -> vtctldata.GetVersionRequest - 43, // 43: vtctlservice.Vtctld.GetVSchema:input_type -> vtctldata.GetVSchemaRequest - 44, // 44: vtctlservice.Vtctld.GetWorkflows:input_type -> vtctldata.GetWorkflowsRequest - 45, // 45: vtctlservice.Vtctld.InitShardPrimary:input_type -> vtctldata.InitShardPrimaryRequest - 46, // 46: vtctlservice.Vtctld.PingTablet:input_type -> vtctldata.PingTabletRequest - 47, // 47: vtctlservice.Vtctld.PlannedReparentShard:input_type -> vtctldata.PlannedReparentShardRequest - 48, // 48: vtctlservice.Vtctld.RebuildKeyspaceGraph:input_type -> vtctldata.RebuildKeyspaceGraphRequest - 49, // 49: vtctlservice.Vtctld.RebuildVSchemaGraph:input_type -> vtctldata.RebuildVSchemaGraphRequest - 50, // 50: vtctlservice.Vtctld.RefreshState:input_type -> vtctldata.RefreshStateRequest - 51, // 51: vtctlservice.Vtctld.RefreshStateByShard:input_type -> vtctldata.RefreshStateByShardRequest - 52, // 52: vtctlservice.Vtctld.ReloadSchema:input_type -> vtctldata.ReloadSchemaRequest - 53, // 53: vtctlservice.Vtctld.ReloadSchemaKeyspace:input_type -> vtctldata.ReloadSchemaKeyspaceRequest - 54, // 54: vtctlservice.Vtctld.ReloadSchemaShard:input_type -> vtctldata.ReloadSchemaShardRequest - 55, // 55: vtctlservice.Vtctld.RemoveBackup:input_type -> vtctldata.RemoveBackupRequest - 56, // 56: vtctlservice.Vtctld.RemoveKeyspaceCell:input_type -> vtctldata.RemoveKeyspaceCellRequest - 57, // 57: vtctlservice.Vtctld.RemoveShardCell:input_type -> vtctldata.RemoveShardCellRequest - 58, // 58: vtctlservice.Vtctld.ReparentTablet:input_type -> vtctldata.ReparentTabletRequest - 59, // 59: vtctlservice.Vtctld.RestoreFromBackup:input_type -> vtctldata.RestoreFromBackupRequest - 60, // 60: vtctlservice.Vtctld.RunHealthCheck:input_type -> vtctldata.RunHealthCheckRequest - 61, // 61: vtctlservice.Vtctld.SetKeyspaceDurabilityPolicy:input_type -> vtctldata.SetKeyspaceDurabilityPolicyRequest - 62, // 62: vtctlservice.Vtctld.SetShardIsPrimaryServing:input_type -> vtctldata.SetShardIsPrimaryServingRequest - 63, // 63: vtctlservice.Vtctld.SetShardTabletControl:input_type -> vtctldata.SetShardTabletControlRequest - 64, // 64: vtctlservice.Vtctld.SetWritable:input_type -> vtctldata.SetWritableRequest - 65, // 65: vtctlservice.Vtctld.ShardReplicationAdd:input_type -> vtctldata.ShardReplicationAddRequest - 66, // 66: vtctlservice.Vtctld.ShardReplicationFix:input_type -> vtctldata.ShardReplicationFixRequest - 67, // 67: vtctlservice.Vtctld.ShardReplicationPositions:input_type -> vtctldata.ShardReplicationPositionsRequest - 68, // 68: vtctlservice.Vtctld.ShardReplicationRemove:input_type -> vtctldata.ShardReplicationRemoveRequest - 69, // 69: vtctlservice.Vtctld.SleepTablet:input_type -> vtctldata.SleepTabletRequest - 70, // 70: vtctlservice.Vtctld.SourceShardAdd:input_type -> vtctldata.SourceShardAddRequest - 71, // 71: vtctlservice.Vtctld.SourceShardDelete:input_type -> vtctldata.SourceShardDeleteRequest - 72, // 72: vtctlservice.Vtctld.StartReplication:input_type -> vtctldata.StartReplicationRequest - 73, // 73: vtctlservice.Vtctld.StopReplication:input_type -> vtctldata.StopReplicationRequest - 74, // 74: vtctlservice.Vtctld.TabletExternallyReparented:input_type -> vtctldata.TabletExternallyReparentedRequest - 75, // 75: vtctlservice.Vtctld.UpdateCellInfo:input_type -> vtctldata.UpdateCellInfoRequest - 76, // 76: vtctlservice.Vtctld.UpdateCellsAlias:input_type -> vtctldata.UpdateCellsAliasRequest - 77, // 77: vtctlservice.Vtctld.Validate:input_type -> vtctldata.ValidateRequest - 78, // 78: vtctlservice.Vtctld.ValidateKeyspace:input_type -> vtctldata.ValidateKeyspaceRequest - 79, // 79: vtctlservice.Vtctld.ValidateSchemaKeyspace:input_type -> vtctldata.ValidateSchemaKeyspaceRequest - 80, // 80: vtctlservice.Vtctld.ValidateShard:input_type -> vtctldata.ValidateShardRequest - 81, // 81: vtctlservice.Vtctld.ValidateVersionKeyspace:input_type -> vtctldata.ValidateVersionKeyspaceRequest - 82, // 82: vtctlservice.Vtctld.ValidateVersionShard:input_type -> vtctldata.ValidateVersionShardRequest - 83, // 83: vtctlservice.Vtctld.ValidateVSchema:input_type -> vtctldata.ValidateVSchemaRequest - 84, // 84: vtctlservice.Vtctl.ExecuteVtctlCommand:output_type -> vtctldata.ExecuteVtctlCommandResponse - 85, // 85: vtctlservice.Vtctld.AddCellInfo:output_type -> vtctldata.AddCellInfoResponse - 86, // 86: vtctlservice.Vtctld.AddCellsAlias:output_type -> vtctldata.AddCellsAliasResponse - 87, // 87: vtctlservice.Vtctld.ApplyRoutingRules:output_type -> vtctldata.ApplyRoutingRulesResponse - 88, // 88: vtctlservice.Vtctld.ApplySchema:output_type -> vtctldata.ApplySchemaResponse - 89, // 89: vtctlservice.Vtctld.ApplyShardRoutingRules:output_type -> vtctldata.ApplyShardRoutingRulesResponse - 90, // 90: vtctlservice.Vtctld.ApplyVSchema:output_type -> vtctldata.ApplyVSchemaResponse - 91, // 91: vtctlservice.Vtctld.Backup:output_type -> vtctldata.BackupResponse - 91, // 92: vtctlservice.Vtctld.BackupShard:output_type -> vtctldata.BackupResponse - 92, // 93: vtctlservice.Vtctld.ChangeTabletType:output_type -> vtctldata.ChangeTabletTypeResponse - 93, // 94: vtctlservice.Vtctld.CreateKeyspace:output_type -> vtctldata.CreateKeyspaceResponse - 94, // 95: vtctlservice.Vtctld.CreateShard:output_type -> vtctldata.CreateShardResponse - 95, // 96: vtctlservice.Vtctld.DeleteCellInfo:output_type -> vtctldata.DeleteCellInfoResponse - 96, // 97: vtctlservice.Vtctld.DeleteCellsAlias:output_type -> vtctldata.DeleteCellsAliasResponse - 97, // 98: vtctlservice.Vtctld.DeleteKeyspace:output_type -> vtctldata.DeleteKeyspaceResponse - 98, // 99: vtctlservice.Vtctld.DeleteShards:output_type -> vtctldata.DeleteShardsResponse - 99, // 100: vtctlservice.Vtctld.DeleteSrvVSchema:output_type -> vtctldata.DeleteSrvVSchemaResponse - 100, // 101: vtctlservice.Vtctld.DeleteTablets:output_type -> vtctldata.DeleteTabletsResponse - 101, // 102: vtctlservice.Vtctld.EmergencyReparentShard:output_type -> vtctldata.EmergencyReparentShardResponse - 102, // 103: vtctlservice.Vtctld.ExecuteFetchAsApp:output_type -> vtctldata.ExecuteFetchAsAppResponse - 103, // 104: vtctlservice.Vtctld.ExecuteFetchAsDBA:output_type -> vtctldata.ExecuteFetchAsDBAResponse - 104, // 105: vtctlservice.Vtctld.ExecuteHook:output_type -> vtctldata.ExecuteHookResponse - 105, // 106: vtctlservice.Vtctld.FindAllShardsInKeyspace:output_type -> vtctldata.FindAllShardsInKeyspaceResponse - 106, // 107: vtctlservice.Vtctld.GetBackups:output_type -> vtctldata.GetBackupsResponse - 107, // 108: vtctlservice.Vtctld.GetCellInfo:output_type -> vtctldata.GetCellInfoResponse - 108, // 109: vtctlservice.Vtctld.GetCellInfoNames:output_type -> vtctldata.GetCellInfoNamesResponse - 109, // 110: vtctlservice.Vtctld.GetCellsAliases:output_type -> vtctldata.GetCellsAliasesResponse - 110, // 111: vtctlservice.Vtctld.GetFullStatus:output_type -> vtctldata.GetFullStatusResponse - 111, // 112: vtctlservice.Vtctld.GetKeyspace:output_type -> vtctldata.GetKeyspaceResponse - 112, // 113: vtctlservice.Vtctld.GetKeyspaces:output_type -> vtctldata.GetKeyspacesResponse - 113, // 114: vtctlservice.Vtctld.GetPermissions:output_type -> vtctldata.GetPermissionsResponse - 114, // 115: vtctlservice.Vtctld.GetRoutingRules:output_type -> vtctldata.GetRoutingRulesResponse - 115, // 116: vtctlservice.Vtctld.GetSchema:output_type -> vtctldata.GetSchemaResponse - 116, // 117: vtctlservice.Vtctld.GetShard:output_type -> vtctldata.GetShardResponse - 117, // 118: vtctlservice.Vtctld.GetShardRoutingRules:output_type -> vtctldata.GetShardRoutingRulesResponse - 118, // 119: vtctlservice.Vtctld.GetSrvKeyspaceNames:output_type -> vtctldata.GetSrvKeyspaceNamesResponse - 119, // 120: vtctlservice.Vtctld.GetSrvKeyspaces:output_type -> vtctldata.GetSrvKeyspacesResponse - 120, // 121: vtctlservice.Vtctld.GetSrvVSchema:output_type -> vtctldata.GetSrvVSchemaResponse - 121, // 122: vtctlservice.Vtctld.GetSrvVSchemas:output_type -> vtctldata.GetSrvVSchemasResponse - 122, // 123: vtctlservice.Vtctld.GetTablet:output_type -> vtctldata.GetTabletResponse - 123, // 124: vtctlservice.Vtctld.GetTablets:output_type -> vtctldata.GetTabletsResponse - 124, // 125: vtctlservice.Vtctld.GetTopologyPath:output_type -> vtctldata.GetTopologyPathResponse - 125, // 126: vtctlservice.Vtctld.GetVersion:output_type -> vtctldata.GetVersionResponse - 126, // 127: vtctlservice.Vtctld.GetVSchema:output_type -> vtctldata.GetVSchemaResponse - 127, // 128: vtctlservice.Vtctld.GetWorkflows:output_type -> vtctldata.GetWorkflowsResponse - 128, // 129: vtctlservice.Vtctld.InitShardPrimary:output_type -> vtctldata.InitShardPrimaryResponse - 129, // 130: vtctlservice.Vtctld.PingTablet:output_type -> vtctldata.PingTabletResponse - 130, // 131: vtctlservice.Vtctld.PlannedReparentShard:output_type -> vtctldata.PlannedReparentShardResponse - 131, // 132: vtctlservice.Vtctld.RebuildKeyspaceGraph:output_type -> vtctldata.RebuildKeyspaceGraphResponse - 132, // 133: vtctlservice.Vtctld.RebuildVSchemaGraph:output_type -> vtctldata.RebuildVSchemaGraphResponse - 133, // 134: vtctlservice.Vtctld.RefreshState:output_type -> vtctldata.RefreshStateResponse - 134, // 135: vtctlservice.Vtctld.RefreshStateByShard:output_type -> vtctldata.RefreshStateByShardResponse - 135, // 136: vtctlservice.Vtctld.ReloadSchema:output_type -> vtctldata.ReloadSchemaResponse - 136, // 137: vtctlservice.Vtctld.ReloadSchemaKeyspace:output_type -> vtctldata.ReloadSchemaKeyspaceResponse - 137, // 138: vtctlservice.Vtctld.ReloadSchemaShard:output_type -> vtctldata.ReloadSchemaShardResponse - 138, // 139: vtctlservice.Vtctld.RemoveBackup:output_type -> vtctldata.RemoveBackupResponse - 139, // 140: vtctlservice.Vtctld.RemoveKeyspaceCell:output_type -> vtctldata.RemoveKeyspaceCellResponse - 140, // 141: vtctlservice.Vtctld.RemoveShardCell:output_type -> vtctldata.RemoveShardCellResponse - 141, // 142: vtctlservice.Vtctld.ReparentTablet:output_type -> vtctldata.ReparentTabletResponse - 142, // 143: vtctlservice.Vtctld.RestoreFromBackup:output_type -> vtctldata.RestoreFromBackupResponse - 143, // 144: vtctlservice.Vtctld.RunHealthCheck:output_type -> vtctldata.RunHealthCheckResponse - 144, // 145: vtctlservice.Vtctld.SetKeyspaceDurabilityPolicy:output_type -> vtctldata.SetKeyspaceDurabilityPolicyResponse - 145, // 146: vtctlservice.Vtctld.SetShardIsPrimaryServing:output_type -> vtctldata.SetShardIsPrimaryServingResponse - 146, // 147: vtctlservice.Vtctld.SetShardTabletControl:output_type -> vtctldata.SetShardTabletControlResponse - 147, // 148: vtctlservice.Vtctld.SetWritable:output_type -> vtctldata.SetWritableResponse - 148, // 149: vtctlservice.Vtctld.ShardReplicationAdd:output_type -> vtctldata.ShardReplicationAddResponse - 149, // 150: vtctlservice.Vtctld.ShardReplicationFix:output_type -> vtctldata.ShardReplicationFixResponse - 150, // 151: vtctlservice.Vtctld.ShardReplicationPositions:output_type -> vtctldata.ShardReplicationPositionsResponse - 151, // 152: vtctlservice.Vtctld.ShardReplicationRemove:output_type -> vtctldata.ShardReplicationRemoveResponse - 152, // 153: vtctlservice.Vtctld.SleepTablet:output_type -> vtctldata.SleepTabletResponse - 153, // 154: vtctlservice.Vtctld.SourceShardAdd:output_type -> vtctldata.SourceShardAddResponse - 154, // 155: vtctlservice.Vtctld.SourceShardDelete:output_type -> vtctldata.SourceShardDeleteResponse - 155, // 156: vtctlservice.Vtctld.StartReplication:output_type -> vtctldata.StartReplicationResponse - 156, // 157: vtctlservice.Vtctld.StopReplication:output_type -> vtctldata.StopReplicationResponse - 157, // 158: vtctlservice.Vtctld.TabletExternallyReparented:output_type -> vtctldata.TabletExternallyReparentedResponse - 158, // 159: vtctlservice.Vtctld.UpdateCellInfo:output_type -> vtctldata.UpdateCellInfoResponse - 159, // 160: vtctlservice.Vtctld.UpdateCellsAlias:output_type -> vtctldata.UpdateCellsAliasResponse - 160, // 161: vtctlservice.Vtctld.Validate:output_type -> vtctldata.ValidateResponse - 161, // 162: vtctlservice.Vtctld.ValidateKeyspace:output_type -> vtctldata.ValidateKeyspaceResponse - 162, // 163: vtctlservice.Vtctld.ValidateSchemaKeyspace:output_type -> vtctldata.ValidateSchemaKeyspaceResponse - 163, // 164: vtctlservice.Vtctld.ValidateShard:output_type -> vtctldata.ValidateShardResponse - 164, // 165: vtctlservice.Vtctld.ValidateVersionKeyspace:output_type -> vtctldata.ValidateVersionKeyspaceResponse - 165, // 166: vtctlservice.Vtctld.ValidateVersionShard:output_type -> vtctldata.ValidateVersionShardResponse - 166, // 167: vtctlservice.Vtctld.ValidateVSchema:output_type -> vtctldata.ValidateVSchemaResponse - 84, // [84:168] is the sub-list for method output_type - 0, // [0:84] is the sub-list for method input_type + 37, // 37: vtctlservice.Vtctld.UpdateThrottlerConfig:input_type -> vtctldata.UpdateThrottlerConfigRequest + 38, // 38: vtctlservice.Vtctld.GetSrvVSchema:input_type -> vtctldata.GetSrvVSchemaRequest + 39, // 39: vtctlservice.Vtctld.GetSrvVSchemas:input_type -> vtctldata.GetSrvVSchemasRequest + 40, // 40: vtctlservice.Vtctld.GetTablet:input_type -> vtctldata.GetTabletRequest + 41, // 41: vtctlservice.Vtctld.GetTablets:input_type -> vtctldata.GetTabletsRequest + 42, // 42: vtctlservice.Vtctld.GetTopologyPath:input_type -> vtctldata.GetTopologyPathRequest + 43, // 43: vtctlservice.Vtctld.GetVersion:input_type -> vtctldata.GetVersionRequest + 44, // 44: vtctlservice.Vtctld.GetVSchema:input_type -> vtctldata.GetVSchemaRequest + 45, // 45: vtctlservice.Vtctld.GetWorkflows:input_type -> vtctldata.GetWorkflowsRequest + 46, // 46: vtctlservice.Vtctld.InitShardPrimary:input_type -> vtctldata.InitShardPrimaryRequest + 47, // 47: vtctlservice.Vtctld.PingTablet:input_type -> vtctldata.PingTabletRequest + 48, // 48: vtctlservice.Vtctld.PlannedReparentShard:input_type -> vtctldata.PlannedReparentShardRequest + 49, // 49: vtctlservice.Vtctld.RebuildKeyspaceGraph:input_type -> vtctldata.RebuildKeyspaceGraphRequest + 50, // 50: vtctlservice.Vtctld.RebuildVSchemaGraph:input_type -> vtctldata.RebuildVSchemaGraphRequest + 51, // 51: vtctlservice.Vtctld.RefreshState:input_type -> vtctldata.RefreshStateRequest + 52, // 52: vtctlservice.Vtctld.RefreshStateByShard:input_type -> vtctldata.RefreshStateByShardRequest + 53, // 53: vtctlservice.Vtctld.ReloadSchema:input_type -> vtctldata.ReloadSchemaRequest + 54, // 54: vtctlservice.Vtctld.ReloadSchemaKeyspace:input_type -> vtctldata.ReloadSchemaKeyspaceRequest + 55, // 55: vtctlservice.Vtctld.ReloadSchemaShard:input_type -> vtctldata.ReloadSchemaShardRequest + 56, // 56: vtctlservice.Vtctld.RemoveBackup:input_type -> vtctldata.RemoveBackupRequest + 57, // 57: vtctlservice.Vtctld.RemoveKeyspaceCell:input_type -> vtctldata.RemoveKeyspaceCellRequest + 58, // 58: vtctlservice.Vtctld.RemoveShardCell:input_type -> vtctldata.RemoveShardCellRequest + 59, // 59: vtctlservice.Vtctld.ReparentTablet:input_type -> vtctldata.ReparentTabletRequest + 60, // 60: vtctlservice.Vtctld.RestoreFromBackup:input_type -> vtctldata.RestoreFromBackupRequest + 61, // 61: vtctlservice.Vtctld.RunHealthCheck:input_type -> vtctldata.RunHealthCheckRequest + 62, // 62: vtctlservice.Vtctld.SetKeyspaceDurabilityPolicy:input_type -> vtctldata.SetKeyspaceDurabilityPolicyRequest + 63, // 63: vtctlservice.Vtctld.SetShardIsPrimaryServing:input_type -> vtctldata.SetShardIsPrimaryServingRequest + 64, // 64: vtctlservice.Vtctld.SetShardTabletControl:input_type -> vtctldata.SetShardTabletControlRequest + 65, // 65: vtctlservice.Vtctld.SetWritable:input_type -> vtctldata.SetWritableRequest + 66, // 66: vtctlservice.Vtctld.ShardReplicationAdd:input_type -> vtctldata.ShardReplicationAddRequest + 67, // 67: vtctlservice.Vtctld.ShardReplicationFix:input_type -> vtctldata.ShardReplicationFixRequest + 68, // 68: vtctlservice.Vtctld.ShardReplicationPositions:input_type -> vtctldata.ShardReplicationPositionsRequest + 69, // 69: vtctlservice.Vtctld.ShardReplicationRemove:input_type -> vtctldata.ShardReplicationRemoveRequest + 70, // 70: vtctlservice.Vtctld.SleepTablet:input_type -> vtctldata.SleepTabletRequest + 71, // 71: vtctlservice.Vtctld.SourceShardAdd:input_type -> vtctldata.SourceShardAddRequest + 72, // 72: vtctlservice.Vtctld.SourceShardDelete:input_type -> vtctldata.SourceShardDeleteRequest + 73, // 73: vtctlservice.Vtctld.StartReplication:input_type -> vtctldata.StartReplicationRequest + 74, // 74: vtctlservice.Vtctld.StopReplication:input_type -> vtctldata.StopReplicationRequest + 75, // 75: vtctlservice.Vtctld.TabletExternallyReparented:input_type -> vtctldata.TabletExternallyReparentedRequest + 76, // 76: vtctlservice.Vtctld.UpdateCellInfo:input_type -> vtctldata.UpdateCellInfoRequest + 77, // 77: vtctlservice.Vtctld.UpdateCellsAlias:input_type -> vtctldata.UpdateCellsAliasRequest + 78, // 78: vtctlservice.Vtctld.Validate:input_type -> vtctldata.ValidateRequest + 79, // 79: vtctlservice.Vtctld.ValidateKeyspace:input_type -> vtctldata.ValidateKeyspaceRequest + 80, // 80: vtctlservice.Vtctld.ValidateSchemaKeyspace:input_type -> vtctldata.ValidateSchemaKeyspaceRequest + 81, // 81: vtctlservice.Vtctld.ValidateShard:input_type -> vtctldata.ValidateShardRequest + 82, // 82: vtctlservice.Vtctld.ValidateVersionKeyspace:input_type -> vtctldata.ValidateVersionKeyspaceRequest + 83, // 83: vtctlservice.Vtctld.ValidateVersionShard:input_type -> vtctldata.ValidateVersionShardRequest + 84, // 84: vtctlservice.Vtctld.ValidateVSchema:input_type -> vtctldata.ValidateVSchemaRequest + 85, // 85: vtctlservice.Vtctl.ExecuteVtctlCommand:output_type -> vtctldata.ExecuteVtctlCommandResponse + 86, // 86: vtctlservice.Vtctld.AddCellInfo:output_type -> vtctldata.AddCellInfoResponse + 87, // 87: vtctlservice.Vtctld.AddCellsAlias:output_type -> vtctldata.AddCellsAliasResponse + 88, // 88: vtctlservice.Vtctld.ApplyRoutingRules:output_type -> vtctldata.ApplyRoutingRulesResponse + 89, // 89: vtctlservice.Vtctld.ApplySchema:output_type -> vtctldata.ApplySchemaResponse + 90, // 90: vtctlservice.Vtctld.ApplyShardRoutingRules:output_type -> vtctldata.ApplyShardRoutingRulesResponse + 91, // 91: vtctlservice.Vtctld.ApplyVSchema:output_type -> vtctldata.ApplyVSchemaResponse + 92, // 92: vtctlservice.Vtctld.Backup:output_type -> vtctldata.BackupResponse + 92, // 93: vtctlservice.Vtctld.BackupShard:output_type -> vtctldata.BackupResponse + 93, // 94: vtctlservice.Vtctld.ChangeTabletType:output_type -> vtctldata.ChangeTabletTypeResponse + 94, // 95: vtctlservice.Vtctld.CreateKeyspace:output_type -> vtctldata.CreateKeyspaceResponse + 95, // 96: vtctlservice.Vtctld.CreateShard:output_type -> vtctldata.CreateShardResponse + 96, // 97: vtctlservice.Vtctld.DeleteCellInfo:output_type -> vtctldata.DeleteCellInfoResponse + 97, // 98: vtctlservice.Vtctld.DeleteCellsAlias:output_type -> vtctldata.DeleteCellsAliasResponse + 98, // 99: vtctlservice.Vtctld.DeleteKeyspace:output_type -> vtctldata.DeleteKeyspaceResponse + 99, // 100: vtctlservice.Vtctld.DeleteShards:output_type -> vtctldata.DeleteShardsResponse + 100, // 101: vtctlservice.Vtctld.DeleteSrvVSchema:output_type -> vtctldata.DeleteSrvVSchemaResponse + 101, // 102: vtctlservice.Vtctld.DeleteTablets:output_type -> vtctldata.DeleteTabletsResponse + 102, // 103: vtctlservice.Vtctld.EmergencyReparentShard:output_type -> vtctldata.EmergencyReparentShardResponse + 103, // 104: vtctlservice.Vtctld.ExecuteFetchAsApp:output_type -> vtctldata.ExecuteFetchAsAppResponse + 104, // 105: vtctlservice.Vtctld.ExecuteFetchAsDBA:output_type -> vtctldata.ExecuteFetchAsDBAResponse + 105, // 106: vtctlservice.Vtctld.ExecuteHook:output_type -> vtctldata.ExecuteHookResponse + 106, // 107: vtctlservice.Vtctld.FindAllShardsInKeyspace:output_type -> vtctldata.FindAllShardsInKeyspaceResponse + 107, // 108: vtctlservice.Vtctld.GetBackups:output_type -> vtctldata.GetBackupsResponse + 108, // 109: vtctlservice.Vtctld.GetCellInfo:output_type -> vtctldata.GetCellInfoResponse + 109, // 110: vtctlservice.Vtctld.GetCellInfoNames:output_type -> vtctldata.GetCellInfoNamesResponse + 110, // 111: vtctlservice.Vtctld.GetCellsAliases:output_type -> vtctldata.GetCellsAliasesResponse + 111, // 112: vtctlservice.Vtctld.GetFullStatus:output_type -> vtctldata.GetFullStatusResponse + 112, // 113: vtctlservice.Vtctld.GetKeyspace:output_type -> vtctldata.GetKeyspaceResponse + 113, // 114: vtctlservice.Vtctld.GetKeyspaces:output_type -> vtctldata.GetKeyspacesResponse + 114, // 115: vtctlservice.Vtctld.GetPermissions:output_type -> vtctldata.GetPermissionsResponse + 115, // 116: vtctlservice.Vtctld.GetRoutingRules:output_type -> vtctldata.GetRoutingRulesResponse + 116, // 117: vtctlservice.Vtctld.GetSchema:output_type -> vtctldata.GetSchemaResponse + 117, // 118: vtctlservice.Vtctld.GetShard:output_type -> vtctldata.GetShardResponse + 118, // 119: vtctlservice.Vtctld.GetShardRoutingRules:output_type -> vtctldata.GetShardRoutingRulesResponse + 119, // 120: vtctlservice.Vtctld.GetSrvKeyspaceNames:output_type -> vtctldata.GetSrvKeyspaceNamesResponse + 120, // 121: vtctlservice.Vtctld.GetSrvKeyspaces:output_type -> vtctldata.GetSrvKeyspacesResponse + 121, // 122: vtctlservice.Vtctld.UpdateThrottlerConfig:output_type -> vtctldata.UpdateThrottlerConfigResponse + 122, // 123: vtctlservice.Vtctld.GetSrvVSchema:output_type -> vtctldata.GetSrvVSchemaResponse + 123, // 124: vtctlservice.Vtctld.GetSrvVSchemas:output_type -> vtctldata.GetSrvVSchemasResponse + 124, // 125: vtctlservice.Vtctld.GetTablet:output_type -> vtctldata.GetTabletResponse + 125, // 126: vtctlservice.Vtctld.GetTablets:output_type -> vtctldata.GetTabletsResponse + 126, // 127: vtctlservice.Vtctld.GetTopologyPath:output_type -> vtctldata.GetTopologyPathResponse + 127, // 128: vtctlservice.Vtctld.GetVersion:output_type -> vtctldata.GetVersionResponse + 128, // 129: vtctlservice.Vtctld.GetVSchema:output_type -> vtctldata.GetVSchemaResponse + 129, // 130: vtctlservice.Vtctld.GetWorkflows:output_type -> vtctldata.GetWorkflowsResponse + 130, // 131: vtctlservice.Vtctld.InitShardPrimary:output_type -> vtctldata.InitShardPrimaryResponse + 131, // 132: vtctlservice.Vtctld.PingTablet:output_type -> vtctldata.PingTabletResponse + 132, // 133: vtctlservice.Vtctld.PlannedReparentShard:output_type -> vtctldata.PlannedReparentShardResponse + 133, // 134: vtctlservice.Vtctld.RebuildKeyspaceGraph:output_type -> vtctldata.RebuildKeyspaceGraphResponse + 134, // 135: vtctlservice.Vtctld.RebuildVSchemaGraph:output_type -> vtctldata.RebuildVSchemaGraphResponse + 135, // 136: vtctlservice.Vtctld.RefreshState:output_type -> vtctldata.RefreshStateResponse + 136, // 137: vtctlservice.Vtctld.RefreshStateByShard:output_type -> vtctldata.RefreshStateByShardResponse + 137, // 138: vtctlservice.Vtctld.ReloadSchema:output_type -> vtctldata.ReloadSchemaResponse + 138, // 139: vtctlservice.Vtctld.ReloadSchemaKeyspace:output_type -> vtctldata.ReloadSchemaKeyspaceResponse + 139, // 140: vtctlservice.Vtctld.ReloadSchemaShard:output_type -> vtctldata.ReloadSchemaShardResponse + 140, // 141: vtctlservice.Vtctld.RemoveBackup:output_type -> vtctldata.RemoveBackupResponse + 141, // 142: vtctlservice.Vtctld.RemoveKeyspaceCell:output_type -> vtctldata.RemoveKeyspaceCellResponse + 142, // 143: vtctlservice.Vtctld.RemoveShardCell:output_type -> vtctldata.RemoveShardCellResponse + 143, // 144: vtctlservice.Vtctld.ReparentTablet:output_type -> vtctldata.ReparentTabletResponse + 144, // 145: vtctlservice.Vtctld.RestoreFromBackup:output_type -> vtctldata.RestoreFromBackupResponse + 145, // 146: vtctlservice.Vtctld.RunHealthCheck:output_type -> vtctldata.RunHealthCheckResponse + 146, // 147: vtctlservice.Vtctld.SetKeyspaceDurabilityPolicy:output_type -> vtctldata.SetKeyspaceDurabilityPolicyResponse + 147, // 148: vtctlservice.Vtctld.SetShardIsPrimaryServing:output_type -> vtctldata.SetShardIsPrimaryServingResponse + 148, // 149: vtctlservice.Vtctld.SetShardTabletControl:output_type -> vtctldata.SetShardTabletControlResponse + 149, // 150: vtctlservice.Vtctld.SetWritable:output_type -> vtctldata.SetWritableResponse + 150, // 151: vtctlservice.Vtctld.ShardReplicationAdd:output_type -> vtctldata.ShardReplicationAddResponse + 151, // 152: vtctlservice.Vtctld.ShardReplicationFix:output_type -> vtctldata.ShardReplicationFixResponse + 152, // 153: vtctlservice.Vtctld.ShardReplicationPositions:output_type -> vtctldata.ShardReplicationPositionsResponse + 153, // 154: vtctlservice.Vtctld.ShardReplicationRemove:output_type -> vtctldata.ShardReplicationRemoveResponse + 154, // 155: vtctlservice.Vtctld.SleepTablet:output_type -> vtctldata.SleepTabletResponse + 155, // 156: vtctlservice.Vtctld.SourceShardAdd:output_type -> vtctldata.SourceShardAddResponse + 156, // 157: vtctlservice.Vtctld.SourceShardDelete:output_type -> vtctldata.SourceShardDeleteResponse + 157, // 158: vtctlservice.Vtctld.StartReplication:output_type -> vtctldata.StartReplicationResponse + 158, // 159: vtctlservice.Vtctld.StopReplication:output_type -> vtctldata.StopReplicationResponse + 159, // 160: vtctlservice.Vtctld.TabletExternallyReparented:output_type -> vtctldata.TabletExternallyReparentedResponse + 160, // 161: vtctlservice.Vtctld.UpdateCellInfo:output_type -> vtctldata.UpdateCellInfoResponse + 161, // 162: vtctlservice.Vtctld.UpdateCellsAlias:output_type -> vtctldata.UpdateCellsAliasResponse + 162, // 163: vtctlservice.Vtctld.Validate:output_type -> vtctldata.ValidateResponse + 163, // 164: vtctlservice.Vtctld.ValidateKeyspace:output_type -> vtctldata.ValidateKeyspaceResponse + 164, // 165: vtctlservice.Vtctld.ValidateSchemaKeyspace:output_type -> vtctldata.ValidateSchemaKeyspaceResponse + 165, // 166: vtctlservice.Vtctld.ValidateShard:output_type -> vtctldata.ValidateShardResponse + 166, // 167: vtctlservice.Vtctld.ValidateVersionKeyspace:output_type -> vtctldata.ValidateVersionKeyspaceResponse + 167, // 168: vtctlservice.Vtctld.ValidateVersionShard:output_type -> vtctldata.ValidateVersionShardResponse + 168, // 169: vtctlservice.Vtctld.ValidateVSchema:output_type -> vtctldata.ValidateVSchemaResponse + 85, // [85:170] is the sub-list for method output_type + 0, // [0:85] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/go/vt/proto/vtctlservice/vtctlservice_grpc.pb.go b/go/vt/proto/vtctlservice/vtctlservice_grpc.pb.go index 0e17723a363..c97a10edd16 100644 --- a/go/vt/proto/vtctlservice/vtctlservice_grpc.pb.go +++ b/go/vt/proto/vtctlservice/vtctlservice_grpc.pb.go @@ -235,6 +235,8 @@ type VtctldClient interface { // GetSrvKeyspaces returns the SrvKeyspaces for a keyspace in one or more // cells. GetSrvKeyspaces(ctx context.Context, in *vtctldata.GetSrvKeyspacesRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvKeyspacesResponse, error) + // UpdateThrottlerConfig updates the tablet throttler configuration + UpdateThrottlerConfig(ctx context.Context, in *vtctldata.UpdateThrottlerConfigRequest, opts ...grpc.CallOption) (*vtctldata.UpdateThrottlerConfigResponse, error) // GetSrvVSchema returns the SrvVSchema for a cell. GetSrvVSchema(ctx context.Context, in *vtctldata.GetSrvVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvVSchemaResponse, error) // GetSrvVSchemas returns a mapping from cell name to SrvVSchema for all cells, @@ -776,6 +778,15 @@ func (c *vtctldClient) GetSrvKeyspaces(ctx context.Context, in *vtctldata.GetSrv return out, nil } +func (c *vtctldClient) UpdateThrottlerConfig(ctx context.Context, in *vtctldata.UpdateThrottlerConfigRequest, opts ...grpc.CallOption) (*vtctldata.UpdateThrottlerConfigResponse, error) { + out := new(vtctldata.UpdateThrottlerConfigResponse) + err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/UpdateThrottlerConfig", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *vtctldClient) GetSrvVSchema(ctx context.Context, in *vtctldata.GetSrvVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvVSchemaResponse, error) { out := new(vtctldata.GetSrvVSchemaResponse) err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetSrvVSchema", in, out, opts...) @@ -1325,6 +1336,8 @@ type VtctldServer interface { // GetSrvKeyspaces returns the SrvKeyspaces for a keyspace in one or more // cells. GetSrvKeyspaces(context.Context, *vtctldata.GetSrvKeyspacesRequest) (*vtctldata.GetSrvKeyspacesResponse, error) + // UpdateThrottlerConfig updates the tablet throttler configuration + UpdateThrottlerConfig(context.Context, *vtctldata.UpdateThrottlerConfigRequest) (*vtctldata.UpdateThrottlerConfigResponse, error) // GetSrvVSchema returns the SrvVSchema for a cell. GetSrvVSchema(context.Context, *vtctldata.GetSrvVSchemaRequest) (*vtctldata.GetSrvVSchemaResponse, error) // GetSrvVSchemas returns a mapping from cell name to SrvVSchema for all cells, @@ -1601,6 +1614,9 @@ func (UnimplementedVtctldServer) GetSrvKeyspaceNames(context.Context, *vtctldata func (UnimplementedVtctldServer) GetSrvKeyspaces(context.Context, *vtctldata.GetSrvKeyspacesRequest) (*vtctldata.GetSrvKeyspacesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSrvKeyspaces not implemented") } +func (UnimplementedVtctldServer) UpdateThrottlerConfig(context.Context, *vtctldata.UpdateThrottlerConfigRequest) (*vtctldata.UpdateThrottlerConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateThrottlerConfig not implemented") +} func (UnimplementedVtctldServer) GetSrvVSchema(context.Context, *vtctldata.GetSrvVSchemaRequest) (*vtctldata.GetSrvVSchemaResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSrvVSchema not implemented") } @@ -2409,6 +2425,24 @@ func _Vtctld_GetSrvKeyspaces_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Vtctld_UpdateThrottlerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(vtctldata.UpdateThrottlerConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VtctldServer).UpdateThrottlerConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vtctlservice.Vtctld/UpdateThrottlerConfig", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VtctldServer).UpdateThrottlerConfig(ctx, req.(*vtctldata.UpdateThrottlerConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Vtctld_GetSrvVSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(vtctldata.GetSrvVSchemaRequest) if err := dec(in); err != nil { @@ -3401,6 +3435,10 @@ var Vtctld_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetSrvKeyspaces", Handler: _Vtctld_GetSrvKeyspaces_Handler, }, + { + MethodName: "UpdateThrottlerConfig", + Handler: _Vtctld_UpdateThrottlerConfig_Handler, + }, { MethodName: "GetSrvVSchema", Handler: _Vtctld_GetSrvVSchema_Handler, diff --git a/go/vt/vtctl/grpcvtctldclient/client_gen.go b/go/vt/vtctl/grpcvtctldclient/client_gen.go index 2cb78f13d27..6267d650c7a 100644 --- a/go/vt/vtctl/grpcvtctldclient/client_gen.go +++ b/go/vt/vtctl/grpcvtctldclient/client_gen.go @@ -713,6 +713,15 @@ func (client *gRPCVtctldClient) UpdateCellsAlias(ctx context.Context, in *vtctld return client.c.UpdateCellsAlias(ctx, in, opts...) } +// UpdateThrottlerConfig is part of the vtctlservicepb.VtctldClient interface. +func (client *gRPCVtctldClient) UpdateThrottlerConfig(ctx context.Context, in *vtctldatapb.UpdateThrottlerConfigRequest, opts ...grpc.CallOption) (*vtctldatapb.UpdateThrottlerConfigResponse, error) { + if client.c == nil { + return nil, status.Error(codes.Unavailable, connClosedMsg) + } + + return client.c.UpdateThrottlerConfig(ctx, in, opts...) +} + // Validate is part of the vtctlservicepb.VtctldClient interface. func (client *gRPCVtctldClient) Validate(ctx context.Context, in *vtctldatapb.ValidateRequest, opts ...grpc.CallOption) (*vtctldatapb.ValidateResponse, error) { if client.c == nil { diff --git a/go/vt/vtctl/localvtctldclient/client_gen.go b/go/vt/vtctl/localvtctldclient/client_gen.go index fae824d7edf..21d743de148 100644 --- a/go/vt/vtctl/localvtctldclient/client_gen.go +++ b/go/vt/vtctl/localvtctldclient/client_gen.go @@ -547,6 +547,11 @@ func (client *localVtctldClient) UpdateCellsAlias(ctx context.Context, in *vtctl return client.s.UpdateCellsAlias(ctx, in) } +// UpdateThrottlerConfig is part of the vtctlservicepb.VtctldClient interface. +func (client *localVtctldClient) UpdateThrottlerConfig(ctx context.Context, in *vtctldatapb.UpdateThrottlerConfigRequest, opts ...grpc.CallOption) (*vtctldatapb.UpdateThrottlerConfigResponse, error) { + return client.s.UpdateThrottlerConfig(ctx, in) +} + // Validate is part of the vtctlservicepb.VtctldClient interface. func (client *localVtctldClient) Validate(ctx context.Context, in *vtctldatapb.ValidateRequest, opts ...grpc.CallOption) (*vtctldatapb.ValidateResponse, error) { return client.s.Validate(ctx, in) diff --git a/proto/vtctldata.proto b/proto/vtctldata.proto index 44094e2ad8d..10cc3fd13ad 100644 --- a/proto/vtctldata.proto +++ b/proto/vtctldata.proto @@ -669,6 +669,24 @@ message GetSrvKeyspacesResponse { map srv_keyspaces = 1; } +message UpdateThrottlerConfigRequest { + // Enable instructs to enable the throttler + bool enable = 1; + // Disable instructs to disable the throttler + bool disable = 2; + // Threshold for throttler (with no custom query, ie using default query, only positive values are considered) + double threshold = 3; + // CustomQuery replaces the default replication lag query + string custom_query = 4; + // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health + bool check_as_check_self=5; + // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) + bool check_as_check_shard=6; +} + +message UpdateThrottlerConfigResponse { +} + message GetSrvVSchemaRequest { string cell = 1; } diff --git a/proto/vtctlservice.proto b/proto/vtctlservice.proto index de69443eee4..67a02c8f1e5 100644 --- a/proto/vtctlservice.proto +++ b/proto/vtctlservice.proto @@ -130,6 +130,8 @@ service Vtctld { // GetSrvKeyspaces returns the SrvKeyspaces for a keyspace in one or more // cells. rpc GetSrvKeyspaces (vtctldata.GetSrvKeyspacesRequest) returns (vtctldata.GetSrvKeyspacesResponse) {}; + // UpdateThrottlerConfig updates the tablet throttler configuration + rpc UpdateThrottlerConfig(vtctldata.UpdateThrottlerConfigRequest) returns (vtctldata.UpdateThrottlerConfigResponse) {}; // GetSrvVSchema returns the SrvVSchema for a cell. rpc GetSrvVSchema(vtctldata.GetSrvVSchemaRequest) returns (vtctldata.GetSrvVSchemaResponse) {}; // GetSrvVSchemas returns a mapping from cell name to SrvVSchema for all cells, From 6080903b9228d5f809b92c657728e671e19048a7 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 7 Nov 2022 15:24:40 +0200 Subject: [PATCH 58/78] vt admin proto Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- web/vtadmin/src/proto/vtadmin.d.ts | 204 +++++++++++++ web/vtadmin/src/proto/vtadmin.js | 458 +++++++++++++++++++++++++++++ 2 files changed, 662 insertions(+) diff --git a/web/vtadmin/src/proto/vtadmin.d.ts b/web/vtadmin/src/proto/vtadmin.d.ts index 0d8496bcec9..b26edb53ffe 100644 --- a/web/vtadmin/src/proto/vtadmin.d.ts +++ b/web/vtadmin/src/proto/vtadmin.d.ts @@ -41439,6 +41439,210 @@ export namespace vtctldata { public toJSON(): { [k: string]: any }; } + /** Properties of an UpdateThrottlerConfigRequest. */ + interface IUpdateThrottlerConfigRequest { + + /** UpdateThrottlerConfigRequest enable */ + enable?: (boolean|null); + + /** UpdateThrottlerConfigRequest disable */ + disable?: (boolean|null); + + /** UpdateThrottlerConfigRequest threshold */ + threshold?: (number|null); + + /** UpdateThrottlerConfigRequest custom_query */ + custom_query?: (string|null); + + /** UpdateThrottlerConfigRequest check_as_check_self */ + check_as_check_self?: (boolean|null); + + /** UpdateThrottlerConfigRequest check_as_check_shard */ + check_as_check_shard?: (boolean|null); + } + + /** Represents an UpdateThrottlerConfigRequest. */ + class UpdateThrottlerConfigRequest implements IUpdateThrottlerConfigRequest { + + /** + * Constructs a new UpdateThrottlerConfigRequest. + * @param [properties] Properties to set + */ + constructor(properties?: vtctldata.IUpdateThrottlerConfigRequest); + + /** UpdateThrottlerConfigRequest enable. */ + public enable: boolean; + + /** UpdateThrottlerConfigRequest disable. */ + public disable: boolean; + + /** UpdateThrottlerConfigRequest threshold. */ + public threshold: number; + + /** UpdateThrottlerConfigRequest custom_query. */ + public custom_query: string; + + /** UpdateThrottlerConfigRequest check_as_check_self. */ + public check_as_check_self: boolean; + + /** UpdateThrottlerConfigRequest check_as_check_shard. */ + public check_as_check_shard: boolean; + + /** + * Creates a new UpdateThrottlerConfigRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns UpdateThrottlerConfigRequest instance + */ + public static create(properties?: vtctldata.IUpdateThrottlerConfigRequest): vtctldata.UpdateThrottlerConfigRequest; + + /** + * Encodes the specified UpdateThrottlerConfigRequest message. Does not implicitly {@link vtctldata.UpdateThrottlerConfigRequest.verify|verify} messages. + * @param message UpdateThrottlerConfigRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: vtctldata.IUpdateThrottlerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UpdateThrottlerConfigRequest message, length delimited. Does not implicitly {@link vtctldata.UpdateThrottlerConfigRequest.verify|verify} messages. + * @param message UpdateThrottlerConfigRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: vtctldata.IUpdateThrottlerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UpdateThrottlerConfigRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UpdateThrottlerConfigRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vtctldata.UpdateThrottlerConfigRequest; + + /** + * Decodes an UpdateThrottlerConfigRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UpdateThrottlerConfigRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vtctldata.UpdateThrottlerConfigRequest; + + /** + * Verifies an UpdateThrottlerConfigRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an UpdateThrottlerConfigRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UpdateThrottlerConfigRequest + */ + public static fromObject(object: { [k: string]: any }): vtctldata.UpdateThrottlerConfigRequest; + + /** + * Creates a plain object from an UpdateThrottlerConfigRequest message. Also converts values to other types if specified. + * @param message UpdateThrottlerConfigRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: vtctldata.UpdateThrottlerConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UpdateThrottlerConfigRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an UpdateThrottlerConfigResponse. */ + interface IUpdateThrottlerConfigResponse { + } + + /** Represents an UpdateThrottlerConfigResponse. */ + class UpdateThrottlerConfigResponse implements IUpdateThrottlerConfigResponse { + + /** + * Constructs a new UpdateThrottlerConfigResponse. + * @param [properties] Properties to set + */ + constructor(properties?: vtctldata.IUpdateThrottlerConfigResponse); + + /** + * Creates a new UpdateThrottlerConfigResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns UpdateThrottlerConfigResponse instance + */ + public static create(properties?: vtctldata.IUpdateThrottlerConfigResponse): vtctldata.UpdateThrottlerConfigResponse; + + /** + * Encodes the specified UpdateThrottlerConfigResponse message. Does not implicitly {@link vtctldata.UpdateThrottlerConfigResponse.verify|verify} messages. + * @param message UpdateThrottlerConfigResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: vtctldata.IUpdateThrottlerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UpdateThrottlerConfigResponse message, length delimited. Does not implicitly {@link vtctldata.UpdateThrottlerConfigResponse.verify|verify} messages. + * @param message UpdateThrottlerConfigResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: vtctldata.IUpdateThrottlerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UpdateThrottlerConfigResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UpdateThrottlerConfigResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vtctldata.UpdateThrottlerConfigResponse; + + /** + * Decodes an UpdateThrottlerConfigResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UpdateThrottlerConfigResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vtctldata.UpdateThrottlerConfigResponse; + + /** + * Verifies an UpdateThrottlerConfigResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an UpdateThrottlerConfigResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UpdateThrottlerConfigResponse + */ + public static fromObject(object: { [k: string]: any }): vtctldata.UpdateThrottlerConfigResponse; + + /** + * Creates a plain object from an UpdateThrottlerConfigResponse message. Also converts values to other types if specified. + * @param message UpdateThrottlerConfigResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: vtctldata.UpdateThrottlerConfigResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UpdateThrottlerConfigResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a GetSrvVSchemaRequest. */ interface IGetSrvVSchemaRequest { diff --git a/web/vtadmin/src/proto/vtadmin.js b/web/vtadmin/src/proto/vtadmin.js index 1452864ab22..b5f07f630af 100644 --- a/web/vtadmin/src/proto/vtadmin.js +++ b/web/vtadmin/src/proto/vtadmin.js @@ -98387,6 +98387,464 @@ $root.vtctldata = (function() { return GetSrvKeyspacesResponse; })(); + vtctldata.UpdateThrottlerConfigRequest = (function() { + + /** + * Properties of an UpdateThrottlerConfigRequest. + * @memberof vtctldata + * @interface IUpdateThrottlerConfigRequest + * @property {boolean|null} [enable] UpdateThrottlerConfigRequest enable + * @property {boolean|null} [disable] UpdateThrottlerConfigRequest disable + * @property {number|null} [threshold] UpdateThrottlerConfigRequest threshold + * @property {string|null} [custom_query] UpdateThrottlerConfigRequest custom_query + * @property {boolean|null} [check_as_check_self] UpdateThrottlerConfigRequest check_as_check_self + * @property {boolean|null} [check_as_check_shard] UpdateThrottlerConfigRequest check_as_check_shard + */ + + /** + * Constructs a new UpdateThrottlerConfigRequest. + * @memberof vtctldata + * @classdesc Represents an UpdateThrottlerConfigRequest. + * @implements IUpdateThrottlerConfigRequest + * @constructor + * @param {vtctldata.IUpdateThrottlerConfigRequest=} [properties] Properties to set + */ + function UpdateThrottlerConfigRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UpdateThrottlerConfigRequest enable. + * @member {boolean} enable + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.enable = false; + + /** + * UpdateThrottlerConfigRequest disable. + * @member {boolean} disable + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.disable = false; + + /** + * UpdateThrottlerConfigRequest threshold. + * @member {number} threshold + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.threshold = 0; + + /** + * UpdateThrottlerConfigRequest custom_query. + * @member {string} custom_query + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.custom_query = ""; + + /** + * UpdateThrottlerConfigRequest check_as_check_self. + * @member {boolean} check_as_check_self + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.check_as_check_self = false; + + /** + * UpdateThrottlerConfigRequest check_as_check_shard. + * @member {boolean} check_as_check_shard + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.check_as_check_shard = false; + + /** + * Creates a new UpdateThrottlerConfigRequest instance using the specified properties. + * @function create + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {vtctldata.IUpdateThrottlerConfigRequest=} [properties] Properties to set + * @returns {vtctldata.UpdateThrottlerConfigRequest} UpdateThrottlerConfigRequest instance + */ + UpdateThrottlerConfigRequest.create = function create(properties) { + return new UpdateThrottlerConfigRequest(properties); + }; + + /** + * Encodes the specified UpdateThrottlerConfigRequest message. Does not implicitly {@link vtctldata.UpdateThrottlerConfigRequest.verify|verify} messages. + * @function encode + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {vtctldata.IUpdateThrottlerConfigRequest} message UpdateThrottlerConfigRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UpdateThrottlerConfigRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.enable != null && Object.hasOwnProperty.call(message, "enable")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.enable); + if (message.disable != null && Object.hasOwnProperty.call(message, "disable")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.disable); + if (message.threshold != null && Object.hasOwnProperty.call(message, "threshold")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.threshold); + if (message.custom_query != null && Object.hasOwnProperty.call(message, "custom_query")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.custom_query); + if (message.check_as_check_self != null && Object.hasOwnProperty.call(message, "check_as_check_self")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.check_as_check_self); + if (message.check_as_check_shard != null && Object.hasOwnProperty.call(message, "check_as_check_shard")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.check_as_check_shard); + return writer; + }; + + /** + * Encodes the specified UpdateThrottlerConfigRequest message, length delimited. Does not implicitly {@link vtctldata.UpdateThrottlerConfigRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {vtctldata.IUpdateThrottlerConfigRequest} message UpdateThrottlerConfigRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UpdateThrottlerConfigRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an UpdateThrottlerConfigRequest message from the specified reader or buffer. + * @function decode + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vtctldata.UpdateThrottlerConfigRequest} UpdateThrottlerConfigRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UpdateThrottlerConfigRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vtctldata.UpdateThrottlerConfigRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.enable = reader.bool(); + break; + case 2: + message.disable = reader.bool(); + break; + case 3: + message.threshold = reader.double(); + break; + case 4: + message.custom_query = reader.string(); + break; + case 5: + message.check_as_check_self = reader.bool(); + break; + case 6: + message.check_as_check_shard = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an UpdateThrottlerConfigRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vtctldata.UpdateThrottlerConfigRequest} UpdateThrottlerConfigRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UpdateThrottlerConfigRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an UpdateThrottlerConfigRequest message. + * @function verify + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UpdateThrottlerConfigRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.enable != null && message.hasOwnProperty("enable")) + if (typeof message.enable !== "boolean") + return "enable: boolean expected"; + if (message.disable != null && message.hasOwnProperty("disable")) + if (typeof message.disable !== "boolean") + return "disable: boolean expected"; + if (message.threshold != null && message.hasOwnProperty("threshold")) + if (typeof message.threshold !== "number") + return "threshold: number expected"; + if (message.custom_query != null && message.hasOwnProperty("custom_query")) + if (!$util.isString(message.custom_query)) + return "custom_query: string expected"; + if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) + if (typeof message.check_as_check_self !== "boolean") + return "check_as_check_self: boolean expected"; + if (message.check_as_check_shard != null && message.hasOwnProperty("check_as_check_shard")) + if (typeof message.check_as_check_shard !== "boolean") + return "check_as_check_shard: boolean expected"; + return null; + }; + + /** + * Creates an UpdateThrottlerConfigRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {Object.} object Plain object + * @returns {vtctldata.UpdateThrottlerConfigRequest} UpdateThrottlerConfigRequest + */ + UpdateThrottlerConfigRequest.fromObject = function fromObject(object) { + if (object instanceof $root.vtctldata.UpdateThrottlerConfigRequest) + return object; + var message = new $root.vtctldata.UpdateThrottlerConfigRequest(); + if (object.enable != null) + message.enable = Boolean(object.enable); + if (object.disable != null) + message.disable = Boolean(object.disable); + if (object.threshold != null) + message.threshold = Number(object.threshold); + if (object.custom_query != null) + message.custom_query = String(object.custom_query); + if (object.check_as_check_self != null) + message.check_as_check_self = Boolean(object.check_as_check_self); + if (object.check_as_check_shard != null) + message.check_as_check_shard = Boolean(object.check_as_check_shard); + return message; + }; + + /** + * Creates a plain object from an UpdateThrottlerConfigRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @static + * @param {vtctldata.UpdateThrottlerConfigRequest} message UpdateThrottlerConfigRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UpdateThrottlerConfigRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.enable = false; + object.disable = false; + object.threshold = 0; + object.custom_query = ""; + object.check_as_check_self = false; + object.check_as_check_shard = false; + } + if (message.enable != null && message.hasOwnProperty("enable")) + object.enable = message.enable; + if (message.disable != null && message.hasOwnProperty("disable")) + object.disable = message.disable; + if (message.threshold != null && message.hasOwnProperty("threshold")) + object.threshold = options.json && !isFinite(message.threshold) ? String(message.threshold) : message.threshold; + if (message.custom_query != null && message.hasOwnProperty("custom_query")) + object.custom_query = message.custom_query; + if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) + object.check_as_check_self = message.check_as_check_self; + if (message.check_as_check_shard != null && message.hasOwnProperty("check_as_check_shard")) + object.check_as_check_shard = message.check_as_check_shard; + return object; + }; + + /** + * Converts this UpdateThrottlerConfigRequest to JSON. + * @function toJSON + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + * @returns {Object.} JSON object + */ + UpdateThrottlerConfigRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return UpdateThrottlerConfigRequest; + })(); + + vtctldata.UpdateThrottlerConfigResponse = (function() { + + /** + * Properties of an UpdateThrottlerConfigResponse. + * @memberof vtctldata + * @interface IUpdateThrottlerConfigResponse + */ + + /** + * Constructs a new UpdateThrottlerConfigResponse. + * @memberof vtctldata + * @classdesc Represents an UpdateThrottlerConfigResponse. + * @implements IUpdateThrottlerConfigResponse + * @constructor + * @param {vtctldata.IUpdateThrottlerConfigResponse=} [properties] Properties to set + */ + function UpdateThrottlerConfigResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new UpdateThrottlerConfigResponse instance using the specified properties. + * @function create + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {vtctldata.IUpdateThrottlerConfigResponse=} [properties] Properties to set + * @returns {vtctldata.UpdateThrottlerConfigResponse} UpdateThrottlerConfigResponse instance + */ + UpdateThrottlerConfigResponse.create = function create(properties) { + return new UpdateThrottlerConfigResponse(properties); + }; + + /** + * Encodes the specified UpdateThrottlerConfigResponse message. Does not implicitly {@link vtctldata.UpdateThrottlerConfigResponse.verify|verify} messages. + * @function encode + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {vtctldata.IUpdateThrottlerConfigResponse} message UpdateThrottlerConfigResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UpdateThrottlerConfigResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified UpdateThrottlerConfigResponse message, length delimited. Does not implicitly {@link vtctldata.UpdateThrottlerConfigResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {vtctldata.IUpdateThrottlerConfigResponse} message UpdateThrottlerConfigResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UpdateThrottlerConfigResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an UpdateThrottlerConfigResponse message from the specified reader or buffer. + * @function decode + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vtctldata.UpdateThrottlerConfigResponse} UpdateThrottlerConfigResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UpdateThrottlerConfigResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vtctldata.UpdateThrottlerConfigResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an UpdateThrottlerConfigResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vtctldata.UpdateThrottlerConfigResponse} UpdateThrottlerConfigResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UpdateThrottlerConfigResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an UpdateThrottlerConfigResponse message. + * @function verify + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UpdateThrottlerConfigResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an UpdateThrottlerConfigResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {Object.} object Plain object + * @returns {vtctldata.UpdateThrottlerConfigResponse} UpdateThrottlerConfigResponse + */ + UpdateThrottlerConfigResponse.fromObject = function fromObject(object) { + if (object instanceof $root.vtctldata.UpdateThrottlerConfigResponse) + return object; + return new $root.vtctldata.UpdateThrottlerConfigResponse(); + }; + + /** + * Creates a plain object from an UpdateThrottlerConfigResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @static + * @param {vtctldata.UpdateThrottlerConfigResponse} message UpdateThrottlerConfigResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UpdateThrottlerConfigResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this UpdateThrottlerConfigResponse to JSON. + * @function toJSON + * @memberof vtctldata.UpdateThrottlerConfigResponse + * @instance + * @returns {Object.} JSON object + */ + UpdateThrottlerConfigResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return UpdateThrottlerConfigResponse; + })(); + vtctldata.GetSrvVSchemaRequest = (function() { /** From b536bd0b15973170e11cba1f38e56ee56721ba8c Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 8 Nov 2022 09:22:30 +0200 Subject: [PATCH 59/78] refactored throttler code to its own file Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/serving_graph.go | 46 ----------- go/cmd/vtctldclient/command/throttler.go | 84 ++++++++++++++++++++ 2 files changed, 84 insertions(+), 46 deletions(-) create mode 100644 go/cmd/vtctldclient/command/throttler.go diff --git a/go/cmd/vtctldclient/command/serving_graph.go b/go/cmd/vtctldclient/command/serving_graph.go index 1f303df82f9..899471ed05e 100644 --- a/go/cmd/vtctldclient/command/serving_graph.go +++ b/go/cmd/vtctldclient/command/serving_graph.go @@ -51,14 +51,6 @@ var ( Args: cobra.MinimumNArgs(1), RunE: commandGetSrvKeyspaces, } - // UpdateThrottlerConfig makes a UpdateThrottlerConfig gRPC call to a vtctld. - UpdateThrottlerConfig = &cobra.Command{ - Use: "UpdateThrottlerConfig [--enable|--disable] [--threshold=] [--custom-query=] [--check-as-check-self|--check-as-check-shard] ", - Short: "Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided).", - DisableFlagsInUseLine: true, - Args: cobra.ExactArgs(1), - RunE: commandUpdateThrottlerConfig, - } // GetSrvVSchema makes a GetSrvVSchema gRPC call to a vtctld. GetSrvVSchema = &cobra.Command{ Use: "GetSrvVSchema cell", @@ -148,35 +140,6 @@ func commandGetSrvKeyspaces(cmd *cobra.Command, args []string) error { return nil } -var updateThrottlerConfigOptions = struct { - Enable bool - Disable bool - Threshold float64 - CustomQuery string - CheckAsCheckSelf bool - CheckAsCheckShard bool -}{} - -func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { - cli.FinishedParsing(cmd) - - _, err := client.UpdateThrottlerConfig(commandCtx, &vtctldatapb.UpdateThrottlerConfigRequest{ - Enable: updateThrottlerConfigOptions.Enable, - Disable: updateThrottlerConfigOptions.Disable, - Threshold: updateThrottlerConfigOptions.Threshold, - CustomQuery: updateThrottlerConfigOptions.CustomQuery, - CheckAsCheckSelf: updateThrottlerConfigOptions.CheckAsCheckSelf, - CheckAsCheckShard: updateThrottlerConfigOptions.CheckAsCheckShard, - }) - if err != nil { - return err - } - - fmt.Println("UpdateThrottlerConfig: ok") - - return nil -} - func commandGetSrvVSchema(cmd *cobra.Command, args []string) error { cli.FinishedParsing(cmd) @@ -282,13 +245,4 @@ func init() { RebuildVSchemaGraph.Flags().StringSliceVarP(&rebuildVSchemaGraphOptions.Cells, "cells", "c", nil, "Specifies a comma-separated list of cells to look for tablets.") Root.AddCommand(RebuildVSchemaGraph) - - noValueIndicator := "~" - UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Enable, "enable", false, "Enable the throttler") - UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Disable, "disable", false, "Disable the throttler") - UpdateThrottlerConfig.Flags().Float64Var(&updateThrottlerConfigOptions.Threshold, "threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", noValueIndicator, "custom throttler check query") - UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckSelf, "check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") - UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckShard, "check-as-check-shard", false, "use standard behavior for /throttler/check requests") - Root.AddCommand(UpdateThrottlerConfig) } diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go new file mode 100644 index 00000000000..165e7f939f2 --- /dev/null +++ b/go/cmd/vtctldclient/command/throttler.go @@ -0,0 +1,84 @@ +/* +Copyright 2021 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package command + +import ( + "fmt" + + "github.com/spf13/cobra" + + "vitess.io/vitess/go/cmd/vtctldclient/cli" + + vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata" +) + +const ( + // noValueIndicator helps to differentiate between a "no value given in --custom-query hence don't change it" + // vs. a "change --custom-query to be empty" scenarios. + noValueIndicator = "~" +) + +var ( + // UpdateThrottlerConfig makes a UpdateThrottlerConfig gRPC call to a vtctld. + UpdateThrottlerConfig = &cobra.Command{ + Use: "UpdateThrottlerConfig [--enable|--disable] [--threshold=] [--custom-query=] [--check-as-check-self|--check-as-check-shard] ", + Short: "Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided).", + DisableFlagsInUseLine: true, + Args: cobra.ExactArgs(1), + RunE: commandUpdateThrottlerConfig, + } +) + +var updateThrottlerConfigOptions = struct { + Enable bool + Disable bool + Threshold float64 + CustomQuery string + CheckAsCheckSelf bool + CheckAsCheckShard bool +}{} + +func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { + cli.FinishedParsing(cmd) + + _, err := client.UpdateThrottlerConfig(commandCtx, &vtctldatapb.UpdateThrottlerConfigRequest{ + Enable: updateThrottlerConfigOptions.Enable, + Disable: updateThrottlerConfigOptions.Disable, + Threshold: updateThrottlerConfigOptions.Threshold, + CustomQuery: updateThrottlerConfigOptions.CustomQuery, + CheckAsCheckSelf: updateThrottlerConfigOptions.CheckAsCheckSelf, + CheckAsCheckShard: updateThrottlerConfigOptions.CheckAsCheckShard, + }) + if err != nil { + return err + } + + fmt.Println("UpdateThrottlerConfig: ok") + + return nil +} + +func init() { + + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Enable, "enable", false, "Enable the throttler") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Disable, "disable", false, "Disable the throttler") + UpdateThrottlerConfig.Flags().Float64Var(&updateThrottlerConfigOptions.Threshold, "threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") + UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", noValueIndicator, "custom throttler check query") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckSelf, "check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") + UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckShard, "check-as-check-shard", false, "use standard behavior for /throttler/check requests") + Root.AddCommand(UpdateThrottlerConfig) +} From 33c6aafef8bc27fcaab19a22068591a9fba67ee3 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 8 Nov 2022 09:24:58 +0200 Subject: [PATCH 60/78] simplify: options are of UpdateThrottlerConfigRequest type Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index 165e7f939f2..782cbe9555a 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -17,8 +17,6 @@ limitations under the License. package command import ( - "fmt" - "github.com/spf13/cobra" "vitess.io/vitess/go/cmd/vtctldclient/cli" @@ -43,32 +41,15 @@ var ( } ) -var updateThrottlerConfigOptions = struct { - Enable bool - Disable bool - Threshold float64 - CustomQuery string - CheckAsCheckSelf bool - CheckAsCheckShard bool -}{} +var updateThrottlerConfigOptions vtctldatapb.UpdateThrottlerConfigRequest func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { cli.FinishedParsing(cmd) - _, err := client.UpdateThrottlerConfig(commandCtx, &vtctldatapb.UpdateThrottlerConfigRequest{ - Enable: updateThrottlerConfigOptions.Enable, - Disable: updateThrottlerConfigOptions.Disable, - Threshold: updateThrottlerConfigOptions.Threshold, - CustomQuery: updateThrottlerConfigOptions.CustomQuery, - CheckAsCheckSelf: updateThrottlerConfigOptions.CheckAsCheckSelf, - CheckAsCheckShard: updateThrottlerConfigOptions.CheckAsCheckShard, - }) + _, err := client.UpdateThrottlerConfig(commandCtx, &updateThrottlerConfigOptions) if err != nil { return err } - - fmt.Println("UpdateThrottlerConfig: ok") - return nil } From 8e58298f379587b34c8c6b313ecdc00502caed12 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 8 Nov 2022 09:46:16 +0200 Subject: [PATCH 61/78] added keyspace Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/proto/vtctldata/vtctldata.pb.go | 1326 +++++++++-------- go/vt/proto/vtctldata/vtctldata_vtproto.pb.go | 65 +- proto/vtctldata.proto | 13 +- 3 files changed, 729 insertions(+), 675 deletions(-) diff --git a/go/vt/proto/vtctldata/vtctldata.pb.go b/go/vt/proto/vtctldata/vtctldata.pb.go index b04b435a0af..040f76515b1 100644 --- a/go/vt/proto/vtctldata/vtctldata.pb.go +++ b/go/vt/proto/vtctldata/vtctldata.pb.go @@ -4587,18 +4587,19 @@ type UpdateThrottlerConfigRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Enable instructs to enable the throttler - Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` // Disable instructs to disable the throttler - Disable bool `protobuf:"varint,2,opt,name=disable,proto3" json:"disable,omitempty"` + Disable bool `protobuf:"varint,3,opt,name=disable,proto3" json:"disable,omitempty"` // Threshold for throttler (with no custom query, ie using default query, only positive values are considered) - Threshold float64 `protobuf:"fixed64,3,opt,name=threshold,proto3" json:"threshold,omitempty"` + Threshold float64 `protobuf:"fixed64,4,opt,name=threshold,proto3" json:"threshold,omitempty"` // CustomQuery replaces the default replication lag query - CustomQuery string `protobuf:"bytes,4,opt,name=custom_query,json=customQuery,proto3" json:"custom_query,omitempty"` + CustomQuery string `protobuf:"bytes,5,opt,name=custom_query,json=customQuery,proto3" json:"custom_query,omitempty"` // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health - CheckAsCheckSelf bool `protobuf:"varint,5,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` + CheckAsCheckSelf bool `protobuf:"varint,6,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) - CheckAsCheckShard bool `protobuf:"varint,6,opt,name=check_as_check_shard,json=checkAsCheckShard,proto3" json:"check_as_check_shard,omitempty"` + CheckAsCheckShard bool `protobuf:"varint,7,opt,name=check_as_check_shard,json=checkAsCheckShard,proto3" json:"check_as_check_shard,omitempty"` } func (x *UpdateThrottlerConfigRequest) Reset() { @@ -4633,6 +4634,13 @@ func (*UpdateThrottlerConfigRequest) Descriptor() ([]byte, []int) { return file_vtctldata_proto_rawDescGZIP(), []int{78} } +func (x *UpdateThrottlerConfigRequest) GetKeyspace() string { + if x != nil { + return x.Keyspace + } + return "" +} + func (x *UpdateThrottlerConfigRequest) GetEnable() bool { if x != nil { return x.Enable @@ -11296,586 +11304,683 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf1, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, - 0x0a, 0x0c, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, - 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, - 0x65, 0x6c, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x56, 0x0a, 0x0d, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x53, 0x0a, 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x28, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, + 0x65, 0x6c, 0x66, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, + 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, + 0x6c, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x72, + 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, + 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, + 0x22, 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x73, + 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x1a, 0x53, 0x0a, 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, + 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x0e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, + 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, + 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x63, + 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x74, 0x63, 0x74, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, + 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, + 0x22, 0x2f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x42, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x76, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, - 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2b, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x72, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x72, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, + 0x64, 0x12, 0x52, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x17, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x15, 0x77, + 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, + 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x22, 0x42, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x07, 0x76, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x1b, 0x50, + 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, + 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x5f, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x52, 0x0c, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, + 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x1d, 0x0a, + 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x13, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, + 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x52, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x5f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x17, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, - 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x42, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, - 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, - 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, - 0x02, 0x0a, 0x1b, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, - 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, - 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0c, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, - 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x1b, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, + 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x52, + 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, + 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, + 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, - 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, - 0x1c, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, - 0x1a, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, - 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, - 0x83, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, - 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, - 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, - 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x43, 0x0a, + 0x19, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, + 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, + 0x73, 0x69, 0x76, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x46, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x0b, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0a, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x75, + 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x18, 0x0a, + 0x16, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x75, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xc8, 0x01, + 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x53, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x1f, 0x53, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x72, 0x0a, 0x1f, + 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x22, 0x43, 0x0a, 0x19, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, - 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, - 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, - 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, - 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, - 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, - 0x2d, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, - 0x01, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, - 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, - 0x0a, 0x15, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, - 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, - 0x11, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, - 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, - 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, + 0x22, 0x49, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1c, + 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x35, + 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, - 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, - 0x1e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, + 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x46, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x62, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, - 0x1f, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x22, 0x72, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, - 0x8e, 0x02, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x20, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x22, 0xaa, 0x03, 0x0a, 0x21, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x5f, 0x0a, + 0x18, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4e, + 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, + 0x01, 0x0a, 0x1d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x22, 0x46, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, - 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, - 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, + 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x54, 0x0a, 0x20, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, + 0x0a, 0x12, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2c, + 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, + 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, + 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0xaa, 0x03, 0x0a, 0x21, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, - 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, - 0x70, 0x1a, 0x5f, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x4e, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x7c, 0x0a, 0x12, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x15, 0x0a, 0x13, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x16, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x21, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, + 0xc6, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6f, 0x6c, + 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, + 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x65, 0x0a, 0x18, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, + 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x22, 0x34, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, + 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x69, 0x0a, 0x16, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x4b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, + 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xd8, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, + 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x56, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, 0x02, 0x0a, 0x1e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, - 0x53, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x52, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x52, 0x0a, 0x21, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, - 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x0a, 0x6f, 0x6c, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, - 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, - 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x65, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, - 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x34, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, - 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, - 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, - 0x69, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x61, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x68, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, + 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x4f, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x16, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, + 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x10, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, @@ -11884,110 +11989,15 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, - 0x02, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, - 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, - 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, - 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, - 0x98, 0x01, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x4a, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, - 0x4d, 0x4f, 0x56, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, - 0x58, 0x10, 0x02, 0x42, 0x28, 0x5a, 0x26, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, - 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x38, 0x01, 0x2a, 0x4a, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, + 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x42, + 0x28, 0x5a, 0x26, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go index ac5247e449e..8b39a69b63f 100644 --- a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go +++ b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go @@ -4576,7 +4576,7 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- - dAtA[i] = 0x30 + dAtA[i] = 0x38 } if m.CheckAsCheckSelf { i-- @@ -4586,20 +4586,20 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- - dAtA[i] = 0x28 + dAtA[i] = 0x30 } if len(m.CustomQuery) > 0 { i -= len(m.CustomQuery) copy(dAtA[i:], m.CustomQuery) i = encodeVarint(dAtA, i, uint64(len(m.CustomQuery))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } if m.Threshold != 0 { i -= 8 binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Threshold)))) i-- - dAtA[i] = 0x19 + dAtA[i] = 0x21 } if m.Disable { i-- @@ -4609,7 +4609,7 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- - dAtA[i] = 0x10 + dAtA[i] = 0x18 } if m.Enable { i-- @@ -4619,7 +4619,14 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- - dAtA[i] = 0x8 + dAtA[i] = 0x10 + } + if len(m.Keyspace) > 0 { + i -= len(m.Keyspace) + copy(dAtA[i:], m.Keyspace) + i = encodeVarint(dAtA, i, uint64(len(m.Keyspace))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -11466,6 +11473,10 @@ func (m *UpdateThrottlerConfigRequest) SizeVT() (n int) { } var l int _ = l + l = len(m.Keyspace) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } if m.Enable { n += 2 } @@ -24140,6 +24151,38 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Keyspace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Enable", wireType) } @@ -24159,7 +24202,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } } m.Enable = bool(v != 0) - case 2: + case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Disable", wireType) } @@ -24179,7 +24222,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } } m.Disable = bool(v != 0) - case 3: + case 4: if wireType != 1 { return fmt.Errorf("proto: wrong wireType = %d for field Threshold", wireType) } @@ -24190,7 +24233,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 m.Threshold = float64(math.Float64frombits(v)) - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CustomQuery", wireType) } @@ -24222,7 +24265,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } m.CustomQuery = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 6: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckSelf", wireType) } @@ -24242,7 +24285,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } } m.CheckAsCheckSelf = bool(v != 0) - case 6: + case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckShard", wireType) } diff --git a/proto/vtctldata.proto b/proto/vtctldata.proto index 10cc3fd13ad..3d942a7d788 100644 --- a/proto/vtctldata.proto +++ b/proto/vtctldata.proto @@ -670,18 +670,19 @@ message GetSrvKeyspacesResponse { } message UpdateThrottlerConfigRequest { + string keyspace = 1; // Enable instructs to enable the throttler - bool enable = 1; + bool enable = 2; // Disable instructs to disable the throttler - bool disable = 2; + bool disable = 3; // Threshold for throttler (with no custom query, ie using default query, only positive values are considered) - double threshold = 3; + double threshold = 4; // CustomQuery replaces the default replication lag query - string custom_query = 4; + string custom_query = 5; // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health - bool check_as_check_self=5; + bool check_as_check_self=6; // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) - bool check_as_check_shard=6; + bool check_as_check_shard=7; } message UpdateThrottlerConfigResponse { From fbb28ed4aa9e583f7f16d03b14a859b84b7933e1 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 8 Nov 2022 09:46:50 +0200 Subject: [PATCH 62/78] implementing server-side UpdateThrottlerConfig Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 2 + go/vt/vtctl/grpcvtctldserver/server.go | 57 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index 782cbe9555a..bc25082dde4 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -44,8 +44,10 @@ var ( var updateThrottlerConfigOptions vtctldatapb.UpdateThrottlerConfigRequest func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { + keyspace := cmd.Flags().Arg(0) cli.FinishedParsing(cmd) + updateThrottlerConfigOptions.Keyspace = keyspace _, err := client.UpdateThrottlerConfig(commandCtx, &updateThrottlerConfigOptions) if err != nil { return err diff --git a/go/vt/vtctl/grpcvtctldserver/server.go b/go/vt/vtctl/grpcvtctldserver/server.go index c635479171c..a552f83131d 100644 --- a/go/vt/vtctl/grpcvtctldserver/server.go +++ b/go/vt/vtctl/grpcvtctldserver/server.go @@ -1552,6 +1552,63 @@ func (s *VtctldServer) GetSrvKeyspaces(ctx context.Context, req *vtctldatapb.Get }, nil } +// UpdateThrottlerConfig updates throttler config for all cells +func (s *VtctldServer) UpdateThrottlerConfig(ctx context.Context, req *vtctldatapb.UpdateThrottlerConfigRequest) (resp *vtctldatapb.UpdateThrottlerConfigResponse, err error) { + span, ctx := trace.NewSpan(ctx, "VtctldServer.UpdateThrottlerConfig") + defer span.Finish() + + defer panicHandler(&err) + + if req.Enable && req.Disable { + return nil, fmt.Errorf("--enable and --disable are mutually exclusive") + } + if req.CheckAsCheckSelf && req.CheckAsCheckShard { + return nil, fmt.Errorf("--check-as-check-self and --check-as-check-shard are mutually exclusive") + } + + noValueIndicator := "~" + update := func(throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig { + if throttlerConfig == nil { + throttlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} + } + if req.CustomQuery != noValueIndicator { + // custom query provided + throttlerConfig.CustomQuery = req.CustomQuery + throttlerConfig.Threshold = req.Threshold // allowed to be zero/negative because who knows what kind of custom query this is + } else { + // no custom query, throttler works by querying replication lag. We only allow positive values + if req.Threshold > 0 { + throttlerConfig.Threshold = req.Threshold + } + } + if req.Enable { + throttlerConfig.Enabled = true + } + if req.Disable { + throttlerConfig.Enabled = false + } + if req.CheckAsCheckSelf { + throttlerConfig.CheckAsCheckSelf = true + } + if req.CheckAsCheckShard { + throttlerConfig.CheckAsCheckSelf = false + } + return throttlerConfig + } + + ctx, unlock, lockErr := s.ts.LockKeyspace(ctx, req.Keyspace, "UpdateThrottlerConfig") + if lockErr != nil { + return nil, lockErr + } + defer unlock(&err) + + _, err = s.ts.UpdateSrvKeyspaceThrottlerConfig(ctx, req.Keyspace, []string{}, update) + if err != nil { + return nil, err + } + return &vtctldatapb.UpdateThrottlerConfigResponse{}, nil +} + // GetSrvVSchema is part of the vtctlservicepb.VtctldServer interface. func (s *VtctldServer) GetSrvVSchema(ctx context.Context, req *vtctldatapb.GetSrvVSchemaRequest) (resp *vtctldatapb.GetSrvVSchemaResponse, err error) { span, ctx := trace.NewSpan(ctx, "VtctldServer.GetSrvVSchema") From 93ed7c019530bc352e635ef49139f0ac09fc7af4 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 8 Nov 2022 17:39:30 +0200 Subject: [PATCH 63/78] validating that vtctldclient works Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletmanager/throttler/throttler_test.go | 1 + .../throttler_topo/throttler_test.go | 35 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go index e0d5c867472..1eb9ff22fcd 100644 --- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go @@ -188,6 +188,7 @@ func waitForThrottleCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode require.NoError(t, err) assert.Equal(t, wantCode, resp.StatusCode, "body: %v", string(b)) + return default: time.Sleep(time.Second) } diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 0b1820fd6c0..759d840b4ee 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -149,6 +149,7 @@ func TestMain(m *testing.M) { Host: clusterInstance.Hostname, Port: clusterInstance.VtgateMySQLPort, } + clusterInstance.VtctldClientProcess = *cluster.VtctldClientProcessInstance("localhost", clusterInstance.VtctldProcess.GrpcPort, clusterInstance.TmpDirectory) return m.Run() }() @@ -156,11 +157,12 @@ func TestMain(m *testing.M) { } // updateThrottlerConfig runs vtctlclient UpdateThrottlerConfig -func updateThrottlerConfig(enable bool, disable bool, threshold float64, metricsQuery string) (result string, err error) { - args := []string{ - "--", - "UpdateThrottlerConfig", +func updateThrottlerConfig(enable bool, disable bool, threshold float64, metricsQuery string, viaVtctldClient bool) (result string, err error) { + args := []string{} + if !viaVtctldClient { + args = append(args, "--") } + args = append(args, "UpdateThrottlerConfig") if enable { args = append(args, "--enable") } @@ -177,6 +179,9 @@ func updateThrottlerConfig(enable bool, disable bool, threshold float64, metrics args = append(args, "--check-as-check-shard") } args = append(args, keyspaceName) + if viaVtctldClient { + return clusterInstance.VtctldClientProcess.ExecuteCommandWithOutput(args...) + } return clusterInstance.VtctlclientProcess.ExecuteCommandWithOutput(args...) } @@ -233,6 +238,7 @@ func waitForThrottleCheckStatus(t *testing.T, tablet *cluster.Vttablet, wantCode require.NoError(t, err) assert.Equal(t, wantCode, resp.StatusCode, "body: %v", string(b)) + return default: time.Sleep(time.Second) } @@ -266,17 +272,15 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("enabling throttler with low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, unreasonablyLowThreshold.Seconds(), "") + _, err := updateThrottlerConfig(true, false, unreasonablyLowThreshold.Seconds(), "", false) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler", func(t *testing.T) { waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("disabling throttler", func(t *testing.T) { - output, err := updateThrottlerConfig(false, true, unreasonablyLowThreshold.Seconds(), "") + _, err := updateThrottlerConfig(false, true, unreasonablyLowThreshold.Seconds(), "", false) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating OK response from disabled throttler, again", func(t *testing.T) { resp, err := throttleCheck(primaryTablet, false) @@ -284,25 +288,22 @@ func TestInitialThrottler(t *testing.T) { assert.Equal(t, http.StatusOK, resp.StatusCode) }) t.Run("enabling throttler, again", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, 0, "") + _, err := updateThrottlerConfig(true, false, 0, "", true) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler, again", func(t *testing.T) { waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) }) t.Run("setting high threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(false, false, extremelyHighThreshold.Seconds(), "") + _, err := updateThrottlerConfig(false, false, extremelyHighThreshold.Seconds(), "", true) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating OK response from throttler with high threshold", func(t *testing.T) { waitForThrottleCheckStatus(t, primaryTablet, http.StatusOK) }) t.Run("setting low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds(), "") + _, err := updateThrottlerConfig(false, false, throttlerThreshold.Seconds(), "", true) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating pushback response from throttler on low threshold", func(t *testing.T) { waitForThrottleCheckStatus(t, primaryTablet, http.StatusTooManyRequests) @@ -423,9 +424,8 @@ func TestCustomQuery(t *testing.T) { defer cluster.PanicHandler(t) t.Run("enabling throttler with low threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, float64(customThreshold), customQuery) + _, err := updateThrottlerConfig(true, false, float64(customThreshold), customQuery, false) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("validating OK response from throttler with custom query", func(t *testing.T) { resp, err := throttleCheck(primaryTablet, false) @@ -482,9 +482,8 @@ func TestRestoreDefaultQuery(t *testing.T) { defer cluster.PanicHandler(t) t.Run("enabling throttler with standard threshold", func(t *testing.T) { - output, err := updateThrottlerConfig(true, false, throttlerThreshold.Seconds(), "") + _, err := updateThrottlerConfig(true, false, throttlerThreshold.Seconds(), "", false) assert.NoError(t, err) - assert.NotEmpty(t, output) }) t.Run("requesting heartbeats", func(t *testing.T) { _ = warmUpHeartbeat(t) From 9d21abf3197802e1353c8b39c7cc34ae16fd752b Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 07:02:15 +0200 Subject: [PATCH 64/78] copyright year Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index bc25082dde4..5c2ef8ce191 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -1,5 +1,5 @@ /* -Copyright 2021 The Vitess Authors. +Copyright 2022 The Vitess Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 1f902edb7a8aa1702fe0ba46a2ffeac99e5c64af Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 09:46:12 +0200 Subject: [PATCH 65/78] safer Open() flow that does not block execution Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../tabletserver/throttle/throttler.go | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index f9f94c92f49..9c180829db1 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -347,6 +347,8 @@ func (throttler *Throttler) IsEnabled() bool { return atomic.LoadInt64(&throttler.isEnabled) > 0 } +// Enable activates the throttler probes; when enabled, the throttler responds to check queries based on +// the collected metrics. func (throttler *Throttler) Enable(ctx context.Context) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() @@ -366,6 +368,8 @@ func (throttler *Throttler) Enable(ctx context.Context) bool { return true } +// Disable deactivates the probes and associated operations. When disabled, the throttler reponds to check +// queries with "200 OK" irrespective of lag or any other metrics. func (throttler *Throttler) Disable(ctx context.Context) bool { throttler.enableMutex.Lock() defer throttler.enableMutex.Unlock() @@ -379,7 +383,6 @@ func (throttler *Throttler) Disable(ctx context.Context) bool { throttler.aggregatedMetrics.Flush() throttler.recentApps.Flush() throttler.nonLowPriorityAppRequestsThrottled.Flush() - throttler.nonLowPriorityAppRequestsThrottled.Flush() // we do not flush throttler.throttledApps because this is data submitted by the user; the user expects the data to survive a disable+enable throttler.cancelEnableContext() @@ -401,12 +404,39 @@ func (throttler *Throttler) Open() error { throttler.ThrottleApp("always-throttled-app", time.Now().Add(time.Hour*24*365*10), defaultThrottleRatio) if throttlerConfigViaTopo { - throttlerConfig, err := throttler.readThrottlerConfig(ctx) - if err != nil { - return err - } - throttler.applyThrottlerConfig(ctx, throttlerConfig) // may issue an Enable + // We want to read throttler config from topo and apply it. + // But also, we're in an Open() function, which blocks state manager's operation, and affects + // opening of all other components. We thus read the throttler config in the background. + // However, we want to handle a situation where the read errors out. + // So we kick a loop that keeps retrying reading the config, for as long as this throttler is open. + go func() { + retryTicker := time.NewTicker(time.Minute) + defer retryTicker.Stop() + for { + if atomic.LoadInt64(&throttler.isOpen) == 0 { + // closed down. No need to keep retrying + return + } + + throttlerConfig, err := throttler.readThrottlerConfig(ctx) + if err == nil { + // it's possible that during a retry-sleep, the throttler is closed and opened again, leading + // to two (or more) instances of this goroutine. That's not a big problem; it's fine if all + // attempt to read the throttler config; but we just want to ensure they don't step on each other + // while applying the changes. + throttler.initMutex.Lock() + defer throttler.initMutex.Unlock() + + throttler.applyThrottlerConfig(ctx, throttlerConfig) // may issue an Enable + return + } + log.Errorf("Throttler.Open(): error reading throttler config. Will retry in 1 minute. Err=%+v", err) + <-retryTicker.C + } + }() } else { + // backwards-cmpatible: check for --enable-lag-throttler flag in vttablet + // this will be removed in a future version if throttler.env.Config().EnableLagThrottler { go throttler.Enable(ctx) } From ee8ac2e263c687f3a8fcd19fc0cd75bf04b40be7 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 12:13:53 +0200 Subject: [PATCH 66/78] expected CLI Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vtctldclient.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/go/flags/endtoend/vtctldclient.txt b/go/flags/endtoend/vtctldclient.txt index 9fd5a44f7b5..2b6f0ea6c83 100644 --- a/go/flags/endtoend/vtctldclient.txt +++ b/go/flags/endtoend/vtctldclient.txt @@ -79,6 +79,7 @@ Available Commands: TabletExternallyReparented Updates the topology record for the tablet's shard to acknowledge that an external tool made this tablet the primary. UpdateCellInfo Updates the content of a CellInfo with the provided parameters, creating the CellInfo if it does not exist. UpdateCellsAlias Updates the content of a CellsAlias with the provided parameters, creating the CellsAlias if it does not exist. + UpdateThrottlerConfig Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided). Validate Validates that all nodes reachable from the global replication graph, as well as all tablets in discoverable cells, are consistent. ValidateKeyspace Validates that all nodes reachable from the specified keyspace are consistent. ValidateSchemaKeyspace Validates that the schema on the primary tablet for shard 0 matches the schema on all other tablets in the keyspace. From 07ba21b3dbd19479de8cf7aa11654cdd35c700e7 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 12:14:58 +0200 Subject: [PATCH 67/78] vt admin proto Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- web/vtadmin/src/proto/vtadmin.d.ts | 6 ++++ web/vtadmin/src/proto/vtadmin.js | 44 ++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/web/vtadmin/src/proto/vtadmin.d.ts b/web/vtadmin/src/proto/vtadmin.d.ts index b26edb53ffe..38edb88bb42 100644 --- a/web/vtadmin/src/proto/vtadmin.d.ts +++ b/web/vtadmin/src/proto/vtadmin.d.ts @@ -41442,6 +41442,9 @@ export namespace vtctldata { /** Properties of an UpdateThrottlerConfigRequest. */ interface IUpdateThrottlerConfigRequest { + /** UpdateThrottlerConfigRequest keyspace */ + keyspace?: (string|null); + /** UpdateThrottlerConfigRequest enable */ enable?: (boolean|null); @@ -41470,6 +41473,9 @@ export namespace vtctldata { */ constructor(properties?: vtctldata.IUpdateThrottlerConfigRequest); + /** UpdateThrottlerConfigRequest keyspace. */ + public keyspace: string; + /** UpdateThrottlerConfigRequest enable. */ public enable: boolean; diff --git a/web/vtadmin/src/proto/vtadmin.js b/web/vtadmin/src/proto/vtadmin.js index b5f07f630af..fd54d7d8917 100644 --- a/web/vtadmin/src/proto/vtadmin.js +++ b/web/vtadmin/src/proto/vtadmin.js @@ -98393,6 +98393,7 @@ $root.vtctldata = (function() { * Properties of an UpdateThrottlerConfigRequest. * @memberof vtctldata * @interface IUpdateThrottlerConfigRequest + * @property {string|null} [keyspace] UpdateThrottlerConfigRequest keyspace * @property {boolean|null} [enable] UpdateThrottlerConfigRequest enable * @property {boolean|null} [disable] UpdateThrottlerConfigRequest disable * @property {number|null} [threshold] UpdateThrottlerConfigRequest threshold @@ -98416,6 +98417,14 @@ $root.vtctldata = (function() { this[keys[i]] = properties[keys[i]]; } + /** + * UpdateThrottlerConfigRequest keyspace. + * @member {string} keyspace + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.keyspace = ""; + /** * UpdateThrottlerConfigRequest enable. * @member {boolean} enable @@ -98488,18 +98497,20 @@ $root.vtctldata = (function() { UpdateThrottlerConfigRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.keyspace != null && Object.hasOwnProperty.call(message, "keyspace")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.keyspace); if (message.enable != null && Object.hasOwnProperty.call(message, "enable")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.enable); + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.enable); if (message.disable != null && Object.hasOwnProperty.call(message, "disable")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.disable); + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.disable); if (message.threshold != null && Object.hasOwnProperty.call(message, "threshold")) - writer.uint32(/* id 3, wireType 1 =*/25).double(message.threshold); + writer.uint32(/* id 4, wireType 1 =*/33).double(message.threshold); if (message.custom_query != null && Object.hasOwnProperty.call(message, "custom_query")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.custom_query); + writer.uint32(/* id 5, wireType 2 =*/42).string(message.custom_query); if (message.check_as_check_self != null && Object.hasOwnProperty.call(message, "check_as_check_self")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.check_as_check_self); + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.check_as_check_self); if (message.check_as_check_shard != null && Object.hasOwnProperty.call(message, "check_as_check_shard")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.check_as_check_shard); + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.check_as_check_shard); return writer; }; @@ -98535,21 +98546,24 @@ $root.vtctldata = (function() { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.enable = reader.bool(); + message.keyspace = reader.string(); break; case 2: - message.disable = reader.bool(); + message.enable = reader.bool(); break; case 3: - message.threshold = reader.double(); + message.disable = reader.bool(); break; case 4: - message.custom_query = reader.string(); + message.threshold = reader.double(); break; case 5: - message.check_as_check_self = reader.bool(); + message.custom_query = reader.string(); break; case 6: + message.check_as_check_self = reader.bool(); + break; + case 7: message.check_as_check_shard = reader.bool(); break; default: @@ -98587,6 +98601,9 @@ $root.vtctldata = (function() { UpdateThrottlerConfigRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.keyspace != null && message.hasOwnProperty("keyspace")) + if (!$util.isString(message.keyspace)) + return "keyspace: string expected"; if (message.enable != null && message.hasOwnProperty("enable")) if (typeof message.enable !== "boolean") return "enable: boolean expected"; @@ -98620,6 +98637,8 @@ $root.vtctldata = (function() { if (object instanceof $root.vtctldata.UpdateThrottlerConfigRequest) return object; var message = new $root.vtctldata.UpdateThrottlerConfigRequest(); + if (object.keyspace != null) + message.keyspace = String(object.keyspace); if (object.enable != null) message.enable = Boolean(object.enable); if (object.disable != null) @@ -98649,6 +98668,7 @@ $root.vtctldata = (function() { options = {}; var object = {}; if (options.defaults) { + object.keyspace = ""; object.enable = false; object.disable = false; object.threshold = 0; @@ -98656,6 +98676,8 @@ $root.vtctldata = (function() { object.check_as_check_self = false; object.check_as_check_shard = false; } + if (message.keyspace != null && message.hasOwnProperty("keyspace")) + object.keyspace = message.keyspace; if (message.enable != null && message.hasOwnProperty("enable")) object.enable = message.enable; if (message.disable != null && message.hasOwnProperty("disable")) From 65b4b455084105dcdcd717ed1b48f4e9d51344c4 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 15:09:55 +0200 Subject: [PATCH 68/78] CustomQuerySet: identify existence of flag Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 10 +- go/vt/proto/vtctldata/vtctldata.pb.go | 1295 +++++++++-------- go/vt/proto/vtctldata/vtctldata_vtproto.pb.go | 37 +- go/vt/vtctl/grpcvtctldserver/server.go | 3 +- go/vt/vtctl/vtctl.go | 6 +- proto/vtctldata.proto | 6 +- 6 files changed, 698 insertions(+), 659 deletions(-) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index 5c2ef8ce191..a4d7d3d9dc5 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -24,12 +24,6 @@ import ( vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata" ) -const ( - // noValueIndicator helps to differentiate between a "no value given in --custom-query hence don't change it" - // vs. a "change --custom-query to be empty" scenarios. - noValueIndicator = "~" -) - var ( // UpdateThrottlerConfig makes a UpdateThrottlerConfig gRPC call to a vtctld. UpdateThrottlerConfig = &cobra.Command{ @@ -56,11 +50,11 @@ func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { } func init() { - UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Enable, "enable", false, "Enable the throttler") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Disable, "disable", false, "Disable the throttler") UpdateThrottlerConfig.Flags().Float64Var(&updateThrottlerConfigOptions.Threshold, "threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", noValueIndicator, "custom throttler check query") + updateThrottlerConfigOptions.CustomQuerySet = UpdateThrottlerConfig.Flags().Changed("custom-query") + UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", "", "custom throttler check query") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckSelf, "check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckShard, "check-as-check-shard", false, "use standard behavior for /throttler/check requests") Root.AddCommand(UpdateThrottlerConfig) diff --git a/go/vt/proto/vtctldata/vtctldata.pb.go b/go/vt/proto/vtctldata/vtctldata.pb.go index 040f76515b1..abd5d885d15 100644 --- a/go/vt/proto/vtctldata/vtctldata.pb.go +++ b/go/vt/proto/vtctldata/vtctldata.pb.go @@ -4596,10 +4596,12 @@ type UpdateThrottlerConfigRequest struct { Threshold float64 `protobuf:"fixed64,4,opt,name=threshold,proto3" json:"threshold,omitempty"` // CustomQuery replaces the default replication lag query CustomQuery string `protobuf:"bytes,5,opt,name=custom_query,json=customQuery,proto3" json:"custom_query,omitempty"` + // CustomQuerySet indicates that the value of CustomQuery has changed + CustomQuerySet bool `protobuf:"varint,6,opt,name=custom_query_set,json=customQuerySet,proto3" json:"custom_query_set,omitempty"` // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health - CheckAsCheckSelf bool `protobuf:"varint,6,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` + CheckAsCheckSelf bool `protobuf:"varint,7,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) - CheckAsCheckShard bool `protobuf:"varint,7,opt,name=check_as_check_shard,json=checkAsCheckShard,proto3" json:"check_as_check_shard,omitempty"` + CheckAsCheckShard bool `protobuf:"varint,8,opt,name=check_as_check_shard,json=checkAsCheckShard,proto3" json:"check_as_check_shard,omitempty"` } func (x *UpdateThrottlerConfigRequest) Reset() { @@ -4669,6 +4671,13 @@ func (x *UpdateThrottlerConfigRequest) GetCustomQuery() string { return "" } +func (x *UpdateThrottlerConfigRequest) GetCustomQuerySet() bool { + if x != nil { + return x.CustomQuerySet + } + return false +} + func (x *UpdateThrottlerConfigRequest) GetCheckAsCheckSelf() bool { if x != nil { return x.CheckAsCheckSelf @@ -11304,7 +11313,7 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, @@ -11315,576 +11324,609 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x65, 0x6c, 0x66, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, - 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, - 0x6c, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x72, - 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, - 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, - 0x22, 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x73, - 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x74, 0x12, 0x2d, + 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2f, 0x0a, + 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0x1f, + 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x4e, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, + 0x0a, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x2d, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x1a, 0x53, 0x0a, 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, - 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x0e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x63, - 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x74, 0x63, 0x74, - 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, - 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x54, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, - 0x22, 0x2f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x73, 0x72, 0x76, 0x5f, 0x76, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x56, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0b, 0x73, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x53, 0x0a, + 0x10, 0x53, 0x72, 0x76, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x72, 0x76, + 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0x42, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x76, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, + 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2a, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x2c, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x65, + 0x6c, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x43, 0x65, + 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x52, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x17, 0x70, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x15, 0x77, - 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, - 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x22, 0x42, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x1b, 0x50, - 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, - 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x5f, 0x70, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x52, 0x0c, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x6e, 0x6e, - 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, - 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, - 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x1d, 0x0a, - 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x13, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, - 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x1b, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, - 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x52, - 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, - 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, - 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x43, 0x0a, - 0x19, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, - 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2c, 0x0a, 0x08, 0x76, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x76, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x52, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x6e, + 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0xfb, 0x01, + 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x52, 0x0a, 0x1a, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x17, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, + 0x6c, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x42, 0x0a, 0x18, 0x49, + 0x6e, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, + 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x4d, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x14, + 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x1b, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, - 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, - 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, - 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, - 0x73, 0x69, 0x76, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x46, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, + 0x0a, 0x0d, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0c, 0x61, 0x76, + 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x15, 0x77, 0x61, + 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x61, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x0b, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0a, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x52, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x75, - 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x18, 0x0a, - 0x16, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x61, 0x72, 0x64, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x5f, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, + 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x61, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, + 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, + 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x75, 0x72, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xc8, 0x01, - 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x52, + 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x16, 0x0a, 0x14, + 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x22, 0x46, 0x0a, 0x1c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x5f, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x19, 0x52, 0x65, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x7f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, - 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x53, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, + 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, + 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, - 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x1f, 0x53, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x72, 0x0a, 0x1f, - 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, - 0x22, 0x49, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1c, - 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x19, + 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x43, 0x65, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x52, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x22, 0x7b, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, + 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, + 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x35, - 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, - 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x46, 0x0a, 0x1d, - 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x24, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x75, 0x6e, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, + 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x75, 0x6e, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x44, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x22, 0x55, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, + 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c, 0x6c, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, + 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x72, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, + 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x20, 0x53, 0x65, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, + 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x62, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x20, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x22, 0xaa, 0x03, 0x0a, 0x21, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x5f, 0x0a, - 0x18, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4e, - 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, - 0x01, 0x0a, 0x1d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, + 0x6e, 0x69, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x46, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x6a, + 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, + 0x74, 0x57, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x20, 0x0a, 0x1e, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, - 0x0a, 0x12, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, - 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2c, - 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, - 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x1a, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x6c, 0x6c, 0x22, + 0x54, 0x0a, 0x1b, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x20, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0xaa, 0x03, 0x0a, 0x21, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x78, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x45, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x5f, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4e, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x6f, + 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, 0x0a, 0x12, 0x53, 0x6c, 0x65, 0x65, + 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x74, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, + 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x08, + 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, + 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, - 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x16, - 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x21, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, - 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, - 0xc6, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, - 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6f, 0x6c, - 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x65, 0x0a, 0x18, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, - 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x22, 0x34, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, - 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x69, 0x0a, 0x16, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, - 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x64, 0x22, 0x42, 0x0a, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, + 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, + 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x21, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x22, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, + 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, + 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x6f, 0x6c, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2f, 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, + 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x22, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, + 0x0a, 0x09, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x64, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, + 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, + 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x65, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x5f, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, + 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x0a, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x34, 0x0a, 0x0f, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, + 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x4b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x69, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x42, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x58, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, + 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, + 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, + 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, + 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, + 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, 0x02, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x76, 0x74, + 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, @@ -11894,110 +11936,79 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xd8, 0x01, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6b, 0x69, - 0x70, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x6f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x56, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x88, 0x02, 0x0a, 0x1e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3d, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x74, 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x6b, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x68, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x76, 0x74, - 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, - 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x31, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x4f, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0x3c, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x8a, 0x02, + 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x16, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, - 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x10, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, - 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x2a, 0x4a, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x52, 0x45, 0x41, - 0x54, 0x45, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x42, - 0x28, 0x5a, 0x26, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, - 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x10, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x1b, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, + 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x42, 0x79, 0x53, 0x68, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x4a, 0x0a, + 0x15, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x4f, 0x4b, + 0x55, 0x50, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x02, 0x42, 0x28, 0x5a, 0x26, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, + 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go index 8b39a69b63f..03a45c2e118 100644 --- a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go +++ b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go @@ -4576,7 +4576,7 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- - dAtA[i] = 0x38 + dAtA[i] = 0x40 } if m.CheckAsCheckSelf { i-- @@ -4586,6 +4586,16 @@ func (m *UpdateThrottlerConfigRequest) MarshalToSizedBufferVT(dAtA []byte) (int, dAtA[i] = 0 } i-- + dAtA[i] = 0x38 + } + if m.CustomQuerySet { + i-- + if m.CustomQuerySet { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- dAtA[i] = 0x30 } if len(m.CustomQuery) > 0 { @@ -11490,6 +11500,9 @@ func (m *UpdateThrottlerConfigRequest) SizeVT() (n int) { if l > 0 { n += 1 + l + sov(uint64(l)) } + if m.CustomQuerySet { + n += 2 + } if m.CheckAsCheckSelf { n += 2 } @@ -24266,6 +24279,26 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { m.CustomQuery = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomQuerySet", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CustomQuerySet = bool(v != 0) + case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckSelf", wireType) } @@ -24285,7 +24318,7 @@ func (m *UpdateThrottlerConfigRequest) UnmarshalVT(dAtA []byte) error { } } m.CheckAsCheckSelf = bool(v != 0) - case 7: + case 8: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CheckAsCheckShard", wireType) } diff --git a/go/vt/vtctl/grpcvtctldserver/server.go b/go/vt/vtctl/grpcvtctldserver/server.go index a552f83131d..4fa693ff6f5 100644 --- a/go/vt/vtctl/grpcvtctldserver/server.go +++ b/go/vt/vtctl/grpcvtctldserver/server.go @@ -1566,12 +1566,11 @@ func (s *VtctldServer) UpdateThrottlerConfig(ctx context.Context, req *vtctldata return nil, fmt.Errorf("--check-as-check-self and --check-as-check-shard are mutually exclusive") } - noValueIndicator := "~" update := func(throttlerConfig *topodatapb.SrvKeyspace_ThrottlerConfig) *topodatapb.SrvKeyspace_ThrottlerConfig { if throttlerConfig == nil { throttlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} } - if req.CustomQuery != noValueIndicator { + if req.CustomQuerySet { // custom query provided throttlerConfig.CustomQuery = req.CustomQuery throttlerConfig.Threshold = req.Threshold // allowed to be zero/negative because who knows what kind of custom query this is diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 02802df5eb1..01345ce6c27 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -3651,11 +3651,11 @@ func commandGetSrvKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags } func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) (err error) { - noValueIndicator := "~" enable := subFlags.Bool("enable", false, "Enable the throttler") disable := subFlags.Bool("disable", false, "Disable the throttler") threshold := subFlags.Float64("threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - customQuery := subFlags.String("custom-query", noValueIndicator, "custom throttler check query") + customQuerySet := subFlags.Changed("custom-query") + customQuery := subFlags.String("custom-query", "", "custom throttler check query") checkAsCheckSelf := subFlags.Bool("check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") checkAsCheckShard := subFlags.Bool("check-as-check-shard", false, "use standard behavior for /throttler/check requests") @@ -3678,7 +3678,7 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su if throttlerConfig == nil { throttlerConfig = &topodatapb.SrvKeyspace_ThrottlerConfig{} } - if *customQuery != noValueIndicator { + if customQuerySet { // custom query provided throttlerConfig.CustomQuery = *customQuery throttlerConfig.Threshold = *threshold // allowed to be zero/negative because who knows what kind of custom query this is diff --git a/proto/vtctldata.proto b/proto/vtctldata.proto index 3d942a7d788..b5625b1e1ae 100644 --- a/proto/vtctldata.proto +++ b/proto/vtctldata.proto @@ -679,10 +679,12 @@ message UpdateThrottlerConfigRequest { double threshold = 4; // CustomQuery replaces the default replication lag query string custom_query = 5; + // CustomQuerySet indicates that the value of CustomQuery has changed + bool custom_query_set = 6; // CheckAsCheckSelf instructs the throttler to respond to /check requests by checking the tablet's own health - bool check_as_check_self=6; + bool check_as_check_self=7; // CheckAsCheckShard instructs the throttler to respond to /check requests by checking the shard's health (this is the default behavior) - bool check_as_check_shard=7; + bool check_as_check_shard=8; } message UpdateThrottlerConfigResponse { From 3ca7102d19eda8e62716aa47d7dbdf2466c8ab66 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Wed, 9 Nov 2022 15:15:37 +0200 Subject: [PATCH 69/78] vt admin proto Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- web/vtadmin/src/proto/vtadmin.d.ts | 6 ++++++ web/vtadmin/src/proto/vtadmin.js | 28 +++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/web/vtadmin/src/proto/vtadmin.d.ts b/web/vtadmin/src/proto/vtadmin.d.ts index 38edb88bb42..7195b40b58e 100644 --- a/web/vtadmin/src/proto/vtadmin.d.ts +++ b/web/vtadmin/src/proto/vtadmin.d.ts @@ -41457,6 +41457,9 @@ export namespace vtctldata { /** UpdateThrottlerConfigRequest custom_query */ custom_query?: (string|null); + /** UpdateThrottlerConfigRequest custom_query_set */ + custom_query_set?: (boolean|null); + /** UpdateThrottlerConfigRequest check_as_check_self */ check_as_check_self?: (boolean|null); @@ -41488,6 +41491,9 @@ export namespace vtctldata { /** UpdateThrottlerConfigRequest custom_query. */ public custom_query: string; + /** UpdateThrottlerConfigRequest custom_query_set. */ + public custom_query_set: boolean; + /** UpdateThrottlerConfigRequest check_as_check_self. */ public check_as_check_self: boolean; diff --git a/web/vtadmin/src/proto/vtadmin.js b/web/vtadmin/src/proto/vtadmin.js index fd54d7d8917..9d97c88b53f 100644 --- a/web/vtadmin/src/proto/vtadmin.js +++ b/web/vtadmin/src/proto/vtadmin.js @@ -98398,6 +98398,7 @@ $root.vtctldata = (function() { * @property {boolean|null} [disable] UpdateThrottlerConfigRequest disable * @property {number|null} [threshold] UpdateThrottlerConfigRequest threshold * @property {string|null} [custom_query] UpdateThrottlerConfigRequest custom_query + * @property {boolean|null} [custom_query_set] UpdateThrottlerConfigRequest custom_query_set * @property {boolean|null} [check_as_check_self] UpdateThrottlerConfigRequest check_as_check_self * @property {boolean|null} [check_as_check_shard] UpdateThrottlerConfigRequest check_as_check_shard */ @@ -98457,6 +98458,14 @@ $root.vtctldata = (function() { */ UpdateThrottlerConfigRequest.prototype.custom_query = ""; + /** + * UpdateThrottlerConfigRequest custom_query_set. + * @member {boolean} custom_query_set + * @memberof vtctldata.UpdateThrottlerConfigRequest + * @instance + */ + UpdateThrottlerConfigRequest.prototype.custom_query_set = false; + /** * UpdateThrottlerConfigRequest check_as_check_self. * @member {boolean} check_as_check_self @@ -98507,10 +98516,12 @@ $root.vtctldata = (function() { writer.uint32(/* id 4, wireType 1 =*/33).double(message.threshold); if (message.custom_query != null && Object.hasOwnProperty.call(message, "custom_query")) writer.uint32(/* id 5, wireType 2 =*/42).string(message.custom_query); + if (message.custom_query_set != null && Object.hasOwnProperty.call(message, "custom_query_set")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.custom_query_set); if (message.check_as_check_self != null && Object.hasOwnProperty.call(message, "check_as_check_self")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.check_as_check_self); + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.check_as_check_self); if (message.check_as_check_shard != null && Object.hasOwnProperty.call(message, "check_as_check_shard")) - writer.uint32(/* id 7, wireType 0 =*/56).bool(message.check_as_check_shard); + writer.uint32(/* id 8, wireType 0 =*/64).bool(message.check_as_check_shard); return writer; }; @@ -98561,9 +98572,12 @@ $root.vtctldata = (function() { message.custom_query = reader.string(); break; case 6: - message.check_as_check_self = reader.bool(); + message.custom_query_set = reader.bool(); break; case 7: + message.check_as_check_self = reader.bool(); + break; + case 8: message.check_as_check_shard = reader.bool(); break; default: @@ -98616,6 +98630,9 @@ $root.vtctldata = (function() { if (message.custom_query != null && message.hasOwnProperty("custom_query")) if (!$util.isString(message.custom_query)) return "custom_query: string expected"; + if (message.custom_query_set != null && message.hasOwnProperty("custom_query_set")) + if (typeof message.custom_query_set !== "boolean") + return "custom_query_set: boolean expected"; if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) if (typeof message.check_as_check_self !== "boolean") return "check_as_check_self: boolean expected"; @@ -98647,6 +98664,8 @@ $root.vtctldata = (function() { message.threshold = Number(object.threshold); if (object.custom_query != null) message.custom_query = String(object.custom_query); + if (object.custom_query_set != null) + message.custom_query_set = Boolean(object.custom_query_set); if (object.check_as_check_self != null) message.check_as_check_self = Boolean(object.check_as_check_self); if (object.check_as_check_shard != null) @@ -98673,6 +98692,7 @@ $root.vtctldata = (function() { object.disable = false; object.threshold = 0; object.custom_query = ""; + object.custom_query_set = false; object.check_as_check_self = false; object.check_as_check_shard = false; } @@ -98686,6 +98706,8 @@ $root.vtctldata = (function() { object.threshold = options.json && !isFinite(message.threshold) ? String(message.threshold) : message.threshold; if (message.custom_query != null && message.hasOwnProperty("custom_query")) object.custom_query = message.custom_query; + if (message.custom_query_set != null && message.hasOwnProperty("custom_query_set")) + object.custom_query_set = message.custom_query_set; if (message.check_as_check_self != null && message.hasOwnProperty("check_as_check_self")) object.check_as_check_self = message.check_as_check_self; if (message.check_as_check_shard != null && message.hasOwnProperty("check_as_check_shard")) From 43d0f2db5fa4d81da8f9245e4366347333dd6de9 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 10 Nov 2022 14:46:30 +0200 Subject: [PATCH 70/78] update ci workflow Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- ..._endtoend_tabletmanager_throttler_topo.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml index 5ae0f23d9e3..4c1a296f38c 100644 --- a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml +++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml @@ -61,7 +61,7 @@ jobs: if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' uses: actions/setup-go@v3 with: - go-version: 1.18.7 + go-version: 1.19.3 - name: Set up python if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' @@ -78,16 +78,17 @@ jobs: - name: Get dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true' run: | - # Setup Percona Server for MySQL 8.0 + + # Get key to latest MySQL repo + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 + # Setup MySQL 8.0 + wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb + echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections + sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config* sudo apt-get update - sudo apt-get install -y lsb-release gnupg2 curl - wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb - sudo DEBIAN_FRONTEND="noninteractive" dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb - sudo percona-release setup ps80 - sudo apt-get update - # Install everything else we need, and configure - sudo apt-get install -y percona-server-server percona-server-client make unzip g++ etcd git wget eatmydata xz-utils + sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata xz-utils + sudo service mysql stop sudo service etcd stop sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ From a4a92c01101d451a92e6b04ce6b39604c64c6fe9 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Nov 2022 17:20:36 +0200 Subject: [PATCH 71/78] go mod tidy Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index a0ed58c44de..7dae9fb5119 100644 --- a/go.sum +++ b/go.sum @@ -128,8 +128,6 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bndr/gotabulate v1.1.2 h1:yC9izuZEphojb9r+KYL4W9IJKO/ceIO8HDwxMA24U4c= github.com/bndr/gotabulate v1.1.2/go.mod h1:0+8yUgaPTtLRTjf49E8oju7ojpU11YmXyvq1LbPAb3U= -github.com/buger/jsonparser v0.0.0-20200322175846-f7e751efca13 h1:+qUNY4VRkEH46bLUwxCyUU+iOGJMQBVibAaYzWiwWcg= -github.com/buger/jsonparser v0.0.0-20200322175846-f7e751efca13/go.mod h1:tgcrVJ81GPSF0mz+0nu1Xaz0fazGPrmmJfJtxjbHhUQ= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= From c70aed5f68e9c58d848da8490d85c66f65501d2a Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:35:03 +0200 Subject: [PATCH 72/78] check 'Changed' after parsing Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 2 +- go/vt/vtctl/vtctl.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index a4d7d3d9dc5..16761e89760 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -41,6 +41,7 @@ func commandUpdateThrottlerConfig(cmd *cobra.Command, args []string) error { keyspace := cmd.Flags().Arg(0) cli.FinishedParsing(cmd) + updateThrottlerConfigOptions.CustomQuerySet = cmd.Flags().Changed("custom-query") updateThrottlerConfigOptions.Keyspace = keyspace _, err := client.UpdateThrottlerConfig(commandCtx, &updateThrottlerConfigOptions) if err != nil { @@ -53,7 +54,6 @@ func init() { UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Enable, "enable", false, "Enable the throttler") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.Disable, "disable", false, "Disable the throttler") UpdateThrottlerConfig.Flags().Float64Var(&updateThrottlerConfigOptions.Threshold, "threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - updateThrottlerConfigOptions.CustomQuerySet = UpdateThrottlerConfig.Flags().Changed("custom-query") UpdateThrottlerConfig.Flags().StringVar(&updateThrottlerConfigOptions.CustomQuery, "custom-query", "", "custom throttler check query") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckSelf, "check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") UpdateThrottlerConfig.Flags().BoolVar(&updateThrottlerConfigOptions.CheckAsCheckShard, "check-as-check-shard", false, "use standard behavior for /throttler/check requests") diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index d5995d4eb53..325e40ec8da 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -3678,7 +3678,6 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su enable := subFlags.Bool("enable", false, "Enable the throttler") disable := subFlags.Bool("disable", false, "Disable the throttler") threshold := subFlags.Float64("threshold", 0, "threshold for the either default check (replication lag seconds) or custom check") - customQuerySet := subFlags.Changed("custom-query") customQuery := subFlags.String("custom-query", "", "custom throttler check query") checkAsCheckSelf := subFlags.Bool("check-as-check-self", false, "/throttler/check requests behave as is /throttler/check-self was called") checkAsCheckShard := subFlags.Bool("check-as-check-shard", false, "use standard behavior for /throttler/check requests") @@ -3686,6 +3685,7 @@ func commandUpdateThrottlerConfig(ctx context.Context, wr *wrangler.Wrangler, su if err := subFlags.Parse(args); err != nil { return err } + customQuerySet := subFlags.Changed("custom-query") if subFlags.NArg() != 1 { return fmt.Errorf("the arguments are required for the SetThrottlerConfig command") } From b1f1a79b1fe7f8c1a03e7a5480c8a3b7415d5f6f Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:35:55 +0200 Subject: [PATCH 73/78] more verbose message; do give throttler timt to update config Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- .../throttler_topo/throttler_test.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go index 759d840b4ee..01c8696f71c 100644 --- a/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go +++ b/go/test/endtoend/tabletmanager/throttler_topo/throttler_test.go @@ -426,11 +426,15 @@ func TestCustomQuery(t *testing.T) { t.Run("enabling throttler with low threshold", func(t *testing.T) { _, err := updateThrottlerConfig(true, false, float64(customThreshold), customQuery, false) assert.NoError(t, err) + time.Sleep(applyConfigWait) }) t.Run("validating OK response from throttler with custom query", func(t *testing.T) { resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + + b, err := io.ReadAll(resp.Body) + assert.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode, "response: %v", string(b)) }) t.Run("test threads running", func(t *testing.T) { sleepDuration := 10 * time.Second @@ -450,12 +454,18 @@ func TestCustomQuery(t *testing.T) { { resp, err := throttleCheck(primaryTablet, false) assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + + b, err := io.ReadAll(resp.Body) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode, "response: %v", string(b)) } { resp, err := throttleCheckSelf(primaryTablet) assert.NoError(t, err) - assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode) + + b, err := io.ReadAll(resp.Body) + assert.NoError(t, err) + assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode, "response: %v", string(b)) } }) t.Run("wait for queries to terminate", func(t *testing.T) { From b0ba6fec2eecf4332f28d186402d549c8178c575 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:37:06 +0200 Subject: [PATCH 74/78] metricsQuery is atomic; report metrics query in SHOW VITESS_THROTTLER STATUS Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/query_executor.go | 5 ++++ .../tabletserver/throttle/throttler.go | 24 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 6a4cfe86163..a261da937ec 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -990,12 +990,17 @@ func (qre *QueryExecutor) execShowThrottlerStatus() (*sqltypes.Result, error) { Name: "threshold", Type: sqltypes.Float64, }, + { + Name: "query", + Type: sqltypes.VarChar, + }, }, Rows: [][]sqltypes.Value{ { sqltypes.NewVarChar(qre.tsv.sm.target.Shard), sqltypes.NewInt32(enabled), sqltypes.NewFloat64(qre.tsv.lagThrottler.MetricsThreshold.Get()), + sqltypes.NewVarChar(qre.tsv.lagThrottler.GetMetricsQuery()), }, }, } diff --git a/go/vt/vttablet/tabletserver/throttle/throttler.go b/go/vt/vttablet/tabletserver/throttle/throttler.go index 9c180829db1..9b7bb22d7f1 100644 --- a/go/vt/vttablet/tabletserver/throttle/throttler.go +++ b/go/vt/vttablet/tabletserver/throttle/throttler.go @@ -134,7 +134,7 @@ type Throttler struct { mysqlInventory *mysql.Inventory - metricsQuery string + metricsQuery atomic.Value MetricsThreshold sync2.AtomicFloat64 mysqlClusterThresholds *cache.Cache @@ -202,9 +202,9 @@ func NewThrottler(env tabletenv.Env, srvTopoServer srvtopo.Server, ts *topo.Serv throttler.initThrottleTabletTypes() throttler.check = NewThrottlerCheck(throttler) - throttler.metricsQuery = replicationLagQuery // default + throttler.metricsQuery.Store(replicationLagQuery) // default if throttleMetricQuery != "" { - throttler.metricsQuery = throttleMetricQuery // override + throttler.metricsQuery.Store(throttleMetricQuery) // override } throttler.MetricsThreshold = sync2.NewAtomicFloat64(throttleThreshold.Seconds()) //default if throttleMetricThreshold != math.MaxFloat64 { @@ -251,6 +251,10 @@ func (throttler *Throttler) InitDBConfig(keyspace, shard string) { } } +func (throttler *Throttler) GetMetricsQuery() string { + return throttler.metricsQuery.Load().(string) +} + // initThrottler initializes config func (throttler *Throttler) initConfig() { log.Infof("Throttler: initializing config") @@ -264,12 +268,12 @@ func (throttler *Throttler) initConfig() { }, } config.Instance.Stores.MySQL.Clusters[selfStoreName] = &config.MySQLClusterConfigurationSettings{ - MetricQuery: throttler.metricsQuery, + MetricQuery: throttler.GetMetricsQuery(), ThrottleThreshold: &throttler.MetricsThreshold, IgnoreHostsCount: 0, } config.Instance.Stores.MySQL.Clusters[shardStoreName] = &config.MySQLClusterConfigurationSettings{ - MetricQuery: throttler.metricsQuery, + MetricQuery: throttler.GetMetricsQuery(), ThrottleThreshold: &throttler.MetricsThreshold, IgnoreHostsCount: 0, } @@ -330,9 +334,9 @@ func (throttler *Throttler) applyThrottlerConfig(ctx context.Context, throttlerC return } if throttlerConfig.CustomQuery == "" { - throttler.metricsQuery = replicationLagQuery + throttler.metricsQuery.Store(replicationLagQuery) } else { - throttler.metricsQuery = throttlerConfig.CustomQuery + throttler.metricsQuery.Store(throttlerConfig.CustomQuery) } throttler.MetricsThreshold.Set(throttlerConfig.Threshold) throttlerCheckAsCheckSelf = throttlerConfig.CheckAsCheckSelf @@ -497,7 +501,7 @@ func (throttler *Throttler) readSelfMySQLThrottleMetric(ctx context.Context, pro return metric } - metricsQueryType := mysql.GetMetricsQueryType(throttler.metricsQuery) + metricsQueryType := mysql.GetMetricsQueryType(throttler.GetMetricsQuery()) switch metricsQueryType { case mysql.MetricsQueryTypeSelect: // We expect a single row, single column result. @@ -508,7 +512,7 @@ func (throttler *Throttler) readSelfMySQLThrottleMetric(ctx context.Context, pro case mysql.MetricsQueryTypeShowGlobal: metric.Value, metric.Err = strconv.ParseFloat(row["Value"].ToString(), 64) default: - metric.Err = fmt.Errorf("Unsupported metrics query type for query: %s", throttler.metricsQuery) + metric.Err = fmt.Errorf("Unsupported metrics query type for query: %s", throttler.GetMetricsQuery()) } return metric @@ -718,7 +722,7 @@ func (throttler *Throttler) collectMySQLMetrics(ctx context.Context) error { func (throttler *Throttler) refreshMySQLInventory(ctx context.Context) error { // distribute the query/threshold from the throttler down to the cluster settings and from there to the probes - metricsQuery := throttler.metricsQuery + metricsQuery := throttler.GetMetricsQuery() metricsThreshold := throttler.MetricsThreshold.Get() addInstanceKey := func(tabletHost string, tabletPort int, key *mysql.InstanceKey, clusterName string, clusterSettings *config.MySQLClusterConfigurationSettings, probes *mysql.Probes) { for _, ignore := range clusterSettings.IgnoreHosts { From 4733345e13559b952b0294b52eed07f3dc360f38 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 15 Nov 2022 07:38:34 +0200 Subject: [PATCH 75/78] cobra comment Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/cmd/vtctldclient/command/throttler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/cmd/vtctldclient/command/throttler.go b/go/cmd/vtctldclient/command/throttler.go index 16761e89760..ceb52aa1bdf 100644 --- a/go/cmd/vtctldclient/command/throttler.go +++ b/go/cmd/vtctldclient/command/throttler.go @@ -28,7 +28,7 @@ var ( // UpdateThrottlerConfig makes a UpdateThrottlerConfig gRPC call to a vtctld. UpdateThrottlerConfig = &cobra.Command{ Use: "UpdateThrottlerConfig [--enable|--disable] [--threshold=] [--custom-query=] [--check-as-check-self|--check-as-check-shard] ", - Short: "Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided).", + Short: "Update the table throttler configuration for all cells and tablets of a given keyspace", DisableFlagsInUseLine: true, Args: cobra.ExactArgs(1), RunE: commandUpdateThrottlerConfig, From e82479f6c7ff3f668520512c7ec3969748cd1a65 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 15 Nov 2022 07:57:58 +0200 Subject: [PATCH 76/78] goimport Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/sqlparser/ast_format_fast.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index 1ef285eda89..792f550e779 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -19,6 +19,7 @@ package sqlparser import ( "fmt" + "vitess.io/vitess/go/sqltypes" ) From d82619bc4a5647ae5de6bf70f0bb0929ffae00bf Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Tue, 15 Nov 2022 08:30:24 +0200 Subject: [PATCH 77/78] fix CLI docs Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/flags/endtoend/vtctldclient.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/flags/endtoend/vtctldclient.txt b/go/flags/endtoend/vtctldclient.txt index 2b6f0ea6c83..2afca2ea1b6 100644 --- a/go/flags/endtoend/vtctldclient.txt +++ b/go/flags/endtoend/vtctldclient.txt @@ -79,7 +79,7 @@ Available Commands: TabletExternallyReparented Updates the topology record for the tablet's shard to acknowledge that an external tool made this tablet the primary. UpdateCellInfo Updates the content of a CellInfo with the provided parameters, creating the CellInfo if it does not exist. UpdateCellsAlias Updates the content of a CellsAlias with the provided parameters, creating the CellsAlias if it does not exist. - UpdateThrottlerConfig Rebuilds the cell-specific SrvVSchema from the global VSchema objects in the provided cells (or all cells if none provided). + UpdateThrottlerConfig Update the table throttler configuration for all cells and tablets of a given keyspace Validate Validates that all nodes reachable from the global replication graph, as well as all tablets in discoverable cells, are consistent. ValidateKeyspace Validates that all nodes reachable from the specified keyspace are consistent. ValidateSchemaKeyspace Validates that the schema on the primary tablet for shard 0 matches the schema on all other tablets in the keyspace. From c3319ecd5f1f18dd0e2f6dafc78352578e0a7d71 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 17 Nov 2022 09:30:42 +0200 Subject: [PATCH 78/78] release notes Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- doc/releasenotes/16_0_0_summary.md | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/doc/releasenotes/16_0_0_summary.md b/doc/releasenotes/16_0_0_summary.md index e370e94109a..c46b9d20f27 100644 --- a/doc/releasenotes/16_0_0_summary.md +++ b/doc/releasenotes/16_0_0_summary.md @@ -15,6 +15,14 @@ In [PR #11103](https://github.com/vitessio/vitess/pull/11103) we introduced the ability to resume a `VTGate` [`VStream` copy operation](https://vitess.io/docs/design-docs/vreplication/vstream/vscopy/). This is useful when a [`VStream` copy operation](https://vitess.io/docs/design-docs/vreplication/vstream/vscopy/) is interrupted due to e.g. a network failure or a server restart. The `VStream` copy operation can be resumed by specifying each table's last seen primary key value in the `VStream` request. Please see the [`VStream` docs](https://vitess.io/docs/16.0/reference/vreplication/vstream/) for more details. +### Tablet throttler + +The tablet throttler can now be configured dynamically. Configuration is now found in the topo service, and applies to all tablets in all shards and cells of a given keyspace. For backwards compatibility `v16` still supports `vttablet`-based command line flags for throttler ocnfiguration. + +It is possible to enable/disable, to change throttling threshold as well as the throttler query. + +See https://github.com/vitessio/vitess/pull/11604 + ### Breaking Changes #### Orchestrator Integration Deletion @@ -43,6 +51,37 @@ Other aspects of the VReplication copy-phase logic are preserved: Other phases, catchup, fast-forward, and replicating/"running", are unchanged. +### vttablet --throttler-config-via-topo + +The flag `--throttler-config-via-topo` switches throttler configuration from `vttablet`-flags to the topo service. This flag is `false` by default, for backwards compatibility. It will default to `true` in future versions. + +### vtctldclient UpdateThrottlerConfig + +Tablet throttler configuration is now supported in `topo`. Updating the throttler configuration is done via `vtctldclient UpdateThrottlerConfig` and applies to all tablet in all cells for a given keyspace. + +Examples: +```shell +# disable throttler; all throttler checks will return with "200 OK" +$ vtctldclient UpdateThrottlerConfig --disable commerce + +# enable throttler; checks are responded with appropriate status per current metrics +$ vtctldclient UpdateThrottlerConfig --enable commerce + +# Both enable and set threshold in same command. Since no query is indicated, we assume the default check for replication lag +$ vtctldclient UpdateThrottlerConfig --enable --threshold 5.0 commerce + +# Change threshold. Does not affect enabled/disabled state of the throttler +$ vtctldclient UpdateThrottlerConfig --threshold 1.5 commerce + +# Use a custom query +$ vtctldclient UpdateThrottlerConfig --custom_query "show global status like 'threads_running'" --check_as_check_self --threshold 50 commerce + +# Restore default query and threshold +$ vtctldclient UpdateThrottlerConfig --custom_query "" --check_as_check_shard --threshold 1.5 commerce +``` + +See https://github.com/vitessio/vitess/pull/11604 + ### Important bug fixes #### Corrupted results for non-full-group-by queries with JOINs