diff --git a/pymysqlreplication/binlogstream.py b/pymysqlreplication/binlogstream.py index ce1d5e5c..39e6a108 100644 --- a/pymysqlreplication/binlogstream.py +++ b/pymysqlreplication/binlogstream.py @@ -258,6 +258,7 @@ def __init__( # Store table meta information self.table_map = {} + self.__table_id_to_name = {} self.log_pos = log_pos self.end_log_pos = end_log_pos self.log_file = log_file @@ -616,6 +617,7 @@ def fetchone(self): self.__ignore_decode_errors, self.__verify_checksum, self.__optional_meta_data, + self.__table_id_to_name, ) if binlog_event.event_type == ROTATE_EVENT: diff --git a/pymysqlreplication/ddl_parser/MySqlLexer.g4 b/pymysqlreplication/ddl_parser/MySqlLexer.g4 new file mode 100644 index 00000000..484637d0 --- /dev/null +++ b/pymysqlreplication/ddl_parser/MySqlLexer.g4 @@ -0,0 +1,1364 @@ +/* +MySQL (Positive Technologies) grammar +The MIT License (MIT). +Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +lexer grammar MySqlLexer; + +options { caseInsensitive = true; } + +channels { MYSQLCOMMENT, ERRORCHANNEL } + +// SKIP + +SPACE: [ \t\r\n]+ -> channel(HIDDEN); +SPEC_MYSQL_COMMENT: '/*!' .+? '*/' -> channel(MYSQLCOMMENT); +COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN); +LINE_COMMENT: ( + ('--' [ \t]* | '#') ~[\r\n]* ('\r'? '\n' | EOF) + | '--' ('\r'? '\n' | EOF) + ) -> channel(HIDDEN); + + +// Keywords +// Common Keywords + +ADD: 'ADD'; +ALL: 'ALL'; +ALTER: 'ALTER'; +ALWAYS: 'ALWAYS'; +ANALYZE: 'ANALYZE'; +AND: 'AND'; +ARRAY: 'ARRAY'; +AS: 'AS'; +ASC: 'ASC'; +ATTRIBUTE: 'ATTRIBUTE'; +BEFORE: 'BEFORE'; +BETWEEN: 'BETWEEN'; +BOTH: 'BOTH'; +BUCKETS: 'BUCKETS'; +BY: 'BY'; +CALL: 'CALL'; +CASCADE: 'CASCADE'; +CASE: 'CASE'; +CAST: 'CAST'; +CHANGE: 'CHANGE'; +CHARACTER: 'CHARACTER'; +CHECK: 'CHECK'; +COLLATE: 'COLLATE'; +COLUMN: 'COLUMN'; +CONDITION: 'CONDITION'; +CONSTRAINT: 'CONSTRAINT'; +CONTINUE: 'CONTINUE'; +CONVERT: 'CONVERT'; +CREATE: 'CREATE'; +CROSS: 'CROSS'; +CURRENT: 'CURRENT'; +CURRENT_ROLE: 'CURRENT_ROLE'; +CURRENT_USER: 'CURRENT_USER'; +CURSOR: 'CURSOR'; +DATABASE: 'DATABASE'; +DATABASES: 'DATABASES'; +DECLARE: 'DECLARE'; +DEFAULT: 'DEFAULT'; +DELAYED: 'DELAYED'; +DELETE: 'DELETE'; +DESC: 'DESC'; +DESCRIBE: 'DESCRIBE'; +DETERMINISTIC: 'DETERMINISTIC'; +DIAGNOSTICS: 'DIAGNOSTICS'; +DISTINCT: 'DISTINCT'; +DISTINCTROW: 'DISTINCTROW'; +DROP: 'DROP'; +EACH: 'EACH'; +ELSE: 'ELSE'; +ELSEIF: 'ELSEIF'; +EMPTY: 'EMPTY'; +ENCLOSED: 'ENCLOSED'; +ENFORCED: 'ENFORCED'; +ESCAPED: 'ESCAPED'; +EXCEPT: 'EXCEPT'; +EXISTS: 'EXISTS'; +EXIT: 'EXIT'; +EXPLAIN: 'EXPLAIN'; +FALSE: 'FALSE'; +FETCH: 'FETCH'; +FOR: 'FOR'; +FORCE: 'FORCE'; +FOREIGN: 'FOREIGN'; +FROM: 'FROM'; +FULLTEXT: 'FULLTEXT'; +GENERATED: 'GENERATED'; +GET: 'GET'; +GRANT: 'GRANT'; +GROUP: 'GROUP'; +HAVING: 'HAVING'; +HIGH_PRIORITY: 'HIGH_PRIORITY'; +HISTOGRAM: 'HISTOGRAM'; +IF: 'IF'; +IGNORE: 'IGNORE'; +IGNORED: 'IGNORED'; +IN: 'IN'; +INDEX: 'INDEX'; +INFILE: 'INFILE'; +INNER: 'INNER'; +INOUT: 'INOUT'; +INSERT: 'INSERT'; +INTERVAL: 'INTERVAL'; +INTO: 'INTO'; +IS: 'IS'; +ITERATE: 'ITERATE'; +JOIN: 'JOIN'; +KEY: 'KEY'; +KEYS: 'KEYS'; +KILL: 'KILL'; +LATERAL: 'LATERAL'; +LEADING: 'LEADING'; +LEAVE: 'LEAVE'; +LEFT: 'LEFT'; +LIKE: 'LIKE'; +LIMIT: 'LIMIT'; +LINEAR: 'LINEAR'; +LINES: 'LINES'; +LOAD: 'LOAD'; +LOCK: 'LOCK'; +LOCKED: 'LOCKED'; +LOOP: 'LOOP'; +LOW_PRIORITY: 'LOW_PRIORITY'; +MASTER_BIND: 'MASTER_BIND'; +MASTER_SSL_VERIFY_SERVER_CERT: 'MASTER_SSL_VERIFY_SERVER_CERT'; +MATCH: 'MATCH'; +MAXVALUE: 'MAXVALUE'; +MINVALUE: 'MINVALUE'; +MODIFIES: 'MODIFIES'; +NATURAL: 'NATURAL'; +NOT: 'NOT'; +NO_WRITE_TO_BINLOG: 'NO_WRITE_TO_BINLOG'; +NULL_LITERAL: 'NULL'; +NUMBER: 'NUMBER'; +ON: 'ON'; +OPTIMIZE: 'OPTIMIZE'; +OPTION: 'OPTION'; +OPTIONAL: 'OPTIONAL'; +OPTIONALLY: 'OPTIONALLY'; +OR: 'OR'; +ORDER: 'ORDER'; +OUT: 'OUT'; +OUTER: 'OUTER'; +OUTFILE: 'OUTFILE'; +OVER: 'OVER'; +PARTITION: 'PARTITION'; +PRIMARY: 'PRIMARY'; +PROCEDURE: 'PROCEDURE'; +PURGE: 'PURGE'; +RANGE: 'RANGE'; +READ: 'READ'; +READS: 'READS'; +REFERENCES: 'REFERENCES'; +REGEXP: 'REGEXP'; +RELEASE: 'RELEASE'; +RENAME: 'RENAME'; +REPEAT: 'REPEAT'; +REPLACE: 'REPLACE'; +REQUIRE: 'REQUIRE'; +RESIGNAL: 'RESIGNAL'; +RESTRICT: 'RESTRICT'; +RETAIN: 'RETAIN'; +RETURN: 'RETURN'; +REVOKE: 'REVOKE'; +RIGHT: 'RIGHT'; +RLIKE: 'RLIKE'; +SCHEMA: 'SCHEMA'; +SCHEMAS: 'SCHEMAS'; +SELECT: 'SELECT'; +SET: 'SET'; +SEPARATOR: 'SEPARATOR'; +SHOW: 'SHOW'; +SIGNAL: 'SIGNAL'; +SKIP_: 'SKIP'; +SKIP_QUERY_REWRITE: 'SKIP_QUERY_REWRITE'; +SPATIAL: 'SPATIAL'; +SQL: 'SQL'; +SQLEXCEPTION: 'SQLEXCEPTION'; +SQLSTATE: 'SQLSTATE'; +SQLWARNING: 'SQLWARNING'; +SQL_BIG_RESULT: 'SQL_BIG_RESULT'; +SQL_CALC_FOUND_ROWS: 'SQL_CALC_FOUND_ROWS'; +SQL_SMALL_RESULT: 'SQL_SMALL_RESULT'; +SSL: 'SSL'; +STACKED: 'STACKED'; +STARTING: 'STARTING'; +STATEMENT: 'STATEMENT'; +STRAIGHT_JOIN: 'STRAIGHT_JOIN'; +TABLE: 'TABLE'; +TERMINATED: 'TERMINATED'; +THEN: 'THEN'; +TO: 'TO'; +TRAILING: 'TRAILING'; +TRIGGER: 'TRIGGER'; +TRUE: 'TRUE'; +UNDO: 'UNDO'; +UNION: 'UNION'; +UNIQUE: 'UNIQUE'; +UNLOCK: 'UNLOCK'; +UNSIGNED: 'UNSIGNED'; +UPDATE: 'UPDATE'; +USAGE: 'USAGE'; +USE: 'USE'; +USING: 'USING'; +VALUES: 'VALUES'; +WHEN: 'WHEN'; +WHERE: 'WHERE'; +WHILE: 'WHILE'; +WITH: 'WITH'; +WRITE: 'WRITE'; +XOR: 'XOR'; +ZEROFILL: 'ZEROFILL'; + +// DATA TYPE Keywords + +TINYINT: 'TINYINT'; +SMALLINT: 'SMALLINT'; +MEDIUMINT: 'MEDIUMINT'; +MIDDLEINT: 'MIDDLEINT'; +INT: 'INT'; +INT1: 'INT1'; +INT2: 'INT2'; +INT3: 'INT3'; +INT4: 'INT4'; +INT8: 'INT8'; +INTEGER: 'INTEGER'; +BIGINT: 'BIGINT'; +REAL: 'REAL'; +DOUBLE: 'DOUBLE'; +PRECISION: 'PRECISION'; +FLOAT: 'FLOAT'; +FLOAT4: 'FLOAT4'; +FLOAT8: 'FLOAT8'; +DECIMAL: 'DECIMAL'; +DEC: 'DEC'; +NUMERIC: 'NUMERIC'; +DATE: 'DATE'; +TIME: 'TIME'; +TIMESTAMP: 'TIMESTAMP'; +DATETIME: 'DATETIME'; +YEAR: 'YEAR'; +CHAR: 'CHAR'; +VARCHAR: 'VARCHAR'; +NVARCHAR: 'NVARCHAR'; +NATIONAL: 'NATIONAL'; +BINARY: 'BINARY'; +VARBINARY: 'VARBINARY'; +TINYBLOB: 'TINYBLOB'; +BLOB: 'BLOB'; +MEDIUMBLOB: 'MEDIUMBLOB'; +LONG: 'LONG'; +LONGBLOB: 'LONGBLOB'; +TINYTEXT: 'TINYTEXT'; +TEXT: 'TEXT'; +MEDIUMTEXT: 'MEDIUMTEXT'; +LONGTEXT: 'LONGTEXT'; +ENUM: 'ENUM'; +VARYING: 'VARYING'; +SERIAL: 'SERIAL'; + + +// Interval type Keywords + +YEAR_MONTH: 'YEAR_MONTH'; +DAY_HOUR: 'DAY_HOUR'; +DAY_MINUTE: 'DAY_MINUTE'; +DAY_SECOND: 'DAY_SECOND'; +HOUR_MINUTE: 'HOUR_MINUTE'; +HOUR_SECOND: 'HOUR_SECOND'; +MINUTE_SECOND: 'MINUTE_SECOND'; +SECOND_MICROSECOND: 'SECOND_MICROSECOND'; +MINUTE_MICROSECOND: 'MINUTE_MICROSECOND'; +HOUR_MICROSECOND: 'HOUR_MICROSECOND'; +DAY_MICROSECOND: 'DAY_MICROSECOND'; + +// JSON keywords +JSON_ARRAY: 'JSON_ARRAY'; +JSON_ARRAYAGG: 'JSON_ARRAYAGG'; +JSON_ARRAY_APPEND: 'JSON_ARRAY_APPEND'; +JSON_ARRAY_INSERT: 'JSON_ARRAY_INSERT'; +JSON_CONTAINS: 'JSON_CONTAINS'; +JSON_CONTAINS_PATH: 'JSON_CONTAINS_PATH'; +JSON_DEPTH: 'JSON_DEPTH'; +JSON_EXTRACT: 'JSON_EXTRACT'; +JSON_INSERT: 'JSON_INSERT'; +JSON_KEYS: 'JSON_KEYS'; +JSON_LENGTH: 'JSON_LENGTH'; +JSON_MERGE: 'JSON_MERGE'; +JSON_MERGE_PATCH: 'JSON_MERGE_PATCH'; +JSON_MERGE_PRESERVE: 'JSON_MERGE_PRESERVE'; +JSON_OBJECT: 'JSON_OBJECT'; +JSON_OBJECTAGG: 'JSON_OBJECTAGG'; +JSON_OVERLAPS: 'JSON_OVERLAPS'; +JSON_PRETTY: 'JSON_PRETTY'; +JSON_QUOTE: 'JSON_QUOTE'; +JSON_REMOVE: 'JSON_REMOVE'; +JSON_REPLACE: 'JSON_REPLACE'; +JSON_SCHEMA_VALID: 'JSON_SCHEMA_VALID'; +JSON_SCHEMA_VALIDATION_REPORT: 'JSON_SCHEMA_VALIDATION_REPORT'; +JSON_SEARCH: 'JSON_SEARCH'; +JSON_SET: 'JSON_SET'; +JSON_STORAGE_FREE: 'JSON_STORAGE_FREE'; +JSON_STORAGE_SIZE: 'JSON_STORAGE_SIZE'; +JSON_TABLE: 'JSON_TABLE'; +JSON_TYPE: 'JSON_TYPE'; +JSON_UNQUOTE: 'JSON_UNQUOTE'; +JSON_VALID: 'JSON_VALID'; +JSON_VALUE: 'JSON_VALUE'; +NESTED: 'NESTED'; +ORDINALITY: 'ORDINALITY'; +PATH: 'PATH'; + +// Group function Keywords + +AVG: 'AVG'; +BIT_AND: 'BIT_AND'; +BIT_OR: 'BIT_OR'; +BIT_XOR: 'BIT_XOR'; +COUNT: 'COUNT'; +CUME_DIST: 'CUME_DIST'; +DENSE_RANK: 'DENSE_RANK'; +FIRST_VALUE: 'FIRST_VALUE'; +GROUP_CONCAT: 'GROUP_CONCAT'; +LAG: 'LAG'; +LAST_VALUE: 'LAST_VALUE'; +LEAD: 'LEAD'; +MAX: 'MAX'; +MIN: 'MIN'; +NTILE: 'NTILE'; +NTH_VALUE: 'NTH_VALUE'; +PERCENT_RANK: 'PERCENT_RANK'; +RANK: 'RANK'; +ROW_NUMBER: 'ROW_NUMBER'; +STD: 'STD'; +STDDEV: 'STDDEV'; +STDDEV_POP: 'STDDEV_POP'; +STDDEV_SAMP: 'STDDEV_SAMP'; +SUM: 'SUM'; +VAR_POP: 'VAR_POP'; +VAR_SAMP: 'VAR_SAMP'; +VARIANCE: 'VARIANCE'; + +// Common function Keywords + +CURRENT_DATE: 'CURRENT_DATE'; +CURRENT_TIME: 'CURRENT_TIME'; +CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; +LOCALTIME: 'LOCALTIME'; +CURDATE: 'CURDATE'; +CURTIME: 'CURTIME'; +DATE_ADD: 'DATE_ADD'; +DATE_SUB: 'DATE_SUB'; +EXTRACT: 'EXTRACT'; +LOCALTIMESTAMP: 'LOCALTIMESTAMP'; +NOW: 'NOW'; +POSITION: 'POSITION'; +SUBSTR: 'SUBSTR'; +SUBSTRING: 'SUBSTRING'; +SYSDATE: 'SYSDATE'; +TRIM: 'TRIM'; +UTC_DATE: 'UTC_DATE'; +UTC_TIME: 'UTC_TIME'; +UTC_TIMESTAMP: 'UTC_TIMESTAMP'; + +// Keywords, but can be ID +// Common Keywords, but can be ID + +ACCOUNT: 'ACCOUNT'; +ACTION: 'ACTION'; +AFTER: 'AFTER'; +AGGREGATE: 'AGGREGATE'; +ALGORITHM: 'ALGORITHM'; +ANY: 'ANY'; +AT: 'AT'; +AUTHORS: 'AUTHORS'; +AUTOCOMMIT: 'AUTOCOMMIT'; +AUTOEXTEND_SIZE: 'AUTOEXTEND_SIZE'; +AUTO_INCREMENT: 'AUTO_INCREMENT'; +AVG_ROW_LENGTH: 'AVG_ROW_LENGTH'; +BEGIN: 'BEGIN'; +BINLOG: 'BINLOG'; +BIT: 'BIT'; +BLOCK: 'BLOCK'; +BOOL: 'BOOL'; +BOOLEAN: 'BOOLEAN'; +BTREE: 'BTREE'; +CACHE: 'CACHE'; +CASCADED: 'CASCADED'; +CHAIN: 'CHAIN'; +CHANGED: 'CHANGED'; +CHANNEL: 'CHANNEL'; +CHECKSUM: 'CHECKSUM'; +PAGE_CHECKSUM: 'PAGE_CHECKSUM'; +CIPHER: 'CIPHER'; +CLASS_ORIGIN: 'CLASS_ORIGIN'; +CLIENT: 'CLIENT'; +CLOSE: 'CLOSE'; +CLUSTERING: 'CLUSTERING'; +COALESCE: 'COALESCE'; +CODE: 'CODE'; +COLUMNS: 'COLUMNS'; +COLUMN_FORMAT: 'COLUMN_FORMAT'; +COLUMN_NAME: 'COLUMN_NAME'; +COMMENT: 'COMMENT'; +COMMIT: 'COMMIT'; +COMPACT: 'COMPACT'; +COMPLETION: 'COMPLETION'; +COMPRESSED: 'COMPRESSED'; +COMPRESSION: 'COMPRESSION' | QUOTE_SYMB? 'COMPRESSION' QUOTE_SYMB?; +CONCURRENT: 'CONCURRENT'; +CONNECT: 'CONNECT'; +CONNECTION: 'CONNECTION'; +CONSISTENT: 'CONSISTENT'; +CONSTRAINT_CATALOG: 'CONSTRAINT_CATALOG'; +CONSTRAINT_SCHEMA: 'CONSTRAINT_SCHEMA'; +CONSTRAINT_NAME: 'CONSTRAINT_NAME'; +CONTAINS: 'CONTAINS'; +CONTEXT: 'CONTEXT'; +CONTRIBUTORS: 'CONTRIBUTORS'; +COPY: 'COPY'; +CPU: 'CPU'; +CYCLE: 'CYCLE'; +CURSOR_NAME: 'CURSOR_NAME'; +DATA: 'DATA'; +DATAFILE: 'DATAFILE'; +DEALLOCATE: 'DEALLOCATE'; +DEFAULT_AUTH: 'DEFAULT_AUTH'; +DEFINER: 'DEFINER'; +DELAY_KEY_WRITE: 'DELAY_KEY_WRITE'; +DES_KEY_FILE: 'DES_KEY_FILE'; +DIRECTORY: 'DIRECTORY'; +DISABLE: 'DISABLE'; +DISCARD: 'DISCARD'; +DISK: 'DISK'; +DO: 'DO'; +DUMPFILE: 'DUMPFILE'; +DUPLICATE: 'DUPLICATE'; +DYNAMIC: 'DYNAMIC'; +ENABLE: 'ENABLE'; +ENCRYPTED: 'ENCRYPTED'; +ENCRYPTION: 'ENCRYPTION'; +ENCRYPTION_KEY_ID: 'ENCRYPTION_KEY_ID'; +END: 'END'; +ENDS: 'ENDS'; +ENGINE: 'ENGINE'; +ENGINES: 'ENGINES'; +ERROR: 'ERROR'; +ERRORS: 'ERRORS'; +ESCAPE: 'ESCAPE'; +EVEN: 'EVEN'; +EVENT: 'EVENT'; +EVENTS: 'EVENTS'; +EVERY: 'EVERY'; +EXCHANGE: 'EXCHANGE'; +EXCLUSIVE: 'EXCLUSIVE'; +EXPIRE: 'EXPIRE'; +EXPORT: 'EXPORT'; +EXTENDED: 'EXTENDED'; +EXTENT_SIZE: 'EXTENT_SIZE'; +FAILED_LOGIN_ATTEMPTS: 'FAILED_LOGIN_ATTEMPTS'; +FAST: 'FAST'; +FAULTS: 'FAULTS'; +FIELDS: 'FIELDS'; +FILE_BLOCK_SIZE: 'FILE_BLOCK_SIZE'; +FILTER: 'FILTER'; +FIRST: 'FIRST'; +FIXED: 'FIXED'; +FLUSH: 'FLUSH'; +FOLLOWING: 'FOLLOWING'; +FOLLOWS: 'FOLLOWS'; +FOUND: 'FOUND'; +FULL: 'FULL'; +FUNCTION: 'FUNCTION'; +GENERAL: 'GENERAL'; +GLOBAL: 'GLOBAL'; +GRANTS: 'GRANTS'; +GROUP_REPLICATION: 'GROUP_REPLICATION'; +HANDLER: 'HANDLER'; +HASH: 'HASH'; +HELP: 'HELP'; +HISTORY: 'HISTORY'; +HOST: 'HOST'; +HOSTS: 'HOSTS'; +IDENTIFIED: 'IDENTIFIED'; +IGNORE_SERVER_IDS: 'IGNORE_SERVER_IDS'; +IMPORT: 'IMPORT'; +INCREMENT: 'INCREMENT'; +INDEXES: 'INDEXES'; +INITIAL_SIZE: 'INITIAL_SIZE'; +INPLACE: 'INPLACE'; +INSERT_METHOD: 'INSERT_METHOD'; +INSTALL: 'INSTALL'; +INSTANCE: 'INSTANCE'; +INSTANT: 'INSTANT'; +INVISIBLE: 'INVISIBLE'; +INVOKER: 'INVOKER'; +IO: 'IO'; +IO_THREAD: 'IO_THREAD'; +IPC: 'IPC'; +ISOLATION: 'ISOLATION'; +ISSUER: 'ISSUER'; +JSON: 'JSON'; +KEY_BLOCK_SIZE: 'KEY_BLOCK_SIZE'; +LANGUAGE: 'LANGUAGE'; +LAST: 'LAST'; +LEAVES: 'LEAVES'; +LESS: 'LESS'; +LEVEL: 'LEVEL'; +LIST: 'LIST'; +LOCAL: 'LOCAL'; +LOGFILE: 'LOGFILE'; +LOGS: 'LOGS'; +MASTER: 'MASTER'; +MASTER_AUTO_POSITION: 'MASTER_AUTO_POSITION'; +MASTER_CONNECT_RETRY: 'MASTER_CONNECT_RETRY'; +MASTER_DELAY: 'MASTER_DELAY'; +MASTER_HEARTBEAT_PERIOD: 'MASTER_HEARTBEAT_PERIOD'; +MASTER_HOST: 'MASTER_HOST'; +MASTER_LOG_FILE: 'MASTER_LOG_FILE'; +MASTER_LOG_POS: 'MASTER_LOG_POS'; +MASTER_PASSWORD: 'MASTER_PASSWORD'; +MASTER_PORT: 'MASTER_PORT'; +MASTER_RETRY_COUNT: 'MASTER_RETRY_COUNT'; +MASTER_SSL: 'MASTER_SSL'; +MASTER_SSL_CA: 'MASTER_SSL_CA'; +MASTER_SSL_CAPATH: 'MASTER_SSL_CAPATH'; +MASTER_SSL_CERT: 'MASTER_SSL_CERT'; +MASTER_SSL_CIPHER: 'MASTER_SSL_CIPHER'; +MASTER_SSL_CRL: 'MASTER_SSL_CRL'; +MASTER_SSL_CRLPATH: 'MASTER_SSL_CRLPATH'; +MASTER_SSL_KEY: 'MASTER_SSL_KEY'; +MASTER_TLS_VERSION: 'MASTER_TLS_VERSION'; +MASTER_USER: 'MASTER_USER'; +MAX_CONNECTIONS_PER_HOUR: 'MAX_CONNECTIONS_PER_HOUR'; +MAX_QUERIES_PER_HOUR: 'MAX_QUERIES_PER_HOUR'; +MAX_ROWS: 'MAX_ROWS'; +MAX_SIZE: 'MAX_SIZE'; +MAX_UPDATES_PER_HOUR: 'MAX_UPDATES_PER_HOUR'; +MAX_USER_CONNECTIONS: 'MAX_USER_CONNECTIONS'; +MEDIUM: 'MEDIUM'; +MEMBER: 'MEMBER'; +MERGE: 'MERGE'; +MESSAGE_TEXT: 'MESSAGE_TEXT'; +MID: 'MID'; +MIGRATE: 'MIGRATE'; +MIN_ROWS: 'MIN_ROWS'; +MODE: 'MODE'; +MODIFY: 'MODIFY'; +MUTEX: 'MUTEX'; +MYSQL: 'MYSQL'; +MYSQL_ERRNO: 'MYSQL_ERRNO'; +NAME: 'NAME'; +NAMES: 'NAMES'; +NCHAR: 'NCHAR'; +NEVER: 'NEVER'; +NEXT: 'NEXT'; +NO: 'NO'; +NOCACHE: 'NOCACHE'; +NOCOPY: 'NOCOPY'; +NOCYCLE: 'NOCYCLE'; +NOMAXVALUE: 'NOMAXVALUE'; +NOMINVALUE: 'NOMINVALUE'; +NOWAIT: 'NOWAIT'; +NODEGROUP: 'NODEGROUP'; +NONE: 'NONE'; +ODBC: 'ODBC'; +OFFLINE: 'OFFLINE'; +OFFSET: 'OFFSET'; +OF: 'OF'; +OJ: 'OJ'; +OLD_PASSWORD: 'OLD_PASSWORD'; +ONE: 'ONE'; +ONLINE: 'ONLINE'; +ONLY: 'ONLY'; +OPEN: 'OPEN'; +OPTIMIZER_COSTS: 'OPTIMIZER_COSTS'; +OPTIONS: 'OPTIONS'; +OWNER: 'OWNER'; +PACK_KEYS: 'PACK_KEYS'; +PAGE: 'PAGE'; +PAGE_COMPRESSED: 'PAGE_COMPRESSED'; +PAGE_COMPRESSION_LEVEL: 'PAGE_COMPRESSION_LEVEL'; +PARSER: 'PARSER'; +PARTIAL: 'PARTIAL'; +PARTITIONING: 'PARTITIONING'; +PARTITIONS: 'PARTITIONS'; +PASSWORD: 'PASSWORD'; +PASSWORD_LOCK_TIME: 'PASSWORD_LOCK_TIME'; +PHASE: 'PHASE'; +PLUGIN: 'PLUGIN'; +PLUGIN_DIR: 'PLUGIN_DIR'; +PLUGINS: 'PLUGINS'; +PORT: 'PORT'; +PRECEDES: 'PRECEDES'; +PRECEDING: 'PRECEDING'; +PREPARE: 'PREPARE'; +PRESERVE: 'PRESERVE'; +PREV: 'PREV'; +PROCESSLIST: 'PROCESSLIST'; +PROFILE: 'PROFILE'; +PROFILES: 'PROFILES'; +PROXY: 'PROXY'; +QUERY: 'QUERY'; +QUICK: 'QUICK'; +REBUILD: 'REBUILD'; +RECOVER: 'RECOVER'; +RECURSIVE: 'RECURSIVE'; +REDO_BUFFER_SIZE: 'REDO_BUFFER_SIZE'; +REDUNDANT: 'REDUNDANT'; +RELAY: 'RELAY'; +RELAY_LOG_FILE: 'RELAY_LOG_FILE'; +RELAY_LOG_POS: 'RELAY_LOG_POS'; +RELAYLOG: 'RELAYLOG'; +REMOVE: 'REMOVE'; +REORGANIZE: 'REORGANIZE'; +REPAIR: 'REPAIR'; +REPLICATE_DO_DB: 'REPLICATE_DO_DB'; +REPLICATE_DO_TABLE: 'REPLICATE_DO_TABLE'; +REPLICATE_IGNORE_DB: 'REPLICATE_IGNORE_DB'; +REPLICATE_IGNORE_TABLE: 'REPLICATE_IGNORE_TABLE'; +REPLICATE_REWRITE_DB: 'REPLICATE_REWRITE_DB'; +REPLICATE_WILD_DO_TABLE: 'REPLICATE_WILD_DO_TABLE'; +REPLICATE_WILD_IGNORE_TABLE: 'REPLICATE_WILD_IGNORE_TABLE'; +REPLICATION: 'REPLICATION'; +RESET: 'RESET'; +RESTART: 'RESTART'; +RESUME: 'RESUME'; +RETURNED_SQLSTATE: 'RETURNED_SQLSTATE'; +RETURNING: 'RETURNING'; +RETURNS: 'RETURNS'; +REUSE: 'REUSE'; +ROLE: 'ROLE'; +ROLLBACK: 'ROLLBACK'; +ROLLUP: 'ROLLUP'; +ROTATE: 'ROTATE'; +ROW: 'ROW'; +ROWS: 'ROWS'; +ROW_FORMAT: 'ROW_FORMAT'; +RTREE: 'RTREE'; +SAVEPOINT: 'SAVEPOINT'; +SCHEDULE: 'SCHEDULE'; +SECURITY: 'SECURITY'; +SEQUENCE: 'SEQUENCE'; +SERVER: 'SERVER'; +SESSION: 'SESSION'; +SHARE: 'SHARE'; +SHARED: 'SHARED'; +SIGNED: 'SIGNED'; +SIMPLE: 'SIMPLE'; +SLAVE: 'SLAVE'; +SLOW: 'SLOW'; +SNAPSHOT: 'SNAPSHOT'; +SOCKET: 'SOCKET'; +SOME: 'SOME'; +SONAME: 'SONAME'; +SOUNDS: 'SOUNDS'; +SOURCE: 'SOURCE'; +SQL_AFTER_GTIDS: 'SQL_AFTER_GTIDS'; +SQL_AFTER_MTS_GAPS: 'SQL_AFTER_MTS_GAPS'; +SQL_BEFORE_GTIDS: 'SQL_BEFORE_GTIDS'; +SQL_BUFFER_RESULT: 'SQL_BUFFER_RESULT'; +SQL_CACHE: 'SQL_CACHE'; +SQL_NO_CACHE: 'SQL_NO_CACHE'; +SQL_THREAD: 'SQL_THREAD'; +START: 'START'; +STARTS: 'STARTS'; +STATS_AUTO_RECALC: 'STATS_AUTO_RECALC'; +STATS_PERSISTENT: 'STATS_PERSISTENT'; +STATS_SAMPLE_PAGES: 'STATS_SAMPLE_PAGES'; +STATUS: 'STATUS'; +STOP: 'STOP'; +STORAGE: 'STORAGE'; +STORED: 'STORED'; +STRING: 'STRING'; +SUBCLASS_ORIGIN: 'SUBCLASS_ORIGIN'; +SUBJECT: 'SUBJECT'; +SUBPARTITION: 'SUBPARTITION'; +SUBPARTITIONS: 'SUBPARTITIONS'; +SUSPEND: 'SUSPEND'; +SWAPS: 'SWAPS'; +SWITCHES: 'SWITCHES'; +TABLE_NAME: 'TABLE_NAME'; +TABLESPACE: 'TABLESPACE'; +TABLE_TYPE: 'TABLE_TYPE'; +TEMPORARY: 'TEMPORARY'; +TEMPTABLE: 'TEMPTABLE'; +THAN: 'THAN'; +TRADITIONAL: 'TRADITIONAL'; +TRANSACTION: 'TRANSACTION'; +TRANSACTIONAL: 'TRANSACTIONAL'; +TRIGGERS: 'TRIGGERS'; +TRUNCATE: 'TRUNCATE'; +UNBOUNDED: 'UNBOUNDED'; +UNDEFINED: 'UNDEFINED'; +UNDOFILE: 'UNDOFILE'; +UNDO_BUFFER_SIZE: 'UNDO_BUFFER_SIZE'; +UNINSTALL: 'UNINSTALL'; +UNKNOWN: 'UNKNOWN'; +UNTIL: 'UNTIL'; +UPGRADE: 'UPGRADE'; +USER: 'USER'; +USE_FRM: 'USE_FRM'; +USER_RESOURCES: 'USER_RESOURCES'; +VALIDATION: 'VALIDATION'; +VALUE: 'VALUE'; +VARIABLES: 'VARIABLES'; +VIEW: 'VIEW'; +VIRTUAL: 'VIRTUAL'; +VISIBLE: 'VISIBLE'; +WAIT: 'WAIT'; +WARNINGS: 'WARNINGS'; +WINDOW: 'WINDOW'; +WITHOUT: 'WITHOUT'; +WORK: 'WORK'; +WRAPPER: 'WRAPPER'; +X509: 'X509'; +XA: 'XA'; +XML: 'XML'; +YES: 'YES'; + +// Date format Keywords + +EUR: 'EUR'; +USA: 'USA'; +JIS: 'JIS'; +ISO: 'ISO'; +INTERNAL: 'INTERNAL'; + + +// Interval type Keywords + +QUARTER: 'QUARTER'; +MONTH: 'MONTH'; +DAY: 'DAY'; +HOUR: 'HOUR'; +MINUTE: 'MINUTE'; +WEEK: 'WEEK'; +SECOND: 'SECOND'; +MICROSECOND: 'MICROSECOND'; + + +// PRIVILEGES + +ADMIN: 'ADMIN'; +APPLICATION_PASSWORD_ADMIN: 'APPLICATION_PASSWORD_ADMIN'; +AUDIT_ABORT_EXEMPT: 'AUDIT_ABORT_EXEMPT'; +AUDIT_ADMIN: 'AUDIT_ADMIN'; +AUTHENTICATION_POLICY_ADMIN: 'AUTHENTICATION_POLICY_ADMIN'; +BACKUP_ADMIN: 'BACKUP_ADMIN'; +BINLOG_ADMIN: 'BINLOG_ADMIN'; +BINLOG_ENCRYPTION_ADMIN: 'BINLOG_ENCRYPTION_ADMIN'; +CLONE_ADMIN: 'CLONE_ADMIN'; +CONNECTION_ADMIN: 'CONNECTION_ADMIN'; +ENCRYPTION_KEY_ADMIN: 'ENCRYPTION_KEY_ADMIN'; +EXECUTE: 'EXECUTE'; +FILE: 'FILE'; +FIREWALL_ADMIN: 'FIREWALL_ADMIN'; +FIREWALL_EXEMPT: 'FIREWALL_EXEMPT'; +FIREWALL_USER: 'FIREWALL_USER'; +FLUSH_OPTIMIZER_COSTS: 'FLUSH_OPTIMIZER_COSTS'; +FLUSH_STATUS: 'FLUSH_STATUS'; +FLUSH_TABLES: 'FLUSH_TABLES'; +FLUSH_USER_RESOURCES: 'FLUSH_USER_RESOURCES'; +GROUP_REPLICATION_ADMIN: 'GROUP_REPLICATION_ADMIN'; +INNODB_REDO_LOG_ARCHIVE: 'INNODB_REDO_LOG_ARCHIVE'; +INNODB_REDO_LOG_ENABLE: 'INNODB_REDO_LOG_ENABLE'; +INVOKE: 'INVOKE'; +LAMBDA: 'LAMBDA'; +NDB_STORED_USER: 'NDB_STORED_USER'; +PASSWORDLESS_USER_ADMIN: 'PASSWORDLESS_USER_ADMIN'; +PERSIST_RO_VARIABLES_ADMIN: 'PERSIST_RO_VARIABLES_ADMIN'; +PRIVILEGES: 'PRIVILEGES'; +PROCESS: 'PROCESS'; +RELOAD: 'RELOAD'; +REPLICATION_APPLIER: 'REPLICATION_APPLIER'; +REPLICATION_SLAVE_ADMIN: 'REPLICATION_SLAVE_ADMIN'; +RESOURCE_GROUP_ADMIN: 'RESOURCE_GROUP_ADMIN'; +RESOURCE_GROUP_USER: 'RESOURCE_GROUP_USER'; +ROLE_ADMIN: 'ROLE_ADMIN'; +ROUTINE: 'ROUTINE'; +S3: 'S3'; +SERVICE_CONNECTION_ADMIN: 'SERVICE_CONNECTION_ADMIN'; +SESSION_VARIABLES_ADMIN: QUOTE_SYMB? 'SESSION_VARIABLES_ADMIN' QUOTE_SYMB?; +SET_USER_ID: 'SET_USER_ID'; +SHOW_ROUTINE: 'SHOW_ROUTINE'; +SHUTDOWN: 'SHUTDOWN'; +SUPER: 'SUPER'; +SYSTEM_VARIABLES_ADMIN: 'SYSTEM_VARIABLES_ADMIN'; +TABLES: 'TABLES'; +TABLE_ENCRYPTION_ADMIN: 'TABLE_ENCRYPTION_ADMIN'; +VERSION_TOKEN_ADMIN: 'VERSION_TOKEN_ADMIN'; +XA_RECOVER_ADMIN: 'XA_RECOVER_ADMIN'; + + +// Charsets + +ARMSCII8: 'ARMSCII8'; +ASCII: 'ASCII'; +BIG5: 'BIG5'; +CP1250: 'CP1250'; +CP1251: 'CP1251'; +CP1256: 'CP1256'; +CP1257: 'CP1257'; +CP850: 'CP850'; +CP852: 'CP852'; +CP866: 'CP866'; +CP932: 'CP932'; +DEC8: 'DEC8'; +EUCJPMS: 'EUCJPMS'; +EUCKR: 'EUCKR'; +GB18030: 'GB18030'; +GB2312: 'GB2312'; +GBK: 'GBK'; +GEOSTD8: 'GEOSTD8'; +GREEK: 'GREEK'; +HEBREW: 'HEBREW'; +HP8: 'HP8'; +KEYBCS2: 'KEYBCS2'; +KOI8R: 'KOI8R'; +KOI8U: 'KOI8U'; +LATIN1: 'LATIN1'; +LATIN2: 'LATIN2'; +LATIN5: 'LATIN5'; +LATIN7: 'LATIN7'; +MACCE: 'MACCE'; +MACROMAN: 'MACROMAN'; +SJIS: 'SJIS'; +SWE7: 'SWE7'; +TIS620: 'TIS620'; +UCS2: 'UCS2'; +UJIS: 'UJIS'; +UTF16: 'UTF16'; +UTF16LE: 'UTF16LE'; +UTF32: 'UTF32'; +UTF8: 'UTF8'; +UTF8MB3: 'UTF8MB3'; +UTF8MB4: 'UTF8MB4'; + + +// DB Engines + +ARCHIVE: 'ARCHIVE'; +BLACKHOLE: 'BLACKHOLE'; +CSV: 'CSV'; +FEDERATED: 'FEDERATED'; +INNODB: 'INNODB'; +MEMORY: 'MEMORY'; +MRG_MYISAM: 'MRG_MYISAM'; +MYISAM: 'MYISAM'; +NDB: 'NDB'; +NDBCLUSTER: 'NDBCLUSTER'; +PERFORMANCE_SCHEMA: 'PERFORMANCE_SCHEMA'; +TOKUDB: 'TOKUDB'; + + +// Transaction Levels + +REPEATABLE: 'REPEATABLE'; +COMMITTED: 'COMMITTED'; +UNCOMMITTED: 'UNCOMMITTED'; +SERIALIZABLE: 'SERIALIZABLE'; + + +// Spatial data types + +GEOMETRYCOLLECTION: 'GEOMETRYCOLLECTION'; +GEOMCOLLECTION: 'GEOMCOLLECTION'; +GEOMETRY: 'GEOMETRY'; +LINESTRING: 'LINESTRING'; +MULTILINESTRING: 'MULTILINESTRING'; +MULTIPOINT: 'MULTIPOINT'; +MULTIPOLYGON: 'MULTIPOLYGON'; +POINT: 'POINT'; +POLYGON: 'POLYGON'; + + +// Common function names + +ABS: 'ABS'; +ACOS: 'ACOS'; +ADDDATE: 'ADDDATE'; +ADDTIME: 'ADDTIME'; +AES_DECRYPT: 'AES_DECRYPT'; +AES_ENCRYPT: 'AES_ENCRYPT'; +AREA: 'AREA'; +ASBINARY: 'ASBINARY'; +ASIN: 'ASIN'; +ASTEXT: 'ASTEXT'; +ASWKB: 'ASWKB'; +ASWKT: 'ASWKT'; +ASYMMETRIC_DECRYPT: 'ASYMMETRIC_DECRYPT'; +ASYMMETRIC_DERIVE: 'ASYMMETRIC_DERIVE'; +ASYMMETRIC_ENCRYPT: 'ASYMMETRIC_ENCRYPT'; +ASYMMETRIC_SIGN: 'ASYMMETRIC_SIGN'; +ASYMMETRIC_VERIFY: 'ASYMMETRIC_VERIFY'; +ATAN: 'ATAN'; +ATAN2: 'ATAN2'; +BENCHMARK: 'BENCHMARK'; +BIN: 'BIN'; +BIT_COUNT: 'BIT_COUNT'; +BIT_LENGTH: 'BIT_LENGTH'; +BUFFER: 'BUFFER'; +CATALOG_NAME: 'CATALOG_NAME'; +CEIL: 'CEIL'; +CEILING: 'CEILING'; +CENTROID: 'CENTROID'; +CHARACTER_LENGTH: 'CHARACTER_LENGTH'; +CHARSET: 'CHARSET'; +CHAR_LENGTH: 'CHAR_LENGTH'; +COERCIBILITY: 'COERCIBILITY'; +COLLATION: 'COLLATION'; +COMPRESS: 'COMPRESS'; +CONCAT: 'CONCAT'; +CONCAT_WS: 'CONCAT_WS'; +CONNECTION_ID: 'CONNECTION_ID'; +CONV: 'CONV'; +CONVERT_TZ: 'CONVERT_TZ'; +COS: 'COS'; +COT: 'COT'; +CRC32: 'CRC32'; +CREATE_ASYMMETRIC_PRIV_KEY: 'CREATE_ASYMMETRIC_PRIV_KEY'; +CREATE_ASYMMETRIC_PUB_KEY: 'CREATE_ASYMMETRIC_PUB_KEY'; +CREATE_DH_PARAMETERS: 'CREATE_DH_PARAMETERS'; +CREATE_DIGEST: 'CREATE_DIGEST'; +CROSSES: 'CROSSES'; +DATEDIFF: 'DATEDIFF'; +DATE_FORMAT: 'DATE_FORMAT'; +DAYNAME: 'DAYNAME'; +DAYOFMONTH: 'DAYOFMONTH'; +DAYOFWEEK: 'DAYOFWEEK'; +DAYOFYEAR: 'DAYOFYEAR'; +DECODE: 'DECODE'; +DEGREES: 'DEGREES'; +DES_DECRYPT: 'DES_DECRYPT'; +DES_ENCRYPT: 'DES_ENCRYPT'; +DIMENSION: 'DIMENSION'; +DISJOINT: 'DISJOINT'; +ELT: 'ELT'; +ENCODE: 'ENCODE'; +ENCRYPT: 'ENCRYPT'; +ENDPOINT: 'ENDPOINT'; +ENGINE_ATTRIBUTE: 'ENGINE_ATTRIBUTE'; +ENVELOPE: 'ENVELOPE'; +EQUALS: 'EQUALS'; +EXP: 'EXP'; +EXPORT_SET: 'EXPORT_SET'; +EXTERIORRING: 'EXTERIORRING'; +EXTRACTVALUE: 'EXTRACTVALUE'; +FIELD: 'FIELD'; +FIND_IN_SET: 'FIND_IN_SET'; +FLOOR: 'FLOOR'; +FORMAT: 'FORMAT'; +FOUND_ROWS: 'FOUND_ROWS'; +FROM_BASE64: 'FROM_BASE64'; +FROM_DAYS: 'FROM_DAYS'; +FROM_UNIXTIME: 'FROM_UNIXTIME'; +GEOMCOLLFROMTEXT: 'GEOMCOLLFROMTEXT'; +GEOMCOLLFROMWKB: 'GEOMCOLLFROMWKB'; +GEOMETRYCOLLECTIONFROMTEXT: 'GEOMETRYCOLLECTIONFROMTEXT'; +GEOMETRYCOLLECTIONFROMWKB: 'GEOMETRYCOLLECTIONFROMWKB'; +GEOMETRYFROMTEXT: 'GEOMETRYFROMTEXT'; +GEOMETRYFROMWKB: 'GEOMETRYFROMWKB'; +GEOMETRYN: 'GEOMETRYN'; +GEOMETRYTYPE: 'GEOMETRYTYPE'; +GEOMFROMTEXT: 'GEOMFROMTEXT'; +GEOMFROMWKB: 'GEOMFROMWKB'; +GET_FORMAT: 'GET_FORMAT'; +GET_LOCK: 'GET_LOCK'; +GLENGTH: 'GLENGTH'; +GREATEST: 'GREATEST'; +GTID_SUBSET: 'GTID_SUBSET'; +GTID_SUBTRACT: 'GTID_SUBTRACT'; +HEX: 'HEX'; +IFNULL: 'IFNULL'; +INET6_ATON: 'INET6_ATON'; +INET6_NTOA: 'INET6_NTOA'; +INET_ATON: 'INET_ATON'; +INET_NTOA: 'INET_NTOA'; +INSTR: 'INSTR'; +INTERIORRINGN: 'INTERIORRINGN'; +INTERSECTS: 'INTERSECTS'; +ISCLOSED: 'ISCLOSED'; +ISEMPTY: 'ISEMPTY'; +ISNULL: 'ISNULL'; +ISSIMPLE: 'ISSIMPLE'; +IS_FREE_LOCK: 'IS_FREE_LOCK'; +IS_IPV4: 'IS_IPV4'; +IS_IPV4_COMPAT: 'IS_IPV4_COMPAT'; +IS_IPV4_MAPPED: 'IS_IPV4_MAPPED'; +IS_IPV6: 'IS_IPV6'; +IS_USED_LOCK: 'IS_USED_LOCK'; +LAST_INSERT_ID: 'LAST_INSERT_ID'; +LCASE: 'LCASE'; +LEAST: 'LEAST'; +LENGTH: 'LENGTH'; +LINEFROMTEXT: 'LINEFROMTEXT'; +LINEFROMWKB: 'LINEFROMWKB'; +LINESTRINGFROMTEXT: 'LINESTRINGFROMTEXT'; +LINESTRINGFROMWKB: 'LINESTRINGFROMWKB'; +LN: 'LN'; +LOAD_FILE: 'LOAD_FILE'; +LOCATE: 'LOCATE'; +LOG: 'LOG'; +LOG10: 'LOG10'; +LOG2: 'LOG2'; +LOWER: 'LOWER'; +LPAD: 'LPAD'; +LTRIM: 'LTRIM'; +MAKEDATE: 'MAKEDATE'; +MAKETIME: 'MAKETIME'; +MAKE_SET: 'MAKE_SET'; +MASTER_POS_WAIT: 'MASTER_POS_WAIT'; +MBRCONTAINS: 'MBRCONTAINS'; +MBRDISJOINT: 'MBRDISJOINT'; +MBREQUAL: 'MBREQUAL'; +MBRINTERSECTS: 'MBRINTERSECTS'; +MBROVERLAPS: 'MBROVERLAPS'; +MBRTOUCHES: 'MBRTOUCHES'; +MBRWITHIN: 'MBRWITHIN'; +MD5: 'MD5'; +MLINEFROMTEXT: 'MLINEFROMTEXT'; +MLINEFROMWKB: 'MLINEFROMWKB'; +MONTHNAME: 'MONTHNAME'; +MPOINTFROMTEXT: 'MPOINTFROMTEXT'; +MPOINTFROMWKB: 'MPOINTFROMWKB'; +MPOLYFROMTEXT: 'MPOLYFROMTEXT'; +MPOLYFROMWKB: 'MPOLYFROMWKB'; +MULTILINESTRINGFROMTEXT: 'MULTILINESTRINGFROMTEXT'; +MULTILINESTRINGFROMWKB: 'MULTILINESTRINGFROMWKB'; +MULTIPOINTFROMTEXT: 'MULTIPOINTFROMTEXT'; +MULTIPOINTFROMWKB: 'MULTIPOINTFROMWKB'; +MULTIPOLYGONFROMTEXT: 'MULTIPOLYGONFROMTEXT'; +MULTIPOLYGONFROMWKB: 'MULTIPOLYGONFROMWKB'; +NAME_CONST: 'NAME_CONST'; +NULLIF: 'NULLIF'; +NUMGEOMETRIES: 'NUMGEOMETRIES'; +NUMINTERIORRINGS: 'NUMINTERIORRINGS'; +NUMPOINTS: 'NUMPOINTS'; +OCT: 'OCT'; +OCTET_LENGTH: 'OCTET_LENGTH'; +ORD: 'ORD'; +OVERLAPS: 'OVERLAPS'; +PERIOD_ADD: 'PERIOD_ADD'; +PERIOD_DIFF: 'PERIOD_DIFF'; +PI: 'PI'; +POINTFROMTEXT: 'POINTFROMTEXT'; +POINTFROMWKB: 'POINTFROMWKB'; +POINTN: 'POINTN'; +POLYFROMTEXT: 'POLYFROMTEXT'; +POLYFROMWKB: 'POLYFROMWKB'; +POLYGONFROMTEXT: 'POLYGONFROMTEXT'; +POLYGONFROMWKB: 'POLYGONFROMWKB'; +POW: 'POW'; +POWER: 'POWER'; +QUOTE: 'QUOTE'; +RADIANS: 'RADIANS'; +RAND: 'RAND'; +RANDOM: 'RANDOM'; +RANDOM_BYTES: 'RANDOM_BYTES'; +RELEASE_LOCK: 'RELEASE_LOCK'; +REVERSE: 'REVERSE'; +ROUND: 'ROUND'; +ROW_COUNT: 'ROW_COUNT'; +RPAD: 'RPAD'; +RTRIM: 'RTRIM'; +SEC_TO_TIME: 'SEC_TO_TIME'; +SECONDARY_ENGINE_ATTRIBUTE: 'SECONDARY_ENGINE_ATTRIBUTE'; +SESSION_USER: 'SESSION_USER'; +SHA: 'SHA'; +SHA1: 'SHA1'; +SHA2: 'SHA2'; +SCHEMA_NAME: 'SCHEMA_NAME'; +SIGN: 'SIGN'; +SIN: 'SIN'; +SLEEP: 'SLEEP'; +SOUNDEX: 'SOUNDEX'; +SQL_THREAD_WAIT_AFTER_GTIDS: 'SQL_THREAD_WAIT_AFTER_GTIDS'; +SQRT: 'SQRT'; +SRID: 'SRID'; +STARTPOINT: 'STARTPOINT'; +STRCMP: 'STRCMP'; +STR_TO_DATE: 'STR_TO_DATE'; +ST_AREA: 'ST_AREA'; +ST_ASBINARY: 'ST_ASBINARY'; +ST_ASTEXT: 'ST_ASTEXT'; +ST_ASWKB: 'ST_ASWKB'; +ST_ASWKT: 'ST_ASWKT'; +ST_BUFFER: 'ST_BUFFER'; +ST_CENTROID: 'ST_CENTROID'; +ST_CONTAINS: 'ST_CONTAINS'; +ST_CROSSES: 'ST_CROSSES'; +ST_DIFFERENCE: 'ST_DIFFERENCE'; +ST_DIMENSION: 'ST_DIMENSION'; +ST_DISJOINT: 'ST_DISJOINT'; +ST_DISTANCE: 'ST_DISTANCE'; +ST_ENDPOINT: 'ST_ENDPOINT'; +ST_ENVELOPE: 'ST_ENVELOPE'; +ST_EQUALS: 'ST_EQUALS'; +ST_EXTERIORRING: 'ST_EXTERIORRING'; +ST_GEOMCOLLFROMTEXT: 'ST_GEOMCOLLFROMTEXT'; +ST_GEOMCOLLFROMTXT: 'ST_GEOMCOLLFROMTXT'; +ST_GEOMCOLLFROMWKB: 'ST_GEOMCOLLFROMWKB'; +ST_GEOMETRYCOLLECTIONFROMTEXT: 'ST_GEOMETRYCOLLECTIONFROMTEXT'; +ST_GEOMETRYCOLLECTIONFROMWKB: 'ST_GEOMETRYCOLLECTIONFROMWKB'; +ST_GEOMETRYFROMTEXT: 'ST_GEOMETRYFROMTEXT'; +ST_GEOMETRYFROMWKB: 'ST_GEOMETRYFROMWKB'; +ST_GEOMETRYN: 'ST_GEOMETRYN'; +ST_GEOMETRYTYPE: 'ST_GEOMETRYTYPE'; +ST_GEOMFROMTEXT: 'ST_GEOMFROMTEXT'; +ST_GEOMFROMWKB: 'ST_GEOMFROMWKB'; +ST_INTERIORRINGN: 'ST_INTERIORRINGN'; +ST_INTERSECTION: 'ST_INTERSECTION'; +ST_INTERSECTS: 'ST_INTERSECTS'; +ST_ISCLOSED: 'ST_ISCLOSED'; +ST_ISEMPTY: 'ST_ISEMPTY'; +ST_ISSIMPLE: 'ST_ISSIMPLE'; +ST_LINEFROMTEXT: 'ST_LINEFROMTEXT'; +ST_LINEFROMWKB: 'ST_LINEFROMWKB'; +ST_LINESTRINGFROMTEXT: 'ST_LINESTRINGFROMTEXT'; +ST_LINESTRINGFROMWKB: 'ST_LINESTRINGFROMWKB'; +ST_NUMGEOMETRIES: 'ST_NUMGEOMETRIES'; +ST_NUMINTERIORRING: 'ST_NUMINTERIORRING'; +ST_NUMINTERIORRINGS: 'ST_NUMINTERIORRINGS'; +ST_NUMPOINTS: 'ST_NUMPOINTS'; +ST_OVERLAPS: 'ST_OVERLAPS'; +ST_POINTFROMTEXT: 'ST_POINTFROMTEXT'; +ST_POINTFROMWKB: 'ST_POINTFROMWKB'; +ST_POINTN: 'ST_POINTN'; +ST_POLYFROMTEXT: 'ST_POLYFROMTEXT'; +ST_POLYFROMWKB: 'ST_POLYFROMWKB'; +ST_POLYGONFROMTEXT: 'ST_POLYGONFROMTEXT'; +ST_POLYGONFROMWKB: 'ST_POLYGONFROMWKB'; +ST_SRID: 'ST_SRID'; +ST_STARTPOINT: 'ST_STARTPOINT'; +ST_SYMDIFFERENCE: 'ST_SYMDIFFERENCE'; +ST_TOUCHES: 'ST_TOUCHES'; +ST_UNION: 'ST_UNION'; +ST_WITHIN: 'ST_WITHIN'; +ST_X: 'ST_X'; +ST_Y: 'ST_Y'; +SUBDATE: 'SUBDATE'; +SUBSTRING_INDEX: 'SUBSTRING_INDEX'; +SUBTIME: 'SUBTIME'; +SYSTEM_USER: 'SYSTEM_USER'; +TAN: 'TAN'; +TIMEDIFF: 'TIMEDIFF'; +TIMESTAMPADD: 'TIMESTAMPADD'; +TIMESTAMPDIFF: 'TIMESTAMPDIFF'; +TIME_FORMAT: 'TIME_FORMAT'; +TIME_TO_SEC: 'TIME_TO_SEC'; +TOUCHES: 'TOUCHES'; +TO_BASE64: 'TO_BASE64'; +TO_DAYS: 'TO_DAYS'; +TO_SECONDS: 'TO_SECONDS'; +TP_CONNECTION_ADMIN: 'TP_CONNECTION_ADMIN'; +UCASE: 'UCASE'; +UNCOMPRESS: 'UNCOMPRESS'; +UNCOMPRESSED_LENGTH: 'UNCOMPRESSED_LENGTH'; +UNHEX: 'UNHEX'; +UNIX_TIMESTAMP: 'UNIX_TIMESTAMP'; +UPDATEXML: 'UPDATEXML'; +UPPER: 'UPPER'; +UUID: 'UUID'; +UUID_SHORT: 'UUID_SHORT'; +VALIDATE_PASSWORD_STRENGTH: 'VALIDATE_PASSWORD_STRENGTH'; +VERSION: 'VERSION'; +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'; +WEEKDAY: 'WEEKDAY'; +WEEKOFYEAR: 'WEEKOFYEAR'; +WEIGHT_STRING: 'WEIGHT_STRING'; +WITHIN: 'WITHIN'; +YEARWEEK: 'YEARWEEK'; +Y_FUNCTION: 'Y'; +X_FUNCTION: 'X'; + + + + +// Operators +// Operators. Assigns + +VAR_ASSIGN: ':='; +PLUS_ASSIGN: '+='; +MINUS_ASSIGN: '-='; +MULT_ASSIGN: '*='; +DIV_ASSIGN: '/='; +MOD_ASSIGN: '%='; +AND_ASSIGN: '&='; +XOR_ASSIGN: '^='; +OR_ASSIGN: '|='; + + +// Operators. Arithmetics + +STAR: '*'; +DIVIDE: '/'; +MODULE: '%'; +PLUS: '+'; +MINUS: '-'; +DIV: 'DIV'; +MOD: 'MOD'; + + +// Operators. Comparation + +EQUAL_SYMBOL: '='; +GREATER_SYMBOL: '>'; +LESS_SYMBOL: '<'; +EXCLAMATION_SYMBOL: '!'; + + +// Operators. Bit + +BIT_NOT_OP: '~'; +BIT_OR_OP: '|'; +BIT_AND_OP: '&'; +BIT_XOR_OP: '^'; + + +// Constructors symbols + +DOT: '.'; +LR_BRACKET: '('; +RR_BRACKET: ')'; +COMMA: ','; +SEMI: ';'; +AT_SIGN: '@'; +ZERO_DECIMAL: '0'; +ONE_DECIMAL: '1'; +TWO_DECIMAL: '2'; +SINGLE_QUOTE_SYMB: '\''; +DOUBLE_QUOTE_SYMB: '"'; +REVERSE_QUOTE_SYMB: '`'; +COLON_SYMB: ':'; + +fragment QUOTE_SYMB + : SINGLE_QUOTE_SYMB | DOUBLE_QUOTE_SYMB | REVERSE_QUOTE_SYMB + ; + + + +// Charsets + +CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`'; + + + +// File's sizes + + +FILESIZE_LITERAL: DEC_DIGIT+ ('K'|'M'|'G'|'T'); + + + +// Literal Primitives + + +START_NATIONAL_STRING_LITERAL: 'N' SQUOTA_STRING; +STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING; +DECIMAL_LITERAL: DEC_DIGIT+; +HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\'' + | '0X' HEX_DIGIT+; + +REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+ + | DEC_DIGIT+ '.' EXPONENT_NUM_PART + | (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART) + | DEC_DIGIT+ EXPONENT_NUM_PART; +NULL_SPEC_LITERAL: '\\' 'N'; +BIT_STRING: BIT_STRING_L; +STRING_CHARSET_NAME: '_' CHARSET_NAME; + + + + +// Hack for dotID +// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID) +// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID) + +DOT_ID: '.' ID_LITERAL; + + + +// Identifiers + +ID: ID_LITERAL; +// DOUBLE_QUOTE_ID: '"' ~'"'+ '"'; +REVERSE_QUOTE_ID: BQUOTA_STRING; +STRING_USER_NAME: ( + SQUOTA_STRING | DQUOTA_STRING + | BQUOTA_STRING | ID_LITERAL + ) '@' + ( + SQUOTA_STRING | DQUOTA_STRING + | BQUOTA_STRING | ID_LITERAL + | IP_ADDRESS + ); +IP_ADDRESS: ( + [0-9]+ '.' [0-9.]+ + | [0-9A-F]* ':' [0-9A-F]* ':' [0-9A-F:]+ + ); +LOCAL_ID: '@' + ( + [A-Z0-9._$\u0080-\uFFFF]+ + | SQUOTA_STRING + | DQUOTA_STRING + | BQUOTA_STRING + ); +GLOBAL_ID: '@' '@' + ( + [A-Z0-9._$\u0080-\uFFFF]+ + | BQUOTA_STRING + ); + + +// Fragments for Literal primitives + +fragment CHARSET_NAME: ARMSCII8 | ASCII | BIG5 | BINARY | CP1250 + | CP1251 | CP1256 | CP1257 | CP850 + | CP852 | CP866 | CP932 | DEC8 | EUCJPMS + | EUCKR | GB2312 | GBK | GEOSTD8 | GREEK + | HEBREW | HP8 | KEYBCS2 | KOI8R | KOI8U + | LATIN1 | LATIN2 | LATIN5 | LATIN7 + | MACCE | MACROMAN | SJIS | SWE7 | TIS620 + | UCS2 | UJIS | UTF16 | UTF16LE | UTF32 + | UTF8 | UTF8MB3 | UTF8MB4; + +fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+; +fragment ID_LITERAL: [A-Z_$0-9\u0080-\uFFFF]*?[A-Z_$\u0080-\uFFFF]+?[A-Z_$0-9\u0080-\uFFFF]*; +fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"'; +fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\''; +fragment BQUOTA_STRING: '`' ( ~'`' | '``' )* '`'; +fragment HEX_DIGIT: [0-9A-F]; +fragment DEC_DIGIT: [0-9]; +fragment BIT_STRING_L: 'B' '\'' [01]+ '\''; + + + +// Last tokens must generate Errors + +ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL); diff --git a/pymysqlreplication/ddl_parser/MySqlLexer.py b/pymysqlreplication/ddl_parser/MySqlLexer.py new file mode 100644 index 00000000..14f5223f --- /dev/null +++ b/pymysqlreplication/ddl_parser/MySqlLexer.py @@ -0,0 +1,7304 @@ +# Generated from MySqlLexer.g4 by ANTLR 4.13.0 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +def serializedATN(): + return [ + 4,0,1162,13737,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5, + 7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, + 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, + 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, + 2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32, + 7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38, + 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, + 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51, + 2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58, + 7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64, + 2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71, + 7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77, + 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, + 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90, + 2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97, + 7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103, + 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, + 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, + 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, + 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, + 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, + 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, + 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, + 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, + 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, + 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, + 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, + 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, + 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, + 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, + 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, + 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, + 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, + 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, + 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, + 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, + 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, + 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, + 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, + 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, + 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, + 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, + 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, + 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, + 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, + 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, + 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, + 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, + 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, + 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, + 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, + 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, + 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, + 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, + 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, + 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, + 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, + 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, + 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, + 7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350, + 2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356, + 7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361, + 2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367, + 7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372, + 2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378, + 7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383, + 2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389, + 7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394, + 2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400, + 7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405, + 2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411, + 7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416, + 2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422, + 7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427, + 2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433, + 7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438, + 2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444, + 7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449, + 2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455, + 7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460, + 2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466, + 7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471, + 2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477, + 7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482, + 2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488, + 7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493, + 2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499, + 7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504, + 2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510, + 7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515, + 2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521, + 7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526, + 2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532, + 7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537, + 2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543, + 7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548, + 2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554, + 7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559, + 2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565, + 7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570, + 2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576, + 7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581, + 2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587, + 7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592, + 2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598, + 7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603, + 2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609, + 7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614, + 2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620, + 7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625, + 2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631, + 7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636, + 2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642, + 7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647, + 2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653, + 7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658, + 2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664, + 7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669, + 2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675, + 7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680, + 2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686, + 7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691, + 2,692,7,692,2,693,7,693,2,694,7,694,2,695,7,695,2,696,7,696,2,697, + 7,697,2,698,7,698,2,699,7,699,2,700,7,700,2,701,7,701,2,702,7,702, + 2,703,7,703,2,704,7,704,2,705,7,705,2,706,7,706,2,707,7,707,2,708, + 7,708,2,709,7,709,2,710,7,710,2,711,7,711,2,712,7,712,2,713,7,713, + 2,714,7,714,2,715,7,715,2,716,7,716,2,717,7,717,2,718,7,718,2,719, + 7,719,2,720,7,720,2,721,7,721,2,722,7,722,2,723,7,723,2,724,7,724, + 2,725,7,725,2,726,7,726,2,727,7,727,2,728,7,728,2,729,7,729,2,730, + 7,730,2,731,7,731,2,732,7,732,2,733,7,733,2,734,7,734,2,735,7,735, + 2,736,7,736,2,737,7,737,2,738,7,738,2,739,7,739,2,740,7,740,2,741, + 7,741,2,742,7,742,2,743,7,743,2,744,7,744,2,745,7,745,2,746,7,746, + 2,747,7,747,2,748,7,748,2,749,7,749,2,750,7,750,2,751,7,751,2,752, + 7,752,2,753,7,753,2,754,7,754,2,755,7,755,2,756,7,756,2,757,7,757, + 2,758,7,758,2,759,7,759,2,760,7,760,2,761,7,761,2,762,7,762,2,763, + 7,763,2,764,7,764,2,765,7,765,2,766,7,766,2,767,7,767,2,768,7,768, + 2,769,7,769,2,770,7,770,2,771,7,771,2,772,7,772,2,773,7,773,2,774, + 7,774,2,775,7,775,2,776,7,776,2,777,7,777,2,778,7,778,2,779,7,779, + 2,780,7,780,2,781,7,781,2,782,7,782,2,783,7,783,2,784,7,784,2,785, + 7,785,2,786,7,786,2,787,7,787,2,788,7,788,2,789,7,789,2,790,7,790, + 2,791,7,791,2,792,7,792,2,793,7,793,2,794,7,794,2,795,7,795,2,796, + 7,796,2,797,7,797,2,798,7,798,2,799,7,799,2,800,7,800,2,801,7,801, + 2,802,7,802,2,803,7,803,2,804,7,804,2,805,7,805,2,806,7,806,2,807, + 7,807,2,808,7,808,2,809,7,809,2,810,7,810,2,811,7,811,2,812,7,812, + 2,813,7,813,2,814,7,814,2,815,7,815,2,816,7,816,2,817,7,817,2,818, + 7,818,2,819,7,819,2,820,7,820,2,821,7,821,2,822,7,822,2,823,7,823, + 2,824,7,824,2,825,7,825,2,826,7,826,2,827,7,827,2,828,7,828,2,829, + 7,829,2,830,7,830,2,831,7,831,2,832,7,832,2,833,7,833,2,834,7,834, + 2,835,7,835,2,836,7,836,2,837,7,837,2,838,7,838,2,839,7,839,2,840, + 7,840,2,841,7,841,2,842,7,842,2,843,7,843,2,844,7,844,2,845,7,845, + 2,846,7,846,2,847,7,847,2,848,7,848,2,849,7,849,2,850,7,850,2,851, + 7,851,2,852,7,852,2,853,7,853,2,854,7,854,2,855,7,855,2,856,7,856, + 2,857,7,857,2,858,7,858,2,859,7,859,2,860,7,860,2,861,7,861,2,862, + 7,862,2,863,7,863,2,864,7,864,2,865,7,865,2,866,7,866,2,867,7,867, + 2,868,7,868,2,869,7,869,2,870,7,870,2,871,7,871,2,872,7,872,2,873, + 7,873,2,874,7,874,2,875,7,875,2,876,7,876,2,877,7,877,2,878,7,878, + 2,879,7,879,2,880,7,880,2,881,7,881,2,882,7,882,2,883,7,883,2,884, + 7,884,2,885,7,885,2,886,7,886,2,887,7,887,2,888,7,888,2,889,7,889, + 2,890,7,890,2,891,7,891,2,892,7,892,2,893,7,893,2,894,7,894,2,895, + 7,895,2,896,7,896,2,897,7,897,2,898,7,898,2,899,7,899,2,900,7,900, + 2,901,7,901,2,902,7,902,2,903,7,903,2,904,7,904,2,905,7,905,2,906, + 7,906,2,907,7,907,2,908,7,908,2,909,7,909,2,910,7,910,2,911,7,911, + 2,912,7,912,2,913,7,913,2,914,7,914,2,915,7,915,2,916,7,916,2,917, + 7,917,2,918,7,918,2,919,7,919,2,920,7,920,2,921,7,921,2,922,7,922, + 2,923,7,923,2,924,7,924,2,925,7,925,2,926,7,926,2,927,7,927,2,928, + 7,928,2,929,7,929,2,930,7,930,2,931,7,931,2,932,7,932,2,933,7,933, + 2,934,7,934,2,935,7,935,2,936,7,936,2,937,7,937,2,938,7,938,2,939, + 7,939,2,940,7,940,2,941,7,941,2,942,7,942,2,943,7,943,2,944,7,944, + 2,945,7,945,2,946,7,946,2,947,7,947,2,948,7,948,2,949,7,949,2,950, + 7,950,2,951,7,951,2,952,7,952,2,953,7,953,2,954,7,954,2,955,7,955, + 2,956,7,956,2,957,7,957,2,958,7,958,2,959,7,959,2,960,7,960,2,961, + 7,961,2,962,7,962,2,963,7,963,2,964,7,964,2,965,7,965,2,966,7,966, + 2,967,7,967,2,968,7,968,2,969,7,969,2,970,7,970,2,971,7,971,2,972, + 7,972,2,973,7,973,2,974,7,974,2,975,7,975,2,976,7,976,2,977,7,977, + 2,978,7,978,2,979,7,979,2,980,7,980,2,981,7,981,2,982,7,982,2,983, + 7,983,2,984,7,984,2,985,7,985,2,986,7,986,2,987,7,987,2,988,7,988, + 2,989,7,989,2,990,7,990,2,991,7,991,2,992,7,992,2,993,7,993,2,994, + 7,994,2,995,7,995,2,996,7,996,2,997,7,997,2,998,7,998,2,999,7,999, + 2,1000,7,1000,2,1001,7,1001,2,1002,7,1002,2,1003,7,1003,2,1004,7, + 1004,2,1005,7,1005,2,1006,7,1006,2,1007,7,1007,2,1008,7,1008,2,1009, + 7,1009,2,1010,7,1010,2,1011,7,1011,2,1012,7,1012,2,1013,7,1013,2, + 1014,7,1014,2,1015,7,1015,2,1016,7,1016,2,1017,7,1017,2,1018,7,1018, + 2,1019,7,1019,2,1020,7,1020,2,1021,7,1021,2,1022,7,1022,2,1023,7, + 1023,2,1024,7,1024,2,1025,7,1025,2,1026,7,1026,2,1027,7,1027,2,1028, + 7,1028,2,1029,7,1029,2,1030,7,1030,2,1031,7,1031,2,1032,7,1032,2, + 1033,7,1033,2,1034,7,1034,2,1035,7,1035,2,1036,7,1036,2,1037,7,1037, + 2,1038,7,1038,2,1039,7,1039,2,1040,7,1040,2,1041,7,1041,2,1042,7, + 1042,2,1043,7,1043,2,1044,7,1044,2,1045,7,1045,2,1046,7,1046,2,1047, + 7,1047,2,1048,7,1048,2,1049,7,1049,2,1050,7,1050,2,1051,7,1051,2, + 1052,7,1052,2,1053,7,1053,2,1054,7,1054,2,1055,7,1055,2,1056,7,1056, + 2,1057,7,1057,2,1058,7,1058,2,1059,7,1059,2,1060,7,1060,2,1061,7, + 1061,2,1062,7,1062,2,1063,7,1063,2,1064,7,1064,2,1065,7,1065,2,1066, + 7,1066,2,1067,7,1067,2,1068,7,1068,2,1069,7,1069,2,1070,7,1070,2, + 1071,7,1071,2,1072,7,1072,2,1073,7,1073,2,1074,7,1074,2,1075,7,1075, + 2,1076,7,1076,2,1077,7,1077,2,1078,7,1078,2,1079,7,1079,2,1080,7, + 1080,2,1081,7,1081,2,1082,7,1082,2,1083,7,1083,2,1084,7,1084,2,1085, + 7,1085,2,1086,7,1086,2,1087,7,1087,2,1088,7,1088,2,1089,7,1089,2, + 1090,7,1090,2,1091,7,1091,2,1092,7,1092,2,1093,7,1093,2,1094,7,1094, + 2,1095,7,1095,2,1096,7,1096,2,1097,7,1097,2,1098,7,1098,2,1099,7, + 1099,2,1100,7,1100,2,1101,7,1101,2,1102,7,1102,2,1103,7,1103,2,1104, + 7,1104,2,1105,7,1105,2,1106,7,1106,2,1107,7,1107,2,1108,7,1108,2, + 1109,7,1109,2,1110,7,1110,2,1111,7,1111,2,1112,7,1112,2,1113,7,1113, + 2,1114,7,1114,2,1115,7,1115,2,1116,7,1116,2,1117,7,1117,2,1118,7, + 1118,2,1119,7,1119,2,1120,7,1120,2,1121,7,1121,2,1122,7,1122,2,1123, + 7,1123,2,1124,7,1124,2,1125,7,1125,2,1126,7,1126,2,1127,7,1127,2, + 1128,7,1128,2,1129,7,1129,2,1130,7,1130,2,1131,7,1131,2,1132,7,1132, + 2,1133,7,1133,2,1134,7,1134,2,1135,7,1135,2,1136,7,1136,2,1137,7, + 1137,2,1138,7,1138,2,1139,7,1139,2,1140,7,1140,2,1141,7,1141,2,1142, + 7,1142,2,1143,7,1143,2,1144,7,1144,2,1145,7,1145,2,1146,7,1146,2, + 1147,7,1147,2,1148,7,1148,2,1149,7,1149,2,1150,7,1150,2,1151,7,1151, + 2,1152,7,1152,2,1153,7,1153,2,1154,7,1154,2,1155,7,1155,2,1156,7, + 1156,2,1157,7,1157,2,1158,7,1158,2,1159,7,1159,2,1160,7,1160,2,1161, + 7,1161,2,1162,7,1162,2,1163,7,1163,2,1164,7,1164,2,1165,7,1165,2, + 1166,7,1166,2,1167,7,1167,2,1168,7,1168,2,1169,7,1169,2,1170,7,1170, + 2,1171,7,1171,1,0,4,0,2347,8,0,11,0,12,0,2348,1,0,1,0,1,1,1,1,1, + 1,1,1,1,1,4,1,2358,8,1,11,1,12,1,2359,1,1,1,1,1,1,1,1,1,1,1,2,1, + 2,1,2,1,2,5,2,2371,8,2,10,2,12,2,2374,9,2,1,2,1,2,1,2,1,2,1,2,1, + 3,1,3,1,3,1,3,5,3,2385,8,3,10,3,12,3,2388,9,3,1,3,3,3,2391,8,3,1, + 3,5,3,2394,8,3,10,3,12,3,2397,9,3,1,3,3,3,2400,8,3,1,3,1,3,3,3,2404, + 8,3,1,3,1,3,1,3,1,3,3,3,2410,8,3,1,3,1,3,3,3,2414,8,3,3,3,2416,8, + 3,1,3,1,3,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1, + 6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,12, + 1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13, + 1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22, + 1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, + 1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33, + 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35, + 1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36, + 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39, + 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40, + 1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43, + 1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45, + 1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47, + 1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49, + 1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50, + 1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,53,1,53, + 1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55, + 1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56, + 1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58, + 1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60, + 1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62, + 1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64, + 1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68, + 1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69, + 1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72, + 1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75, + 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77, + 1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78, + 1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83, + 1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85, + 1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87, + 1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89, + 1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92, + 1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94, + 1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96, + 1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98, + 1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100, + 1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102, + 1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104, + 1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113, + 1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114, + 1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120, + 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,123, + 1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134, + 1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135, + 1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137, + 1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138, + 1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144, + 1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145, + 1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147, + 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,149, + 1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152, + 1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153, + 1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157, + 1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, + 1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158, + 1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160, + 1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161, + 1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163, + 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164, + 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, + 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165, + 1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169, + 1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170, + 1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173, + 1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,175,1,175,1,175,1,175, + 1,175,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176, + 1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178, + 1,178,1,179,1,179,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180, + 1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,182, + 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183, + 1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,185, + 1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187, + 1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188,1,189, + 1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190, + 1,191,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192, + 1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194, + 1,194,1,194,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196, + 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197, + 1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,200, + 1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,202,1,202, + 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204, + 1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,206, + 1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207, + 1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209, + 1,209,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210, + 1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212, + 1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213, + 1,213,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215, + 1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217, + 1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220, + 1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222, + 1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,229, + 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,230, + 1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232, + 1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,234, + 1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,235, + 1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237, + 1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238,1,238,1,238,1,238, + 1,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239, + 1,239,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,241, + 1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242, + 1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,243, + 1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243, + 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244, + 1,244,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245, + 1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246, + 1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246, + 1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, + 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251, + 1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251, + 1,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252, + 1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253, + 1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253, + 1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254,1,254, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255, + 1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255, + 1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257, + 1,257,1,257,1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,1,258, + 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259, + 1,259,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260, + 1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262, + 1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262, + 1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263, + 1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264, + 1,264,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265,1,265, + 1,265,1,265,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267, + 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,268,1,268, + 1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,268,1,269,1,269, + 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,270, + 1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,270, + 1,270,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271, + 1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,272,1,272,1,272, + 1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272, + 1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272,1,272, + 1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273, + 1,273,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274, + 1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, + 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280, + 1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,281,1,281,1,281, + 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283,1,283, + 1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285, + 1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,287, + 1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290, + 1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,291,1,291,1,291, + 1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292, + 1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,293,1,293, + 1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293, + 1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,1,295, + 1,295,1,295,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,297,1,297, + 1,297,1,297,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299, + 1,299,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, + 1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301, + 1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303, + 1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304, + 1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,306,1,306,1,306,1,306, + 1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307, + 1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,1,308,1,308,1,308, + 1,308,1,309,1,309,1,309,1,309,1,309,1,309,1,309,1,309,1,310,1,310, + 1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,311,1,311, + 1,311,1,311,1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312, + 1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,313,1,313,1,313,1,313, + 1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314, + 1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314, + 1,314,1,314,1,314,1,314,1,314,1,315,1,315,1,315,1,315,1,315,1,315, + 1,315,1,315,1,315,1,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316, + 1,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,317,1,318,1,318, + 1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,319,1,319,1,319,1,319, + 1,319,1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320, + 1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321, + 1,321,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,323, + 1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,324,1,324,1,324, + 1,324,1,324,1,324,1,324,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,1,325,1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326, + 1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,1,328,1,328,1,328, + 1,328,1,328,1,328,1,329,1,329,1,329,1,329,1,329,1,329,1,329,1,329, + 1,329,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330, + 1,330,1,330,1,330,1,330,1,331,1,331,1,331,1,331,1,331,1,331,1,331, + 1,331,1,332,1,332,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333, + 1,333,1,333,1,333,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,334, + 1,334,1,334,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335, + 1,335,1,336,1,336,1,336,1,336,1,337,1,337,1,337,1,338,1,338,1,338, + 1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,1,339,1,339,1,339, + 1,339,1,339,1,339,1,339,1,339,1,340,1,340,1,340,1,340,1,340,1,340, + 1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342, + 1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,343,1,343,1,343,1,343, + 1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,345,1,345, + 1,345,1,345,1,346,1,346,1,346,1,346,1,346,1,346,1,347,1,347,1,347, + 1,347,1,347,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,349, + 1,349,1,349,1,349,1,349,1,349,1,350,1,350,1,350,1,350,1,350,1,350, + 1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,352,1,352, + 1,352,1,352,1,352,1,352,1,353,1,353,1,353,1,353,1,353,1,353,1,353, + 1,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,355,1,355, + 1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,356,1,356,1,356,1,356, + 1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,356,1,357, + 1,357,1,357,1,357,1,357,1,357,1,357,1,358,1,358,1,358,1,358,1,358, + 1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,359,1,359,1,359, + 1,359,1,359,1,359,1,359,1,360,1,360,1,360,1,360,1,360,1,360,1,361, + 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,362, + 1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,363,1,363,1,363, + 1,363,1,363,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,365, + 1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365, + 1,365,1,365,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, + 1,366,1,366,1,366,1,367,1,367,1,367,1,367,1,367,1,367,1,367,1,367, + 1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,369,1,369,1,369,1,369, + 1,369,1,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370, + 1,370,1,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371, + 1,371,1,371,1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,372,1,372, + 1,372,1,372,1,372,1,372,1,372,3,372,5557,8,372,1,372,1,372,1,372, + 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,3,372, + 5572,8,372,3,372,5574,8,372,1,373,1,373,1,373,1,373,1,373,1,373, + 1,373,1,373,1,373,1,373,1,373,1,374,1,374,1,374,1,374,1,374,1,374, + 1,374,1,374,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375, + 1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, + 1,376,1,376,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377, + 1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,378, + 1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378,1,378, + 1,378,1,378,1,378,1,378,1,378,1,378,1,379,1,379,1,379,1,379,1,379, + 1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379,1,379, + 1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,381,1,381, + 1,381,1,381,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,382,1,382, + 1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1,383, + 1,383,1,383,1,384,1,384,1,384,1,384,1,385,1,385,1,385,1,385,1,385, + 1,385,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, + 1,386,1,386,1,387,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388, + 1,388,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,389,1,389, + 1,389,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,1,390,1,390, + 1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,391,1,391,1,391,1,391, + 1,391,1,391,1,391,1,391,1,392,1,392,1,392,1,392,1,392,1,392,1,392, + 1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,393,1,393, + 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, + 1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,394,1,395, + 1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,396,1,396,1,396,1,396, + 1,396,1,396,1,396,1,396,1,397,1,397,1,397,1,397,1,397,1,398,1,398, + 1,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,400, + 1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,401,1,401, + 1,401,1,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402, + 1,402,1,402,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403, + 1,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 1,404,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405, + 1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,405,1,406,1,406,1,406, + 1,406,1,407,1,407,1,407,1,407,1,407,1,408,1,408,1,408,1,408,1,408, + 1,408,1,408,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,409,1,410, + 1,410,1,410,1,410,1,410,1,410,1,411,1,411,1,411,1,411,1,411,1,411, + 1,411,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,413,1,413,1,413, + 1,413,1,413,1,414,1,414,1,414,1,414,1,414,1,414,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,416,1,417, + 1,417,1,417,1,417,1,417,1,417,1,417,1,417,1,417,1,418,1,418,1,418, + 1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,419,1,419,1,419,1,419, + 1,419,1,419,1,419,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,421, + 1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422, + 1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,423,1,423, + 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, + 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,424,1,424, + 1,424,1,424,1,424,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,426, + 1,426,1,426,1,426,1,426,1,426,1,426,1,427,1,427,1,427,1,427,1,427, + 1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427, + 1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,429,1,429,1,429,1,429, + 1,429,1,429,1,430,1,430,1,430,1,430,1,430,1,430,1,431,1,431,1,431, + 1,431,1,431,1,431,1,432,1,432,1,432,1,432,1,432,1,432,1,432,1,432, + 1,432,1,432,1,433,1,433,1,433,1,433,1,433,1,433,1,433,1,433,1,434, + 1,434,1,434,1,434,1,434,1,434,1,435,1,435,1,435,1,435,1,435,1,436, + 1,436,1,436,1,436,1,436,1,436,1,436,1,436,1,436,1,437,1,437,1,437, + 1,437,1,437,1,437,1,437,1,437,1,438,1,438,1,438,1,438,1,438,1,438, + 1,438,1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440, + 1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440, + 1,440,1,440,1,440,1,440,1,441,1,441,1,441,1,441,1,441,1,441,1,441, + 1,441,1,442,1,442,1,442,1,442,1,442,1,443,1,443,1,443,1,443,1,443, + 1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,444,1,445,1,445,1,445, + 1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447, + 1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448, + 1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448, + 1,448,1,448,1,448,1,448,1,449,1,449,1,449,1,449,1,449,1,449,1,449, + 1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,451, + 1,451,1,451,1,451,1,451,1,451,1,451,1,451,1,452,1,452,1,452,1,452, + 1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,452,1,453,1,453, + 1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454, + 1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,455,1,455, + 1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456, + 1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,457,1,457,1,457, + 1,457,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458, + 1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460, + 1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,461,1,462, + 1,462,1,462,1,462,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463, + 1,463,1,463,1,464,1,464,1,464,1,464,1,464,1,464,1,464,1,465,1,465, + 1,465,1,465,1,465,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466, + 1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,467,1,467,1,467,1,467, + 1,467,1,467,1,467,1,467,1,467,1,468,1,468,1,468,1,468,1,468,1,469, + 1,469,1,469,1,469,1,469,1,469,1,469,1,470,1,470,1,470,1,470,1,470, + 1,471,1,471,1,471,1,471,1,471,1,471,1,472,1,472,1,472,1,472,1,472, + 1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474, + 1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476, + 1,476,1,476,1,476,1,476,1,477,1,477,1,477,1,477,1,477,1,477,1,477, + 1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477, + 1,477,1,477,1,477,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478, + 1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478,1,478, + 1,478,1,478,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479, + 1,479,1,479,1,479,1,479,1,480,1,480,1,480,1,480,1,480,1,480,1,480, + 1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480,1,480, + 1,480,1,480,1,480,1,480,1,480,1,480,1,481,1,481,1,481,1,481,1,481, + 1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,482,1,482,1,482,1,482, + 1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,482, + 1,482,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483,1,483, + 1,483,1,483,1,483,1,483,1,483,1,484,1,484,1,484,1,484,1,484,1,484, + 1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,484,1,485, + 1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485, + 1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486, + 1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,486,1,487,1,487,1,487, + 1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,487,1,488,1,488,1,488, + 1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488, + 1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,489, + 1,489,1,489,1,489,1,489,1,489,1,489,1,489,1,490,1,490,1,490,1,490, + 1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490,1,490, + 1,490,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491, + 1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,491,1,492,1,492,1,492, + 1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492,1,492, + 1,492,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493, + 1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,494,1,494, + 1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494, + 1,494,1,494,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495, + 1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,496, + 1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496, + 1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497, + 1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497, + 1,497,1,497,1,497,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498, + 1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498, + 1,498,1,498,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499,1,499, + 1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,500,1,501,1,501, + 1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501, + 1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,501,1,502,1,502,1,502, + 1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,502, + 1,502,1,502,1,502,1,502,1,502,1,502,1,502,1,503,1,503,1,503,1,503, + 1,503,1,503,1,503,1,504,1,504,1,504,1,504,1,504,1,504,1,504,1,505, + 1,505,1,505,1,505,1,505,1,505,1,506,1,506,1,506,1,506,1,506,1,506, + 1,506,1,506,1,506,1,506,1,506,1,506,1,506,1,507,1,507,1,507,1,507, + 1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,509,1,509,1,509, + 1,509,1,509,1,509,1,509,1,509,1,509,1,510,1,510,1,510,1,510,1,510, + 1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,512,1,512,1,512,1,512, + 1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513,1,514,1,514,1,514, + 1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,514,1,515,1,515, + 1,515,1,515,1,515,1,516,1,516,1,516,1,516,1,516,1,516,1,517,1,517, + 1,517,1,517,1,517,1,517,1,518,1,518,1,518,1,518,1,518,1,518,1,519, + 1,519,1,519,1,519,1,519,1,520,1,520,1,520,1,521,1,521,1,521,1,521, + 1,521,1,521,1,521,1,521,1,522,1,522,1,522,1,522,1,522,1,522,1,522, + 1,523,1,523,1,523,1,523,1,523,1,523,1,523,1,523,1,524,1,524,1,524, + 1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,524,1,525,1,525,1,525, + 1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,525,1,526,1,526,1,526, + 1,526,1,526,1,526,1,526,1,527,1,527,1,527,1,527,1,527,1,527,1,527, + 1,527,1,527,1,527,1,528,1,528,1,528,1,528,1,528,1,529,1,529,1,529, + 1,529,1,529,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,531, + 1,531,1,531,1,531,1,531,1,531,1,531,1,532,1,532,1,532,1,533,1,533, + 1,533,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534,1,534, + 1,534,1,534,1,534,1,535,1,535,1,535,1,535,1,536,1,536,1,536,1,536, + 1,536,1,536,1,536,1,537,1,537,1,537,1,537,1,537,1,538,1,538,1,538, + 1,538,1,538,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,539, + 1,539,1,539,1,539,1,539,1,539,1,539,1,539,1,540,1,540,1,540,1,540, + 1,540,1,540,1,540,1,540,1,541,1,541,1,541,1,541,1,541,1,541,1,542, + 1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,542,1,543,1,543, + 1,543,1,543,1,543,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544, + 1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,544,1,545,1,545,1,545, + 1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545, + 1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,545,1,546,1,546, + 1,546,1,546,1,546,1,546,1,546,1,547,1,547,1,547,1,547,1,547,1,547, + 1,547,1,547,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548, + 1,548,1,548,1,548,1,548,1,549,1,549,1,549,1,549,1,549,1,549,1,549, + 1,549,1,549,1,549,1,549,1,550,1,550,1,550,1,550,1,550,1,550,1,550, + 1,550,1,550,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551, + 1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,551,1,552, + 1,552,1,552,1,552,1,552,1,552,1,553,1,553,1,553,1,553,1,553,1,553, + 1,553,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554,1,554, + 1,554,1,555,1,555,1,555,1,555,1,555,1,555,1,555,1,555,1,556,1,556, + 1,556,1,556,1,556,1,557,1,557,1,557,1,557,1,557,1,557,1,557,1,557, + 1,557,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558,1,558, + 1,559,1,559,1,559,1,559,1,559,1,559,1,559,1,559,1,560,1,560,1,560, + 1,560,1,560,1,560,1,560,1,560,1,560,1,561,1,561,1,561,1,561,1,561, + 1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562,1,562, + 1,562,1,563,1,563,1,563,1,563,1,563,1,563,1,563,1,563,1,564,1,564, + 1,564,1,564,1,564,1,564,1,564,1,564,1,564,1,565,1,565,1,565,1,565, + 1,565,1,565,1,566,1,566,1,566,1,566,1,566,1,566,1,567,1,567,1,567, + 1,567,1,567,1,567,1,568,1,568,1,568,1,568,1,568,1,568,1,568,1,568, + 1,569,1,569,1,569,1,569,1,569,1,569,1,569,1,569,1,570,1,570,1,570, + 1,570,1,570,1,570,1,570,1,570,1,570,1,570,1,571,1,571,1,571,1,571, + 1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571,1,571, + 1,571,1,571,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,572,1,572, + 1,572,1,573,1,573,1,573,1,573,1,573,1,573,1,574,1,574,1,574,1,574, + 1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,574, + 1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575, + 1,575,1,575,1,575,1,576,1,576,1,576,1,576,1,576,1,576,1,576,1,576, + 1,576,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,578,1,578,1,578, + 1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,579,1,579,1,579, + 1,579,1,579,1,579,1,579,1,580,1,580,1,580,1,580,1,580,1,580,1,580, + 1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,580,1,581,1,581, + 1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581,1,581, + 1,581,1,581,1,581,1,581,1,581,1,581,1,582,1,582,1,582,1,582,1,582, + 1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582,1,582, + 1,582,1,582,1,582,1,582,1,583,1,583,1,583,1,583,1,583,1,583,1,583, + 1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583,1,583, + 1,583,1,583,1,583,1,583,1,583,1,584,1,584,1,584,1,584,1,584,1,584, + 1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584,1,584, + 1,584,1,584,1,584,1,584,1,585,1,585,1,585,1,585,1,585,1,585,1,585, + 1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585, + 1,585,1,585,1,585,1,585,1,585,1,585,1,586,1,586,1,586,1,586,1,586, + 1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586, + 1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586,1,586, + 1,586,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587,1,587, + 1,587,1,587,1,588,1,588,1,588,1,588,1,588,1,588,1,589,1,589,1,589, + 1,589,1,589,1,589,1,589,1,589,1,590,1,590,1,590,1,590,1,590,1,590, + 1,590,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591, + 1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,592,1,592,1,592, + 1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,593,1,593,1,593,1,593, + 1,593,1,593,1,593,1,593,1,594,1,594,1,594,1,594,1,594,1,594,1,595, + 1,595,1,595,1,595,1,595,1,596,1,596,1,596,1,596,1,596,1,596,1,596, + 1,596,1,596,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,598,1,598, + 1,598,1,598,1,598,1,598,1,598,1,599,1,599,1,599,1,599,1,600,1,600, + 1,600,1,600,1,600,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601, + 1,601,1,601,1,601,1,602,1,602,1,602,1,602,1,602,1,602,1,603,1,603, + 1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,604,1,604,1,604, + 1,604,1,604,1,604,1,604,1,604,1,604,1,605,1,605,1,605,1,605,1,605, + 1,605,1,605,1,605,1,605,1,606,1,606,1,606,1,606,1,606,1,606,1,606, + 1,606,1,606,1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,608,1,608, + 1,608,1,608,1,608,1,608,1,608,1,608,1,609,1,609,1,609,1,609,1,609, + 1,609,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,611,1,611,1,611, + 1,611,1,611,1,611,1,611,1,612,1,612,1,612,1,612,1,612,1,612,1,612, + 1,613,1,613,1,613,1,613,1,613,1,613,1,614,1,614,1,614,1,614,1,614, + 1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,615,1,616,1,616, + 1,616,1,616,1,616,1,616,1,616,1,617,1,617,1,617,1,617,1,617,1,618, + 1,618,1,618,1,618,1,618,1,618,1,618,1,619,1,619,1,619,1,619,1,619, + 1,619,1,619,1,620,1,620,1,620,1,620,1,620,1,620,1,620,1,621,1,621, + 1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621,1,621, + 1,621,1,621,1,621,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622, + 1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622,1,622, + 1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623, + 1,623,1,623,1,623,1,623,1,623,1,623,1,624,1,624,1,624,1,624,1,624, + 1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624, + 1,624,1,624,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625, + 1,625,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626, + 1,626,1,626,1,626,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627, + 1,627,1,627,1,627,1,628,1,628,1,628,1,628,1,628,1,628,1,629,1,629, + 1,629,1,629,1,629,1,629,1,629,1,630,1,630,1,630,1,630,1,630,1,630, + 1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630, + 1,630,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,631, + 1,631,1,631,1,631,1,631,1,631,1,631,1,631,1,632,1,632,1,632,1,632, + 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, + 1,632,1,632,1,632,1,632,1,633,1,633,1,633,1,633,1,633,1,633,1,633, + 1,634,1,634,1,634,1,634,1,634,1,635,1,635,1,635,1,635,1,635,1,635, + 1,635,1,635,1,636,1,636,1,636,1,636,1,636,1,636,1,636,1,637,1,637, + 1,637,1,637,1,637,1,637,1,637,1,638,1,638,1,638,1,638,1,638,1,638, + 1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,639, + 1,639,1,639,1,639,1,639,1,639,1,639,1,639,1,640,1,640,1,640,1,640, + 1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,641,1,641, + 1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641,1,641, + 1,641,1,642,1,642,1,642,1,642,1,642,1,642,1,642,1,642,1,643,1,643, + 1,643,1,643,1,643,1,643,1,644,1,644,1,644,1,644,1,644,1,644,1,644, + 1,644,1,644,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645,1,645, + 1,645,1,645,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646,1,646, + 1,646,1,646,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647,1,647, + 1,647,1,647,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,648,1,648, + 1,648,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649,1,649, + 1,650,1,650,1,650,1,650,1,650,1,651,1,651,1,651,1,651,1,651,1,651, + 1,651,1,651,1,651,1,651,1,651,1,651,1,652,1,652,1,652,1,652,1,652, + 1,652,1,652,1,652,1,652,1,652,1,652,1,652,1,653,1,653,1,653,1,653, + 1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,653,1,654, + 1,654,1,654,1,654,1,654,1,654,1,654,1,654,1,654,1,655,1,655,1,655, + 1,655,1,655,1,655,1,655,1,655,1,655,1,656,1,656,1,656,1,656,1,656, + 1,656,1,656,1,656,1,656,1,656,1,657,1,657,1,657,1,657,1,657,1,657, + 1,657,1,657,1,657,1,657,1,658,1,658,1,658,1,658,1,658,1,658,1,658, + 1,658,1,658,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659, + 1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,659,1,660,1,660,1,660, + 1,660,1,660,1,660,1,660,1,660,1,660,1,660,1,661,1,661,1,661,1,661, + 1,661,1,661,1,661,1,661,1,662,1,662,1,662,1,662,1,662,1,662,1,663, + 1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,664,1,664,1,664,1,664, + 1,664,1,665,1,665,1,665,1,665,1,665,1,665,1,665,1,665,1,666,1,666, + 1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666,1,666, + 1,666,1,666,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667,1,667, + 1,667,1,667,1,668,1,668,1,668,1,668,1,668,1,668,1,669,1,669,1,669, + 1,669,1,669,1,669,1,669,1,669,1,669,1,669,1,670,1,670,1,670,1,670, + 1,670,1,671,1,671,1,671,1,671,1,671,1,671,1,671,1,671,1,672,1,672, + 1,672,1,672,1,672,1,672,1,672,1,672,1,673,1,673,1,673,1,673,1,673, + 1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,675,1,675, + 1,675,1,675,1,675,1,675,1,675,1,676,1,676,1,676,1,676,1,676,1,676, + 1,676,1,676,1,677,1,677,1,677,1,677,1,677,1,678,1,678,1,678,1,678, + 1,678,1,678,1,678,1,678,1,679,1,679,1,679,1,679,1,679,1,680,1,680, + 1,680,1,681,1,681,1,681,1,681,1,682,1,682,1,682,1,682,1,683,1,683, + 1,683,1,683,1,684,1,684,1,684,1,684,1,685,1,685,1,685,1,685,1,686, + 1,686,1,686,1,686,1,687,1,687,1,687,1,687,1,687,1,687,1,687,1,687, + 1,687,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,688,1,689,1,689, + 1,689,1,689,1,689,1,689,1,690,1,690,1,690,1,690,1,691,1,691,1,691, + 1,691,1,691,1,692,1,692,1,692,1,692,1,692,1,692,1,692,1,693,1,693, + 1,693,1,693,1,693,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,695, + 1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695,1,695, + 1,696,1,696,1,696,1,696,1,696,1,696,1,697,1,697,1,697,1,697,1,697, + 1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697, + 1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697,1,697, + 1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698, + 1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,698,1,699,1,699,1,699, + 1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,699,1,700,1,700, + 1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700, + 1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700, + 1,700,1,700,1,700,1,700,1,701,1,701,1,701,1,701,1,701,1,701,1,701, + 1,701,1,701,1,701,1,701,1,701,1,701,1,702,1,702,1,702,1,702,1,702, + 1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,702,1,703,1,703,1,703, + 1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703, + 1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,703,1,704, + 1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,704, + 1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705,1,705, + 1,705,1,705,1,705,1,705,1,705,1,705,1,706,1,706,1,706,1,706,1,706, + 1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706,1,706, + 1,706,1,706,1,706,1,706,1,706,1,707,1,707,1,707,1,707,1,707,1,707, + 1,707,1,707,1,708,1,708,1,708,1,708,1,708,1,709,1,709,1,709,1,709, + 1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709,1,709, + 1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710, + 1,710,1,710,1,710,1,710,1,710,1,711,1,711,1,711,1,711,1,711,1,711, + 1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,711,1,712,1,712,1,712, + 1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712, + 1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,712,1,713,1,713,1,713, + 1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,713,1,714, + 1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714,1,714, + 1,714,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715, + 1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715,1,715, + 1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716, + 1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716,1,716, + 1,716,1,716,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717, + 1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717,1,717, + 1,717,1,717,1,717,1,717,1,718,1,718,1,718,1,718,1,718,1,718,1,718, + 1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718,1,718, + 1,718,1,718,1,718,1,718,1,718,1,719,1,719,1,719,1,719,1,719,1,719, + 1,719,1,720,1,720,1,720,1,720,1,720,1,720,1,720,1,721,1,721,1,721, + 1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721,1,721, + 1,721,1,721,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722, + 1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722,1,722, + 1,722,1,722,1,722,1,722,1,723,1,723,1,723,1,723,1,723,1,723,1,723, + 1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723, + 1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,723,1,724,1,724, + 1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,725,1,725, + 1,725,1,725,1,725,1,725,1,725,1,725,1,726,1,726,1,726,1,726,1,726, + 1,726,1,726,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727, + 1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727, + 1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728, + 1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728,1,728, + 1,728,1,728,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729, + 1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729, + 1,729,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730, + 1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,730,1,731, + 1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,731,1,732, + 1,732,1,732,1,732,1,732,1,732,1,732,1,732,1,733,1,733,1,733,1,734, + 1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734, + 1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734,1,734, + 1,734,1,734,1,735,3,735,9281,8,735,1,735,1,735,1,735,1,735,1,735, + 1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735, + 1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,1,735,3,735,9308, + 8,735,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736,1,736, + 1,736,1,736,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737,1,737, + 1,737,1,737,1,737,1,737,1,738,1,738,1,738,1,738,1,738,1,738,1,738, + 1,738,1,738,1,739,1,739,1,739,1,739,1,739,1,739,1,740,1,740,1,740, + 1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740, + 1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,740,1,741,1,741, + 1,741,1,741,1,741,1,741,1,741,1,742,1,742,1,742,1,742,1,742,1,742, + 1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742, + 1,742,1,742,1,742,1,742,1,742,1,742,1,743,1,743,1,743,1,743,1,743, + 1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743,1,743, + 1,743,1,743,1,743,1,743,1,744,1,744,1,744,1,744,1,744,1,744,1,744, + 1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,744,1,745, + 1,745,1,745,1,745,1,745,1,745,1,745,1,745,1,745,1,746,1,746,1,746, + 1,746,1,746,1,746,1,747,1,747,1,747,1,747,1,747,1,748,1,748,1,748, + 1,748,1,748,1,748,1,748,1,749,1,749,1,749,1,749,1,749,1,749,1,749, + 1,750,1,750,1,750,1,750,1,750,1,750,1,750,1,751,1,751,1,751,1,751, + 1,751,1,751,1,751,1,752,1,752,1,752,1,752,1,752,1,752,1,753,1,753, + 1,753,1,753,1,753,1,753,1,754,1,754,1,754,1,754,1,754,1,754,1,755, + 1,755,1,755,1,755,1,755,1,755,1,756,1,756,1,756,1,756,1,756,1,757, + 1,757,1,757,1,757,1,757,1,757,1,757,1,757,1,758,1,758,1,758,1,758, + 1,758,1,758,1,759,1,759,1,759,1,759,1,759,1,759,1,759,1,759,1,760, + 1,760,1,760,1,760,1,760,1,760,1,760,1,761,1,761,1,761,1,761,1,762, + 1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,763,1,763,1,763,1,763, + 1,763,1,763,1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,765,1,765, + 1,765,1,765,1,766,1,766,1,766,1,766,1,766,1,766,1,766,1,766,1,767, + 1,767,1,767,1,767,1,767,1,767,1,768,1,768,1,768,1,768,1,768,1,768, + 1,769,1,769,1,769,1,769,1,769,1,769,1,769,1,770,1,770,1,770,1,770, + 1,770,1,770,1,770,1,771,1,771,1,771,1,771,1,771,1,771,1,771,1,772, + 1,772,1,772,1,772,1,772,1,772,1,772,1,773,1,773,1,773,1,773,1,773, + 1,773,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,774,1,775, + 1,775,1,775,1,775,1,775,1,776,1,776,1,776,1,776,1,776,1,777,1,777, + 1,777,1,777,1,777,1,777,1,777,1,778,1,778,1,778,1,778,1,778,1,779, + 1,779,1,779,1,779,1,779,1,780,1,780,1,780,1,780,1,780,1,780,1,781, + 1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,782,1,782,1,782,1,782, + 1,782,1,782,1,783,1,783,1,783,1,783,1,783,1,784,1,784,1,784,1,784, + 1,784,1,784,1,784,1,784,1,785,1,785,1,785,1,785,1,785,1,785,1,785, + 1,785,1,786,1,786,1,786,1,786,1,786,1,786,1,786,1,786,1,787,1,787, + 1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,787,1,788,1,788,1,788, + 1,788,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789,1,789, + 1,790,1,790,1,790,1,790,1,790,1,790,1,790,1,791,1,791,1,791,1,791, + 1,791,1,791,1,791,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792, + 1,792,1,792,1,792,1,793,1,793,1,793,1,793,1,793,1,793,1,793,1,794, + 1,794,1,794,1,794,1,795,1,795,1,795,1,795,1,795,1,795,1,795,1,795, + 1,795,1,795,1,795,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796, + 1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796,1,796, + 1,797,1,797,1,797,1,797,1,797,1,797,1,797,1,798,1,798,1,798,1,798, + 1,798,1,798,1,798,1,798,1,798,1,798,1,798,1,799,1,799,1,799,1,799, + 1,799,1,799,1,799,1,799,1,799,1,799,1,800,1,800,1,800,1,800,1,800, + 1,800,1,800,1,800,1,800,1,800,1,800,1,800,1,801,1,801,1,801,1,801, + 1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,801,1,802,1,802, + 1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802,1,802, + 1,802,1,802,1,802,1,802,1,802,1,802,1,803,1,803,1,803,1,803,1,803, + 1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,803,1,804, + 1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,805,1,805,1,805, + 1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,806,1,806,1,806, + 1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806,1,806, + 1,806,1,806,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807,1,807, + 1,807,1,807,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808,1,808, + 1,808,1,808,1,808,1,808,1,809,1,809,1,809,1,809,1,809,1,809,1,810, + 1,810,1,810,1,810,1,810,1,810,1,810,1,810,1,811,1,811,1,811,1,811, + 1,812,1,812,1,812,1,812,1,812,1,813,1,813,1,813,1,813,1,813,1,813, + 1,813,1,813,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,815, + 1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815,1,815, + 1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816,1,816, + 1,816,1,817,1,817,1,817,1,817,1,817,1,818,1,818,1,818,1,818,1,818, + 1,818,1,818,1,818,1,818,1,819,1,819,1,819,1,819,1,819,1,820,1,820, + 1,820,1,820,1,820,1,820,1,820,1,821,1,821,1,821,1,821,1,821,1,821, + 1,822,1,822,1,822,1,822,1,822,1,822,1,823,1,823,1,823,1,823,1,823, + 1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823,1,823, + 1,823,1,823,1,823,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824, + 1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,825, + 1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,825, + 1,825,1,825,1,825,1,825,1,825,1,825,1,825,1,826,1,826,1,826,1,826, + 1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826, + 1,826,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827, + 1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,827,1,828,1,828,1,828, + 1,828,1,828,1,829,1,829,1,829,1,829,1,829,1,829,1,830,1,830,1,830, + 1,830,1,830,1,830,1,830,1,830,1,830,1,830,1,831,1,831,1,831,1,831, + 1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,832,1,833, + 1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,833,1,834, + 1,834,1,834,1,834,1,834,1,834,1,834,1,835,1,835,1,835,1,835,1,835, + 1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,835,1,836,1,836,1,836, + 1,836,1,836,1,837,1,837,1,837,1,837,1,837,1,837,1,837,1,837,1,838, + 1,838,1,838,1,838,1,838,1,838,1,838,1,838,1,838,1,839,1,839,1,839, + 1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839, + 1,839,1,839,1,839,1,840,1,840,1,840,1,840,1,840,1,840,1,840,1,840, + 1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841,1,841, + 1,841,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842,1,842, + 1,842,1,842,1,842,1,843,1,843,1,843,1,843,1,843,1,843,1,843,1,843, + 1,843,1,843,1,844,1,844,1,844,1,844,1,844,1,844,1,844,1,844,1,844, + 1,845,1,845,1,845,1,845,1,845,1,845,1,845,1,846,1,846,1,846,1,846, + 1,846,1,846,1,846,1,846,1,846,1,846,1,847,1,847,1,847,1,847,1,847, + 1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,847,1,848,1,848, + 1,848,1,848,1,848,1,849,1,849,1,849,1,849,1,849,1,849,1,849,1,849, + 1,849,1,849,1,849,1,850,1,850,1,850,1,850,1,851,1,851,1,851,1,851, + 1,852,1,852,1,852,1,852,1,852,1,852,1,853,1,853,1,853,1,853,1,853, + 1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853, + 1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853,1,853, + 1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854, + 1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854,1,854, + 1,854,1,854,1,854,1,854,1,855,1,855,1,855,1,855,1,855,1,855,1,855, + 1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855, + 1,855,1,855,1,855,1,856,1,856,1,856,1,856,1,856,1,856,1,856,1,856, + 1,856,1,856,1,856,1,856,1,856,1,856,1,857,1,857,1,857,1,857,1,857, + 1,857,1,857,1,857,1,858,1,858,1,858,1,858,1,858,1,858,1,858,1,858, + 1,858,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859,1,859, + 1,859,1,859,1,860,1,860,1,860,1,860,1,860,1,860,1,860,1,860,1,861, + 1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,861,1,862, + 1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,862,1,863,1,863, + 1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,863,1,864,1,864,1,864, + 1,864,1,864,1,864,1,864,1,865,1,865,1,865,1,865,1,865,1,865,1,865, + 1,865,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866,1,866, + 1,866,1,866,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867,1,867, + 1,867,1,867,1,867,1,868,1,868,1,868,1,868,1,868,1,868,1,868,1,868, + 1,868,1,868,1,869,1,869,1,869,1,869,1,869,1,869,1,869,1,869,1,869, + 1,870,1,870,1,870,1,870,1,871,1,871,1,871,1,871,1,871,1,871,1,871, + 1,872,1,872,1,872,1,872,1,872,1,872,1,872,1,872,1,873,1,873,1,873, + 1,873,1,873,1,873,1,873,1,873,1,873,1,874,1,874,1,874,1,874,1,874, + 1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874,1,874, + 1,874,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,875,1,876, + 1,876,1,876,1,876,1,876,1,876,1,876,1,877,1,877,1,877,1,877,1,878, + 1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,878,1,879, + 1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879,1,879, + 1,879,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880,1,880, + 1,880,1,880,1,880,1,881,1,881,1,881,1,881,1,881,1,881,1,882,1,882, + 1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,882,1,883, + 1,883,1,883,1,883,1,883,1,883,1,884,1,884,1,884,1,884,1,884,1,884, + 1,884,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885,1,885, + 1,885,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886,1,886, + 1,886,1,886,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,887,1,887, + 1,887,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888,1,888, + 1,888,1,888,1,888,1,888,1,889,1,889,1,889,1,889,1,889,1,889,1,889, + 1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,889,1,890, + 1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890,1,890, + 1,890,1,890,1,890,1,890,1,891,1,891,1,891,1,891,1,891,1,891,1,891, + 1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891, + 1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,891,1,892,1,892, + 1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892, + 1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892,1,892, + 1,892,1,892,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893, + 1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,893,1,894,1,894,1,894, + 1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894,1,894, + 1,894,1,894,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,895,1,895, + 1,895,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896,1,896, + 1,896,1,896,1,896,1,897,1,897,1,897,1,897,1,897,1,897,1,897,1,897, + 1,897,1,897,1,897,1,897,1,897,1,898,1,898,1,898,1,898,1,898,1,898, + 1,898,1,898,1,898,1,898,1,898,1,898,1,899,1,899,1,899,1,899,1,899, + 1,899,1,899,1,899,1,899,1,899,1,899,1,900,1,900,1,900,1,900,1,900, + 1,900,1,900,1,900,1,900,1,901,1,901,1,901,1,901,1,901,1,901,1,901, + 1,901,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,902,1,903, + 1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903,1,903, + 1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904,1,904, + 1,904,1,904,1,904,1,905,1,905,1,905,1,905,1,906,1,906,1,906,1,906, + 1,906,1,906,1,906,1,907,1,907,1,907,1,907,1,907,1,907,1,907,1,907, + 1,907,1,907,1,907,1,908,1,908,1,908,1,908,1,908,1,908,1,908,1,908, + 1,908,1,908,1,908,1,909,1,909,1,909,1,909,1,909,1,909,1,909,1,909, + 1,909,1,909,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,910,1,910, + 1,910,1,911,1,911,1,911,1,911,1,911,1,911,1,912,1,912,1,912,1,912, + 1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,912,1,913, + 1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,913,1,914, + 1,914,1,914,1,914,1,914,1,914,1,914,1,914,1,914,1,915,1,915,1,915, + 1,915,1,915,1,915,1,915,1,915,1,916,1,916,1,916,1,916,1,916,1,916, + 1,916,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,917,1,918, + 1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918,1,918, + 1,918,1,919,1,919,1,919,1,919,1,919,1,919,1,919,1,919,1,920,1,920, + 1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920,1,920, + 1,920,1,920,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921,1,921, + 1,921,1,921,1,921,1,921,1,921,1,921,1,922,1,922,1,922,1,922,1,922, + 1,922,1,922,1,922,1,923,1,923,1,923,1,923,1,923,1,923,1,923,1,923, + 1,923,1,923,1,923,1,923,1,923,1,924,1,924,1,924,1,924,1,924,1,924, + 1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,924,1,925,1,925, + 1,925,1,925,1,925,1,925,1,926,1,926,1,926,1,926,1,926,1,926,1,927, + 1,927,1,927,1,927,1,927,1,927,1,927,1,928,1,928,1,928,1,928,1,928, + 1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,928,1,929,1,929,1,929, + 1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,929,1,930,1,930, + 1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930,1,930, + 1,930,1,930,1,930,1,930,1,930,1,930,1,931,1,931,1,931,1,931,1,931, + 1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931,1,931, + 1,931,1,931,1,932,1,932,1,932,1,933,1,933,1,933,1,933,1,933,1,933, + 1,933,1,933,1,933,1,933,1,934,1,934,1,934,1,934,1,934,1,934,1,934, + 1,935,1,935,1,935,1,935,1,936,1,936,1,936,1,936,1,936,1,936,1,937, + 1,937,1,937,1,937,1,937,1,938,1,938,1,938,1,938,1,938,1,938,1,939, + 1,939,1,939,1,939,1,939,1,940,1,940,1,940,1,940,1,940,1,940,1,941, + 1,941,1,941,1,941,1,941,1,941,1,941,1,941,1,941,1,942,1,942,1,942, + 1,942,1,942,1,942,1,942,1,942,1,942,1,943,1,943,1,943,1,943,1,943, + 1,943,1,943,1,943,1,943,1,944,1,944,1,944,1,944,1,944,1,944,1,944, + 1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,944,1,945,1,945, + 1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,945,1,946, + 1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946,1,946, + 1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,947,1,948,1,948, + 1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948,1,948, + 1,948,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949,1,949, + 1,949,1,949,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950,1,950, + 1,950,1,950,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,951,1,951, + 1,951,1,952,1,952,1,952,1,952,1,953,1,953,1,953,1,953,1,953,1,953, + 1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,953,1,954,1,954,1,954, + 1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,954,1,955, + 1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,955,1,956,1,956, + 1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956,1,956, + 1,956,1,956,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957,1,957, + 1,957,1,957,1,957,1,957,1,957,1,958,1,958,1,958,1,958,1,958,1,958, + 1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,958,1,959,1,959,1,959, + 1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,959,1,960, + 1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960, + 1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960,1,960, + 1,960,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961, + 1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961,1,961, + 1,961,1,961,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962, + 1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,962,1,963, + 1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963,1,963, + 1,963,1,963,1,963,1,963,1,963,1,963,1,964,1,964,1,964,1,964,1,964, + 1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964,1,964, + 1,964,1,964,1,964,1,964,1,964,1,965,1,965,1,965,1,965,1,965,1,965, + 1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965,1,965, + 1,965,1,965,1,965,1,966,1,966,1,966,1,966,1,966,1,966,1,966,1,966, + 1,966,1,966,1,966,1,967,1,967,1,967,1,967,1,967,1,967,1,967,1,968, + 1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968,1,968, + 1,968,1,968,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969, + 1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,969,1,970,1,970,1,970, + 1,970,1,970,1,970,1,970,1,970,1,970,1,970,1,971,1,971,1,971,1,971, + 1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972,1,972, + 1,972,1,972,1,973,1,973,1,973,1,973,1,974,1,974,1,974,1,974,1,974, + 1,974,1,974,1,974,1,974,1,975,1,975,1,975,1,975,1,975,1,975,1,975, + 1,975,1,975,1,975,1,975,1,976,1,976,1,976,1,976,1,976,1,976,1,976, + 1,976,1,976,1,976,1,976,1,976,1,977,1,977,1,977,1,978,1,978,1,978, + 1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978,1,978, + 1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979,1,979, + 1,979,1,979,1,980,1,980,1,980,1,980,1,980,1,980,1,980,1,981,1,981, + 1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981,1,981, + 1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982,1,982, + 1,982,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983,1,983, + 1,983,1,983,1,983,1,983,1,983,1,983,1,984,1,984,1,984,1,984,1,984, + 1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,984,1,985, + 1,985,1,985,1,985,1,986,1,986,1,986,1,986,1,986,1,986,1,987,1,987, + 1,987,1,987,1,987,1,987,1,988,1,988,1,988,1,988,1,988,1,988,1,988, + 1,988,1,989,1,989,1,989,1,989,1,989,1,990,1,990,1,990,1,990,1,990, + 1,990,1,990,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991,1,991, + 1,991,1,991,1,991,1,991,1,992,1,992,1,992,1,992,1,992,1,992,1,992, + 1,992,1,992,1,992,1,992,1,992,1,992,1,993,1,993,1,993,1,993,1,993, + 1,993,1,993,1,993,1,994,1,994,1,994,1,994,1,994,1,994,1,995,1,995, + 1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,995,1,996,1,996,1,996, + 1,996,1,996,1,997,1,997,1,997,1,997,1,997,1,997,1,998,1,998,1,998, + 1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,998,1,999,1,999, + 1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999, + 1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999,1,999, + 1,999,1,999,1,999,1,1000,1,1000,1,1000,1,1000,1,1000,1,1000,1,1000, + 1,1000,1,1000,1,1000,1,1000,1,1000,1,1000,1,1001,1,1001,1,1001,1, + 1001,1,1002,1,1002,1,1002,1,1002,1,1002,1,1003,1,1003,1,1003,1,1003, + 1,1003,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1,1004,1, + 1004,1,1004,1,1004,1,1004,1,1005,1,1005,1,1005,1,1005,1,1005,1,1006, + 1,1006,1,1006,1,1006,1,1007,1,1007,1,1007,1,1007,1,1007,1,1007,1, + 1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1008,1,1009,1,1009, + 1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1, + 1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009, + 1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1009,1,1010,1,1010,1, + 1010,1,1010,1,1010,1,1011,1,1011,1,1011,1,1011,1,1011,1,1012,1,1012, + 1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1,1012,1, + 1013,1,1013,1,1013,1,1013,1,1013,1,1013,1,1013,1,1014,1,1014,1,1014, + 1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1,1014,1, + 1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1015,1,1016,1,1016, + 1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1,1016,1, + 1016,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017,1,1017, + 1,1017,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1,1018,1, + 1018,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019,1,1019, + 1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1,1020,1, + 1020,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021,1,1021, + 1,1021,1,1021,1,1021,1,1022,1,1022,1,1022,1,1022,1,1022,1,1022,1, + 1022,1,1022,1,1022,1,1022,1,1022,1,1022,1,1023,1,1023,1,1023,1,1023, + 1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1023,1,1024,1,1024,1, + 1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024,1,1024, + 1,1024,1,1024,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1025,1, + 1025,1,1025,1,1025,1,1025,1,1025,1,1025,1,1026,1,1026,1,1026,1,1026, + 1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1026,1,1027,1, + 1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027,1,1027, + 1,1027,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1,1028,1, + 1028,1,1028,1,1028,1,1028,1,1029,1,1029,1,1029,1,1029,1,1029,1,1029, + 1,1029,1,1029,1,1029,1,1029,1,1029,1,1029,1,1030,1,1030,1,1030,1, + 1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1030,1,1031,1,1031,1,1031, + 1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1,1031,1, + 1031,1,1031,1,1031,1,1031,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032, + 1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1,1032,1, + 1032,1,1032,1,1032,1,1032,1,1032,1,1033,1,1033,1,1033,1,1033,1,1033, + 1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1,1033,1, + 1033,1,1033,1,1033,1,1033,1,1033,1,1034,1,1034,1,1034,1,1034,1,1034, + 1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1,1034,1, + 1034,1,1034,1,1034,1,1034,1,1034,1,1035,1,1035,1,1035,1,1035,1,1035, + 1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1, + 1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1035, + 1,1035,1,1035,1,1035,1,1035,1,1035,1,1035,1,1036,1,1036,1,1036,1, + 1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036, + 1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1, + 1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1036,1,1037,1,1037,1,1037, + 1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1, + 1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1037,1,1038,1,1038, + 1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1, + 1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1038,1,1039,1,1039, + 1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1,1039,1, + 1039,1,1039,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040, + 1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1040,1,1041,1, + 1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041,1,1041, + 1,1041,1,1041,1,1041,1,1041,1,1041,1,1042,1,1042,1,1042,1,1042,1, + 1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042,1,1042, + 1,1042,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1, + 1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1043,1,1044, + 1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1044,1, + 1044,1,1044,1,1044,1,1044,1,1044,1,1044,1,1045,1,1045,1,1045,1,1045, + 1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1,1045,1, + 1045,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046,1,1046, + 1,1046,1,1046,1,1046,1,1047,1,1047,1,1047,1,1047,1,1047,1,1047,1, + 1047,1,1047,1,1047,1,1047,1,1047,1,1048,1,1048,1,1048,1,1048,1,1048, + 1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1048,1,1049,1,1049,1, + 1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049,1,1049, + 1,1049,1,1049,1,1049,1,1049,1,1050,1,1050,1,1050,1,1050,1,1050,1, + 1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050,1,1050, + 1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1, + 1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051,1,1051, + 1,1051,1,1051,1,1051,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1, + 1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052,1,1052, + 1,1052,1,1052,1,1052,1,1052,1,1052,1,1053,1,1053,1,1053,1,1053,1, + 1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053,1,1053, + 1,1053,1,1053,1,1053,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1, + 1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054,1,1054, + 1,1054,1,1054,1,1054,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1, + 1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055,1,1055, + 1,1055,1,1055,1,1055,1,1055,1,1056,1,1056,1,1056,1,1056,1,1056,1, + 1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1056,1,1057,1,1057, + 1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1,1057,1, + 1057,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058, + 1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1058,1,1059,1, + 1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059,1,1059, + 1,1059,1,1059,1,1059,1,1059,1,1059,1,1060,1,1060,1,1060,1,1060,1, + 1060,1,1060,1,1060,1,1060,1,1060,1,1060,1,1061,1,1061,1,1061,1,1061, + 1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1,1061,1, + 1061,1,1061,1,1061,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062, + 1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1062,1,1063,1, + 1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063, + 1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1063,1,1064,1, + 1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064, + 1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1064,1,1065,1,1065,1, + 1065,1,1065,1,1065,1,1065,1,1065,1,1065,1,1066,1,1066,1,1066,1,1066, + 1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1,1066,1, + 1066,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067, + 1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1067,1,1068,1, + 1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068,1,1068, + 1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1,1069,1, + 1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070,1,1070, + 1,1071,1,1071,1,1071,1,1071,1,1071,1,1072,1,1072,1,1072,1,1072,1, + 1072,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1073,1,1074, + 1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1074,1, + 1074,1,1074,1,1074,1,1074,1,1074,1,1074,1,1075,1,1075,1,1075,1,1075, + 1,1075,1,1075,1,1075,1,1075,1,1076,1,1076,1,1076,1,1076,1,1076,1, + 1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1076,1,1077,1,1077,1,1077, + 1,1077,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1,1078,1, + 1078,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079,1,1079, + 1,1079,1,1079,1,1079,1,1079,1,1080,1,1080,1,1080,1,1080,1,1080,1, + 1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1080,1,1081, + 1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1,1081,1, + 1081,1,1081,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082,1,1082, + 1,1082,1,1082,1,1082,1,1082,1,1083,1,1083,1,1083,1,1083,1,1083,1, + 1083,1,1083,1,1083,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084,1,1084, + 1,1084,1,1084,1,1084,1,1085,1,1085,1,1085,1,1085,1,1085,1,1085,1, + 1085,1,1085,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086,1,1086, + 1,1086,1,1086,1,1086,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1, + 1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087,1,1087, + 1,1087,1,1087,1,1087,1,1087,1,1088,1,1088,1,1088,1,1088,1,1088,1, + 1088,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089,1,1089, + 1,1089,1,1089,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1, + 1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090,1,1090, + 1,1090,1,1090,1,1090,1,1091,1,1091,1,1091,1,1091,1,1091,1,1091,1, + 1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092,1,1092, + 1,1092,1,1092,1,1092,1,1092,1,1092,1,1093,1,1093,1,1093,1,1093,1, + 1093,1,1093,1,1093,1,1093,1,1093,1,1093,1,1094,1,1094,1,1094,1,1094, + 1,1094,1,1094,1,1095,1,1095,1,1095,1,1095,1,1095,1,1096,1,1096,1, + 1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1096,1,1097, + 1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1, + 1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097, + 1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1097,1,1098,1,1098,1, + 1098,1,1098,1,1098,1,1098,1,1098,1,1098,1,1099,1,1099,1,1099,1,1099, + 1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1, + 1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099, + 1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1,1099,1, + 1099,1,1099,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100,1,1100, + 1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1,1101,1, + 1101,1,1101,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1102, + 1,1102,1,1102,1,1102,1,1102,1,1102,1,1102,1,1103,1,1103,1,1103,1, + 1103,1,1103,1,1103,1,1103,1,1104,1,1104,1,1104,1,1104,1,1104,1,1104, + 1,1104,1,1104,1,1104,1,1105,1,1105,1,1106,1,1106,1,1107,1,1107,1, + 1107,1,1108,1,1108,1,1108,1,1109,1,1109,1,1109,1,1110,1,1110,1,1110, + 1,1111,1,1111,1,1111,1,1112,1,1112,1,1112,1,1113,1,1113,1,1113,1, + 1114,1,1114,1,1114,1,1115,1,1115,1,1115,1,1116,1,1116,1,1117,1,1117, + 1,1118,1,1118,1,1119,1,1119,1,1120,1,1120,1,1121,1,1121,1,1121,1, + 1121,1,1122,1,1122,1,1122,1,1122,1,1123,1,1123,1,1124,1,1124,1,1125, + 1,1125,1,1126,1,1126,1,1127,1,1127,1,1128,1,1128,1,1129,1,1129,1, + 1130,1,1130,1,1131,1,1131,1,1132,1,1132,1,1133,1,1133,1,1134,1,1134, + 1,1135,1,1135,1,1136,1,1136,1,1137,1,1137,1,1138,1,1138,1,1139,1, + 1139,1,1140,1,1140,1,1141,1,1141,1,1142,1,1142,1,1143,1,1143,1,1144, + 1,1144,1,1144,3,1144,13441,8,1144,1,1145,1,1145,1,1145,1,1145,1, + 1146,4,1146,13448,8,1146,11,1146,12,1146,13449,1,1146,1,1146,1,1147, + 1,1147,1,1147,1,1148,1,1148,1,1148,3,1148,13460,8,1148,1,1149,4, + 1149,13463,8,1149,11,1149,12,1149,13464,1,1150,1,1150,1,1150,1,1150, + 1,1150,4,1150,13472,8,1150,11,1150,12,1150,13473,1,1150,1,1150,1, + 1150,1,1150,1,1150,1,1150,4,1150,13482,8,1150,11,1150,12,1150,13483, + 3,1150,13486,8,1150,1,1151,4,1151,13489,8,1151,11,1151,12,1151,13490, + 3,1151,13493,8,1151,1,1151,1,1151,4,1151,13497,8,1151,11,1151,12, + 1151,13498,1,1151,4,1151,13502,8,1151,11,1151,12,1151,13503,1,1151, + 1,1151,1,1151,1,1151,4,1151,13510,8,1151,11,1151,12,1151,13511,3, + 1151,13514,8,1151,1,1151,1,1151,4,1151,13518,8,1151,11,1151,12,1151, + 13519,1,1151,1,1151,1,1151,4,1151,13525,8,1151,11,1151,12,1151,13526, + 1,1151,1,1151,3,1151,13531,8,1151,1,1152,1,1152,1,1152,1,1153,1, + 1153,1,1154,1,1154,1,1154,1,1155,1,1155,1,1155,1,1156,1,1156,1,1157, + 1,1157,1,1158,1,1158,1,1158,1,1158,3,1158,13552,8,1158,1,1158,1, + 1158,1,1158,1,1158,1,1158,1,1158,3,1158,13560,8,1158,1,1159,4,1159, + 13563,8,1159,11,1159,12,1159,13564,1,1159,1,1159,4,1159,13569,8, + 1159,11,1159,12,1159,13570,1,1159,5,1159,13574,8,1159,10,1159,12, + 1159,13577,9,1159,1,1159,1,1159,5,1159,13581,8,1159,10,1159,12,1159, + 13584,9,1159,1,1159,1,1159,4,1159,13588,8,1159,11,1159,12,1159,13589, + 3,1159,13592,8,1159,1,1160,1,1160,4,1160,13596,8,1160,11,1160,12, + 1160,13597,1,1160,1,1160,1,1160,3,1160,13603,8,1160,1,1161,1,1161, + 1,1161,4,1161,13608,8,1161,11,1161,12,1161,13609,1,1161,3,1161,13613, + 8,1161,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1, + 1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162, + 1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1, + 1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162,1,1162, + 1,1162,1,1162,1,1162,1,1162,3,1162,13656,8,1162,1,1163,1,1163,3, + 1163,13660,8,1163,1,1163,4,1163,13663,8,1163,11,1163,12,1163,13664, + 1,1164,5,1164,13668,8,1164,10,1164,12,1164,13671,9,1164,1,1164,4, + 1164,13674,8,1164,11,1164,12,1164,13675,1,1164,5,1164,13679,8,1164, + 10,1164,12,1164,13682,9,1164,1,1165,1,1165,1,1165,1,1165,1,1165, + 1,1165,5,1165,13690,8,1165,10,1165,12,1165,13693,9,1165,1,1165,1, + 1165,1,1166,1,1166,1,1166,1,1166,1,1166,1,1166,5,1166,13703,8,1166, + 10,1166,12,1166,13706,9,1166,1,1166,1,1166,1,1167,1,1167,1,1167, + 1,1167,5,1167,13714,8,1167,10,1167,12,1167,13717,9,1167,1,1167,1, + 1167,1,1168,1,1168,1,1169,1,1169,1,1170,1,1170,1,1170,4,1170,13728, + 8,1170,11,1170,12,1170,13729,1,1170,1,1170,1,1171,1,1171,1,1171, + 1,1171,4,2359,2372,13669,13675,0,1172,1,1,3,2,5,3,7,4,9,5,11,6,13, + 7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18, + 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29, + 59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40, + 81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101, + 51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60, + 121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139, + 70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79, + 159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177, + 89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98, + 197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213, + 107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229, + 115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245, + 123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261, + 131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277, + 139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293, + 147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309, + 155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325, + 163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341, + 171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357, + 179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373, + 187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389, + 195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405, + 203,407,204,409,205,411,206,413,207,415,208,417,209,419,210,421, + 211,423,212,425,213,427,214,429,215,431,216,433,217,435,218,437, + 219,439,220,441,221,443,222,445,223,447,224,449,225,451,226,453, + 227,455,228,457,229,459,230,461,231,463,232,465,233,467,234,469, + 235,471,236,473,237,475,238,477,239,479,240,481,241,483,242,485, + 243,487,244,489,245,491,246,493,247,495,248,497,249,499,250,501, + 251,503,252,505,253,507,254,509,255,511,256,513,257,515,258,517, + 259,519,260,521,261,523,262,525,263,527,264,529,265,531,266,533, + 267,535,268,537,269,539,270,541,271,543,272,545,273,547,274,549, + 275,551,276,553,277,555,278,557,279,559,280,561,281,563,282,565, + 283,567,284,569,285,571,286,573,287,575,288,577,289,579,290,581, + 291,583,292,585,293,587,294,589,295,591,296,593,297,595,298,597, + 299,599,300,601,301,603,302,605,303,607,304,609,305,611,306,613, + 307,615,308,617,309,619,310,621,311,623,312,625,313,627,314,629, + 315,631,316,633,317,635,318,637,319,639,320,641,321,643,322,645, + 323,647,324,649,325,651,326,653,327,655,328,657,329,659,330,661, + 331,663,332,665,333,667,334,669,335,671,336,673,337,675,338,677, + 339,679,340,681,341,683,342,685,343,687,344,689,345,691,346,693, + 347,695,348,697,349,699,350,701,351,703,352,705,353,707,354,709, + 355,711,356,713,357,715,358,717,359,719,360,721,361,723,362,725, + 363,727,364,729,365,731,366,733,367,735,368,737,369,739,370,741, + 371,743,372,745,373,747,374,749,375,751,376,753,377,755,378,757, + 379,759,380,761,381,763,382,765,383,767,384,769,385,771,386,773, + 387,775,388,777,389,779,390,781,391,783,392,785,393,787,394,789, + 395,791,396,793,397,795,398,797,399,799,400,801,401,803,402,805, + 403,807,404,809,405,811,406,813,407,815,408,817,409,819,410,821, + 411,823,412,825,413,827,414,829,415,831,416,833,417,835,418,837, + 419,839,420,841,421,843,422,845,423,847,424,849,425,851,426,853, + 427,855,428,857,429,859,430,861,431,863,432,865,433,867,434,869, + 435,871,436,873,437,875,438,877,439,879,440,881,441,883,442,885, + 443,887,444,889,445,891,446,893,447,895,448,897,449,899,450,901, + 451,903,452,905,453,907,454,909,455,911,456,913,457,915,458,917, + 459,919,460,921,461,923,462,925,463,927,464,929,465,931,466,933, + 467,935,468,937,469,939,470,941,471,943,472,945,473,947,474,949, + 475,951,476,953,477,955,478,957,479,959,480,961,481,963,482,965, + 483,967,484,969,485,971,486,973,487,975,488,977,489,979,490,981, + 491,983,492,985,493,987,494,989,495,991,496,993,497,995,498,997, + 499,999,500,1001,501,1003,502,1005,503,1007,504,1009,505,1011,506, + 1013,507,1015,508,1017,509,1019,510,1021,511,1023,512,1025,513,1027, + 514,1029,515,1031,516,1033,517,1035,518,1037,519,1039,520,1041,521, + 1043,522,1045,523,1047,524,1049,525,1051,526,1053,527,1055,528,1057, + 529,1059,530,1061,531,1063,532,1065,533,1067,534,1069,535,1071,536, + 1073,537,1075,538,1077,539,1079,540,1081,541,1083,542,1085,543,1087, + 544,1089,545,1091,546,1093,547,1095,548,1097,549,1099,550,1101,551, + 1103,552,1105,553,1107,554,1109,555,1111,556,1113,557,1115,558,1117, + 559,1119,560,1121,561,1123,562,1125,563,1127,564,1129,565,1131,566, + 1133,567,1135,568,1137,569,1139,570,1141,571,1143,572,1145,573,1147, + 574,1149,575,1151,576,1153,577,1155,578,1157,579,1159,580,1161,581, + 1163,582,1165,583,1167,584,1169,585,1171,586,1173,587,1175,588,1177, + 589,1179,590,1181,591,1183,592,1185,593,1187,594,1189,595,1191,596, + 1193,597,1195,598,1197,599,1199,600,1201,601,1203,602,1205,603,1207, + 604,1209,605,1211,606,1213,607,1215,608,1217,609,1219,610,1221,611, + 1223,612,1225,613,1227,614,1229,615,1231,616,1233,617,1235,618,1237, + 619,1239,620,1241,621,1243,622,1245,623,1247,624,1249,625,1251,626, + 1253,627,1255,628,1257,629,1259,630,1261,631,1263,632,1265,633,1267, + 634,1269,635,1271,636,1273,637,1275,638,1277,639,1279,640,1281,641, + 1283,642,1285,643,1287,644,1289,645,1291,646,1293,647,1295,648,1297, + 649,1299,650,1301,651,1303,652,1305,653,1307,654,1309,655,1311,656, + 1313,657,1315,658,1317,659,1319,660,1321,661,1323,662,1325,663,1327, + 664,1329,665,1331,666,1333,667,1335,668,1337,669,1339,670,1341,671, + 1343,672,1345,673,1347,674,1349,675,1351,676,1353,677,1355,678,1357, + 679,1359,680,1361,681,1363,682,1365,683,1367,684,1369,685,1371,686, + 1373,687,1375,688,1377,689,1379,690,1381,691,1383,692,1385,693,1387, + 694,1389,695,1391,696,1393,697,1395,698,1397,699,1399,700,1401,701, + 1403,702,1405,703,1407,704,1409,705,1411,706,1413,707,1415,708,1417, + 709,1419,710,1421,711,1423,712,1425,713,1427,714,1429,715,1431,716, + 1433,717,1435,718,1437,719,1439,720,1441,721,1443,722,1445,723,1447, + 724,1449,725,1451,726,1453,727,1455,728,1457,729,1459,730,1461,731, + 1463,732,1465,733,1467,734,1469,735,1471,736,1473,737,1475,738,1477, + 739,1479,740,1481,741,1483,742,1485,743,1487,744,1489,745,1491,746, + 1493,747,1495,748,1497,749,1499,750,1501,751,1503,752,1505,753,1507, + 754,1509,755,1511,756,1513,757,1515,758,1517,759,1519,760,1521,761, + 1523,762,1525,763,1527,764,1529,765,1531,766,1533,767,1535,768,1537, + 769,1539,770,1541,771,1543,772,1545,773,1547,774,1549,775,1551,776, + 1553,777,1555,778,1557,779,1559,780,1561,781,1563,782,1565,783,1567, + 784,1569,785,1571,786,1573,787,1575,788,1577,789,1579,790,1581,791, + 1583,792,1585,793,1587,794,1589,795,1591,796,1593,797,1595,798,1597, + 799,1599,800,1601,801,1603,802,1605,803,1607,804,1609,805,1611,806, + 1613,807,1615,808,1617,809,1619,810,1621,811,1623,812,1625,813,1627, + 814,1629,815,1631,816,1633,817,1635,818,1637,819,1639,820,1641,821, + 1643,822,1645,823,1647,824,1649,825,1651,826,1653,827,1655,828,1657, + 829,1659,830,1661,831,1663,832,1665,833,1667,834,1669,835,1671,836, + 1673,837,1675,838,1677,839,1679,840,1681,841,1683,842,1685,843,1687, + 844,1689,845,1691,846,1693,847,1695,848,1697,849,1699,850,1701,851, + 1703,852,1705,853,1707,854,1709,855,1711,856,1713,857,1715,858,1717, + 859,1719,860,1721,861,1723,862,1725,863,1727,864,1729,865,1731,866, + 1733,867,1735,868,1737,869,1739,870,1741,871,1743,872,1745,873,1747, + 874,1749,875,1751,876,1753,877,1755,878,1757,879,1759,880,1761,881, + 1763,882,1765,883,1767,884,1769,885,1771,886,1773,887,1775,888,1777, + 889,1779,890,1781,891,1783,892,1785,893,1787,894,1789,895,1791,896, + 1793,897,1795,898,1797,899,1799,900,1801,901,1803,902,1805,903,1807, + 904,1809,905,1811,906,1813,907,1815,908,1817,909,1819,910,1821,911, + 1823,912,1825,913,1827,914,1829,915,1831,916,1833,917,1835,918,1837, + 919,1839,920,1841,921,1843,922,1845,923,1847,924,1849,925,1851,926, + 1853,927,1855,928,1857,929,1859,930,1861,931,1863,932,1865,933,1867, + 934,1869,935,1871,936,1873,937,1875,938,1877,939,1879,940,1881,941, + 1883,942,1885,943,1887,944,1889,945,1891,946,1893,947,1895,948,1897, + 949,1899,950,1901,951,1903,952,1905,953,1907,954,1909,955,1911,956, + 1913,957,1915,958,1917,959,1919,960,1921,961,1923,962,1925,963,1927, + 964,1929,965,1931,966,1933,967,1935,968,1937,969,1939,970,1941,971, + 1943,972,1945,973,1947,974,1949,975,1951,976,1953,977,1955,978,1957, + 979,1959,980,1961,981,1963,982,1965,983,1967,984,1969,985,1971,986, + 1973,987,1975,988,1977,989,1979,990,1981,991,1983,992,1985,993,1987, + 994,1989,995,1991,996,1993,997,1995,998,1997,999,1999,1000,2001, + 1001,2003,1002,2005,1003,2007,1004,2009,1005,2011,1006,2013,1007, + 2015,1008,2017,1009,2019,1010,2021,1011,2023,1012,2025,1013,2027, + 1014,2029,1015,2031,1016,2033,1017,2035,1018,2037,1019,2039,1020, + 2041,1021,2043,1022,2045,1023,2047,1024,2049,1025,2051,1026,2053, + 1027,2055,1028,2057,1029,2059,1030,2061,1031,2063,1032,2065,1033, + 2067,1034,2069,1035,2071,1036,2073,1037,2075,1038,2077,1039,2079, + 1040,2081,1041,2083,1042,2085,1043,2087,1044,2089,1045,2091,1046, + 2093,1047,2095,1048,2097,1049,2099,1050,2101,1051,2103,1052,2105, + 1053,2107,1054,2109,1055,2111,1056,2113,1057,2115,1058,2117,1059, + 2119,1060,2121,1061,2123,1062,2125,1063,2127,1064,2129,1065,2131, + 1066,2133,1067,2135,1068,2137,1069,2139,1070,2141,1071,2143,1072, + 2145,1073,2147,1074,2149,1075,2151,1076,2153,1077,2155,1078,2157, + 1079,2159,1080,2161,1081,2163,1082,2165,1083,2167,1084,2169,1085, + 2171,1086,2173,1087,2175,1088,2177,1089,2179,1090,2181,1091,2183, + 1092,2185,1093,2187,1094,2189,1095,2191,1096,2193,1097,2195,1098, + 2197,1099,2199,1100,2201,1101,2203,1102,2205,1103,2207,1104,2209, + 1105,2211,1106,2213,1107,2215,1108,2217,1109,2219,1110,2221,1111, + 2223,1112,2225,1113,2227,1114,2229,1115,2231,1116,2233,1117,2235, + 1118,2237,1119,2239,1120,2241,1121,2243,1122,2245,1123,2247,1124, + 2249,1125,2251,1126,2253,1127,2255,1128,2257,1129,2259,1130,2261, + 1131,2263,1132,2265,1133,2267,1134,2269,1135,2271,1136,2273,1137, + 2275,1138,2277,1139,2279,1140,2281,1141,2283,1142,2285,1143,2287, + 1144,2289,0,2291,1145,2293,1146,2295,1147,2297,1148,2299,1149,2301, + 1150,2303,1151,2305,1152,2307,1153,2309,1154,2311,1155,2313,1156, + 2315,1157,2317,1158,2319,1159,2321,1160,2323,1161,2325,0,2327,0, + 2329,0,2331,0,2333,0,2335,0,2337,0,2339,0,2341,0,2343,1162,1,0,42, + 3,0,9,10,13,13,32,32,2,0,9,9,32,32,2,0,10,10,13,13,2,0,65,65,97, + 97,2,0,68,68,100,100,2,0,76,76,108,108,2,0,84,84,116,116,2,0,69, + 69,101,101,2,0,82,82,114,114,2,0,87,87,119,119,2,0,89,89,121,121, + 2,0,83,83,115,115,2,0,78,78,110,110,2,0,90,90,122,122,2,0,67,67, + 99,99,2,0,73,73,105,105,2,0,66,66,98,98,2,0,85,85,117,117,2,0,70, + 70,102,102,2,0,79,79,111,111,2,0,72,72,104,104,2,0,75,75,107,107, + 2,0,71,71,103,103,2,0,77,77,109,109,2,0,86,86,118,118,2,0,80,80, + 112,112,2,0,88,88,120,120,2,0,74,74,106,106,2,0,81,81,113,113,8, + 0,71,71,75,75,77,77,84,84,103,103,107,107,109,109,116,116,1,0,48, + 57,2,0,46,46,48,57,3,0,48,57,65,70,97,102,3,0,48,58,65,70,97,102, + 7,0,36,36,46,46,48,57,65,90,95,95,97,122,128,65535,2,0,43,43,45, + 45,6,0,36,36,48,57,65,90,95,95,97,122,128,65535,5,0,36,36,65,90, + 95,95,97,122,128,65535,2,0,34,34,92,92,2,0,39,39,92,92,1,0,96,96, + 1,0,48,49,13835,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0, + 0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0, + 0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0, + 0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0, + 0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0, + 0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0, + 0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0, + 0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0, + 0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0, + 0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0, + 0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0, + 0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117, + 1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0, + 0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1, + 0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0, + 145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0, + 0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163, + 1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0, + 0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1, + 0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0, + 191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0, + 0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209, + 1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0, + 0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1, + 0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0, + 237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0, + 0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255, + 1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0, + 0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1, + 0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, + 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0, + 0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301, + 1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0, + 0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1, + 0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0, + 329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0, + 0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347, + 1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0, + 0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1, + 0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0, + 375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0, + 0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393, + 1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0, + 0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1, + 0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0, + 421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0, + 0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439, + 1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0, + 0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1, + 0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0, + 467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0, + 0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485, + 1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0, + 0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1, + 0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0, + 513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0, + 0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531, + 1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0, + 0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1, + 0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0, + 559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0, + 0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577, + 1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0, + 0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1, + 0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0, + 605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0, + 0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623, + 1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0, + 0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1, + 0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0, + 651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0, + 0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669, + 1,0,0,0,0,671,1,0,0,0,0,673,1,0,0,0,0,675,1,0,0,0,0,677,1,0,0,0, + 0,679,1,0,0,0,0,681,1,0,0,0,0,683,1,0,0,0,0,685,1,0,0,0,0,687,1, + 0,0,0,0,689,1,0,0,0,0,691,1,0,0,0,0,693,1,0,0,0,0,695,1,0,0,0,0, + 697,1,0,0,0,0,699,1,0,0,0,0,701,1,0,0,0,0,703,1,0,0,0,0,705,1,0, + 0,0,0,707,1,0,0,0,0,709,1,0,0,0,0,711,1,0,0,0,0,713,1,0,0,0,0,715, + 1,0,0,0,0,717,1,0,0,0,0,719,1,0,0,0,0,721,1,0,0,0,0,723,1,0,0,0, + 0,725,1,0,0,0,0,727,1,0,0,0,0,729,1,0,0,0,0,731,1,0,0,0,0,733,1, + 0,0,0,0,735,1,0,0,0,0,737,1,0,0,0,0,739,1,0,0,0,0,741,1,0,0,0,0, + 743,1,0,0,0,0,745,1,0,0,0,0,747,1,0,0,0,0,749,1,0,0,0,0,751,1,0, + 0,0,0,753,1,0,0,0,0,755,1,0,0,0,0,757,1,0,0,0,0,759,1,0,0,0,0,761, + 1,0,0,0,0,763,1,0,0,0,0,765,1,0,0,0,0,767,1,0,0,0,0,769,1,0,0,0, + 0,771,1,0,0,0,0,773,1,0,0,0,0,775,1,0,0,0,0,777,1,0,0,0,0,779,1, + 0,0,0,0,781,1,0,0,0,0,783,1,0,0,0,0,785,1,0,0,0,0,787,1,0,0,0,0, + 789,1,0,0,0,0,791,1,0,0,0,0,793,1,0,0,0,0,795,1,0,0,0,0,797,1,0, + 0,0,0,799,1,0,0,0,0,801,1,0,0,0,0,803,1,0,0,0,0,805,1,0,0,0,0,807, + 1,0,0,0,0,809,1,0,0,0,0,811,1,0,0,0,0,813,1,0,0,0,0,815,1,0,0,0, + 0,817,1,0,0,0,0,819,1,0,0,0,0,821,1,0,0,0,0,823,1,0,0,0,0,825,1, + 0,0,0,0,827,1,0,0,0,0,829,1,0,0,0,0,831,1,0,0,0,0,833,1,0,0,0,0, + 835,1,0,0,0,0,837,1,0,0,0,0,839,1,0,0,0,0,841,1,0,0,0,0,843,1,0, + 0,0,0,845,1,0,0,0,0,847,1,0,0,0,0,849,1,0,0,0,0,851,1,0,0,0,0,853, + 1,0,0,0,0,855,1,0,0,0,0,857,1,0,0,0,0,859,1,0,0,0,0,861,1,0,0,0, + 0,863,1,0,0,0,0,865,1,0,0,0,0,867,1,0,0,0,0,869,1,0,0,0,0,871,1, + 0,0,0,0,873,1,0,0,0,0,875,1,0,0,0,0,877,1,0,0,0,0,879,1,0,0,0,0, + 881,1,0,0,0,0,883,1,0,0,0,0,885,1,0,0,0,0,887,1,0,0,0,0,889,1,0, + 0,0,0,891,1,0,0,0,0,893,1,0,0,0,0,895,1,0,0,0,0,897,1,0,0,0,0,899, + 1,0,0,0,0,901,1,0,0,0,0,903,1,0,0,0,0,905,1,0,0,0,0,907,1,0,0,0, + 0,909,1,0,0,0,0,911,1,0,0,0,0,913,1,0,0,0,0,915,1,0,0,0,0,917,1, + 0,0,0,0,919,1,0,0,0,0,921,1,0,0,0,0,923,1,0,0,0,0,925,1,0,0,0,0, + 927,1,0,0,0,0,929,1,0,0,0,0,931,1,0,0,0,0,933,1,0,0,0,0,935,1,0, + 0,0,0,937,1,0,0,0,0,939,1,0,0,0,0,941,1,0,0,0,0,943,1,0,0,0,0,945, + 1,0,0,0,0,947,1,0,0,0,0,949,1,0,0,0,0,951,1,0,0,0,0,953,1,0,0,0, + 0,955,1,0,0,0,0,957,1,0,0,0,0,959,1,0,0,0,0,961,1,0,0,0,0,963,1, + 0,0,0,0,965,1,0,0,0,0,967,1,0,0,0,0,969,1,0,0,0,0,971,1,0,0,0,0, + 973,1,0,0,0,0,975,1,0,0,0,0,977,1,0,0,0,0,979,1,0,0,0,0,981,1,0, + 0,0,0,983,1,0,0,0,0,985,1,0,0,0,0,987,1,0,0,0,0,989,1,0,0,0,0,991, + 1,0,0,0,0,993,1,0,0,0,0,995,1,0,0,0,0,997,1,0,0,0,0,999,1,0,0,0, + 0,1001,1,0,0,0,0,1003,1,0,0,0,0,1005,1,0,0,0,0,1007,1,0,0,0,0,1009, + 1,0,0,0,0,1011,1,0,0,0,0,1013,1,0,0,0,0,1015,1,0,0,0,0,1017,1,0, + 0,0,0,1019,1,0,0,0,0,1021,1,0,0,0,0,1023,1,0,0,0,0,1025,1,0,0,0, + 0,1027,1,0,0,0,0,1029,1,0,0,0,0,1031,1,0,0,0,0,1033,1,0,0,0,0,1035, + 1,0,0,0,0,1037,1,0,0,0,0,1039,1,0,0,0,0,1041,1,0,0,0,0,1043,1,0, + 0,0,0,1045,1,0,0,0,0,1047,1,0,0,0,0,1049,1,0,0,0,0,1051,1,0,0,0, + 0,1053,1,0,0,0,0,1055,1,0,0,0,0,1057,1,0,0,0,0,1059,1,0,0,0,0,1061, + 1,0,0,0,0,1063,1,0,0,0,0,1065,1,0,0,0,0,1067,1,0,0,0,0,1069,1,0, + 0,0,0,1071,1,0,0,0,0,1073,1,0,0,0,0,1075,1,0,0,0,0,1077,1,0,0,0, + 0,1079,1,0,0,0,0,1081,1,0,0,0,0,1083,1,0,0,0,0,1085,1,0,0,0,0,1087, + 1,0,0,0,0,1089,1,0,0,0,0,1091,1,0,0,0,0,1093,1,0,0,0,0,1095,1,0, + 0,0,0,1097,1,0,0,0,0,1099,1,0,0,0,0,1101,1,0,0,0,0,1103,1,0,0,0, + 0,1105,1,0,0,0,0,1107,1,0,0,0,0,1109,1,0,0,0,0,1111,1,0,0,0,0,1113, + 1,0,0,0,0,1115,1,0,0,0,0,1117,1,0,0,0,0,1119,1,0,0,0,0,1121,1,0, + 0,0,0,1123,1,0,0,0,0,1125,1,0,0,0,0,1127,1,0,0,0,0,1129,1,0,0,0, + 0,1131,1,0,0,0,0,1133,1,0,0,0,0,1135,1,0,0,0,0,1137,1,0,0,0,0,1139, + 1,0,0,0,0,1141,1,0,0,0,0,1143,1,0,0,0,0,1145,1,0,0,0,0,1147,1,0, + 0,0,0,1149,1,0,0,0,0,1151,1,0,0,0,0,1153,1,0,0,0,0,1155,1,0,0,0, + 0,1157,1,0,0,0,0,1159,1,0,0,0,0,1161,1,0,0,0,0,1163,1,0,0,0,0,1165, + 1,0,0,0,0,1167,1,0,0,0,0,1169,1,0,0,0,0,1171,1,0,0,0,0,1173,1,0, + 0,0,0,1175,1,0,0,0,0,1177,1,0,0,0,0,1179,1,0,0,0,0,1181,1,0,0,0, + 0,1183,1,0,0,0,0,1185,1,0,0,0,0,1187,1,0,0,0,0,1189,1,0,0,0,0,1191, + 1,0,0,0,0,1193,1,0,0,0,0,1195,1,0,0,0,0,1197,1,0,0,0,0,1199,1,0, + 0,0,0,1201,1,0,0,0,0,1203,1,0,0,0,0,1205,1,0,0,0,0,1207,1,0,0,0, + 0,1209,1,0,0,0,0,1211,1,0,0,0,0,1213,1,0,0,0,0,1215,1,0,0,0,0,1217, + 1,0,0,0,0,1219,1,0,0,0,0,1221,1,0,0,0,0,1223,1,0,0,0,0,1225,1,0, + 0,0,0,1227,1,0,0,0,0,1229,1,0,0,0,0,1231,1,0,0,0,0,1233,1,0,0,0, + 0,1235,1,0,0,0,0,1237,1,0,0,0,0,1239,1,0,0,0,0,1241,1,0,0,0,0,1243, + 1,0,0,0,0,1245,1,0,0,0,0,1247,1,0,0,0,0,1249,1,0,0,0,0,1251,1,0, + 0,0,0,1253,1,0,0,0,0,1255,1,0,0,0,0,1257,1,0,0,0,0,1259,1,0,0,0, + 0,1261,1,0,0,0,0,1263,1,0,0,0,0,1265,1,0,0,0,0,1267,1,0,0,0,0,1269, + 1,0,0,0,0,1271,1,0,0,0,0,1273,1,0,0,0,0,1275,1,0,0,0,0,1277,1,0, + 0,0,0,1279,1,0,0,0,0,1281,1,0,0,0,0,1283,1,0,0,0,0,1285,1,0,0,0, + 0,1287,1,0,0,0,0,1289,1,0,0,0,0,1291,1,0,0,0,0,1293,1,0,0,0,0,1295, + 1,0,0,0,0,1297,1,0,0,0,0,1299,1,0,0,0,0,1301,1,0,0,0,0,1303,1,0, + 0,0,0,1305,1,0,0,0,0,1307,1,0,0,0,0,1309,1,0,0,0,0,1311,1,0,0,0, + 0,1313,1,0,0,0,0,1315,1,0,0,0,0,1317,1,0,0,0,0,1319,1,0,0,0,0,1321, + 1,0,0,0,0,1323,1,0,0,0,0,1325,1,0,0,0,0,1327,1,0,0,0,0,1329,1,0, + 0,0,0,1331,1,0,0,0,0,1333,1,0,0,0,0,1335,1,0,0,0,0,1337,1,0,0,0, + 0,1339,1,0,0,0,0,1341,1,0,0,0,0,1343,1,0,0,0,0,1345,1,0,0,0,0,1347, + 1,0,0,0,0,1349,1,0,0,0,0,1351,1,0,0,0,0,1353,1,0,0,0,0,1355,1,0, + 0,0,0,1357,1,0,0,0,0,1359,1,0,0,0,0,1361,1,0,0,0,0,1363,1,0,0,0, + 0,1365,1,0,0,0,0,1367,1,0,0,0,0,1369,1,0,0,0,0,1371,1,0,0,0,0,1373, + 1,0,0,0,0,1375,1,0,0,0,0,1377,1,0,0,0,0,1379,1,0,0,0,0,1381,1,0, + 0,0,0,1383,1,0,0,0,0,1385,1,0,0,0,0,1387,1,0,0,0,0,1389,1,0,0,0, + 0,1391,1,0,0,0,0,1393,1,0,0,0,0,1395,1,0,0,0,0,1397,1,0,0,0,0,1399, + 1,0,0,0,0,1401,1,0,0,0,0,1403,1,0,0,0,0,1405,1,0,0,0,0,1407,1,0, + 0,0,0,1409,1,0,0,0,0,1411,1,0,0,0,0,1413,1,0,0,0,0,1415,1,0,0,0, + 0,1417,1,0,0,0,0,1419,1,0,0,0,0,1421,1,0,0,0,0,1423,1,0,0,0,0,1425, + 1,0,0,0,0,1427,1,0,0,0,0,1429,1,0,0,0,0,1431,1,0,0,0,0,1433,1,0, + 0,0,0,1435,1,0,0,0,0,1437,1,0,0,0,0,1439,1,0,0,0,0,1441,1,0,0,0, + 0,1443,1,0,0,0,0,1445,1,0,0,0,0,1447,1,0,0,0,0,1449,1,0,0,0,0,1451, + 1,0,0,0,0,1453,1,0,0,0,0,1455,1,0,0,0,0,1457,1,0,0,0,0,1459,1,0, + 0,0,0,1461,1,0,0,0,0,1463,1,0,0,0,0,1465,1,0,0,0,0,1467,1,0,0,0, + 0,1469,1,0,0,0,0,1471,1,0,0,0,0,1473,1,0,0,0,0,1475,1,0,0,0,0,1477, + 1,0,0,0,0,1479,1,0,0,0,0,1481,1,0,0,0,0,1483,1,0,0,0,0,1485,1,0, + 0,0,0,1487,1,0,0,0,0,1489,1,0,0,0,0,1491,1,0,0,0,0,1493,1,0,0,0, + 0,1495,1,0,0,0,0,1497,1,0,0,0,0,1499,1,0,0,0,0,1501,1,0,0,0,0,1503, + 1,0,0,0,0,1505,1,0,0,0,0,1507,1,0,0,0,0,1509,1,0,0,0,0,1511,1,0, + 0,0,0,1513,1,0,0,0,0,1515,1,0,0,0,0,1517,1,0,0,0,0,1519,1,0,0,0, + 0,1521,1,0,0,0,0,1523,1,0,0,0,0,1525,1,0,0,0,0,1527,1,0,0,0,0,1529, + 1,0,0,0,0,1531,1,0,0,0,0,1533,1,0,0,0,0,1535,1,0,0,0,0,1537,1,0, + 0,0,0,1539,1,0,0,0,0,1541,1,0,0,0,0,1543,1,0,0,0,0,1545,1,0,0,0, + 0,1547,1,0,0,0,0,1549,1,0,0,0,0,1551,1,0,0,0,0,1553,1,0,0,0,0,1555, + 1,0,0,0,0,1557,1,0,0,0,0,1559,1,0,0,0,0,1561,1,0,0,0,0,1563,1,0, + 0,0,0,1565,1,0,0,0,0,1567,1,0,0,0,0,1569,1,0,0,0,0,1571,1,0,0,0, + 0,1573,1,0,0,0,0,1575,1,0,0,0,0,1577,1,0,0,0,0,1579,1,0,0,0,0,1581, + 1,0,0,0,0,1583,1,0,0,0,0,1585,1,0,0,0,0,1587,1,0,0,0,0,1589,1,0, + 0,0,0,1591,1,0,0,0,0,1593,1,0,0,0,0,1595,1,0,0,0,0,1597,1,0,0,0, + 0,1599,1,0,0,0,0,1601,1,0,0,0,0,1603,1,0,0,0,0,1605,1,0,0,0,0,1607, + 1,0,0,0,0,1609,1,0,0,0,0,1611,1,0,0,0,0,1613,1,0,0,0,0,1615,1,0, + 0,0,0,1617,1,0,0,0,0,1619,1,0,0,0,0,1621,1,0,0,0,0,1623,1,0,0,0, + 0,1625,1,0,0,0,0,1627,1,0,0,0,0,1629,1,0,0,0,0,1631,1,0,0,0,0,1633, + 1,0,0,0,0,1635,1,0,0,0,0,1637,1,0,0,0,0,1639,1,0,0,0,0,1641,1,0, + 0,0,0,1643,1,0,0,0,0,1645,1,0,0,0,0,1647,1,0,0,0,0,1649,1,0,0,0, + 0,1651,1,0,0,0,0,1653,1,0,0,0,0,1655,1,0,0,0,0,1657,1,0,0,0,0,1659, + 1,0,0,0,0,1661,1,0,0,0,0,1663,1,0,0,0,0,1665,1,0,0,0,0,1667,1,0, + 0,0,0,1669,1,0,0,0,0,1671,1,0,0,0,0,1673,1,0,0,0,0,1675,1,0,0,0, + 0,1677,1,0,0,0,0,1679,1,0,0,0,0,1681,1,0,0,0,0,1683,1,0,0,0,0,1685, + 1,0,0,0,0,1687,1,0,0,0,0,1689,1,0,0,0,0,1691,1,0,0,0,0,1693,1,0, + 0,0,0,1695,1,0,0,0,0,1697,1,0,0,0,0,1699,1,0,0,0,0,1701,1,0,0,0, + 0,1703,1,0,0,0,0,1705,1,0,0,0,0,1707,1,0,0,0,0,1709,1,0,0,0,0,1711, + 1,0,0,0,0,1713,1,0,0,0,0,1715,1,0,0,0,0,1717,1,0,0,0,0,1719,1,0, + 0,0,0,1721,1,0,0,0,0,1723,1,0,0,0,0,1725,1,0,0,0,0,1727,1,0,0,0, + 0,1729,1,0,0,0,0,1731,1,0,0,0,0,1733,1,0,0,0,0,1735,1,0,0,0,0,1737, + 1,0,0,0,0,1739,1,0,0,0,0,1741,1,0,0,0,0,1743,1,0,0,0,0,1745,1,0, + 0,0,0,1747,1,0,0,0,0,1749,1,0,0,0,0,1751,1,0,0,0,0,1753,1,0,0,0, + 0,1755,1,0,0,0,0,1757,1,0,0,0,0,1759,1,0,0,0,0,1761,1,0,0,0,0,1763, + 1,0,0,0,0,1765,1,0,0,0,0,1767,1,0,0,0,0,1769,1,0,0,0,0,1771,1,0, + 0,0,0,1773,1,0,0,0,0,1775,1,0,0,0,0,1777,1,0,0,0,0,1779,1,0,0,0, + 0,1781,1,0,0,0,0,1783,1,0,0,0,0,1785,1,0,0,0,0,1787,1,0,0,0,0,1789, + 1,0,0,0,0,1791,1,0,0,0,0,1793,1,0,0,0,0,1795,1,0,0,0,0,1797,1,0, + 0,0,0,1799,1,0,0,0,0,1801,1,0,0,0,0,1803,1,0,0,0,0,1805,1,0,0,0, + 0,1807,1,0,0,0,0,1809,1,0,0,0,0,1811,1,0,0,0,0,1813,1,0,0,0,0,1815, + 1,0,0,0,0,1817,1,0,0,0,0,1819,1,0,0,0,0,1821,1,0,0,0,0,1823,1,0, + 0,0,0,1825,1,0,0,0,0,1827,1,0,0,0,0,1829,1,0,0,0,0,1831,1,0,0,0, + 0,1833,1,0,0,0,0,1835,1,0,0,0,0,1837,1,0,0,0,0,1839,1,0,0,0,0,1841, + 1,0,0,0,0,1843,1,0,0,0,0,1845,1,0,0,0,0,1847,1,0,0,0,0,1849,1,0, + 0,0,0,1851,1,0,0,0,0,1853,1,0,0,0,0,1855,1,0,0,0,0,1857,1,0,0,0, + 0,1859,1,0,0,0,0,1861,1,0,0,0,0,1863,1,0,0,0,0,1865,1,0,0,0,0,1867, + 1,0,0,0,0,1869,1,0,0,0,0,1871,1,0,0,0,0,1873,1,0,0,0,0,1875,1,0, + 0,0,0,1877,1,0,0,0,0,1879,1,0,0,0,0,1881,1,0,0,0,0,1883,1,0,0,0, + 0,1885,1,0,0,0,0,1887,1,0,0,0,0,1889,1,0,0,0,0,1891,1,0,0,0,0,1893, + 1,0,0,0,0,1895,1,0,0,0,0,1897,1,0,0,0,0,1899,1,0,0,0,0,1901,1,0, + 0,0,0,1903,1,0,0,0,0,1905,1,0,0,0,0,1907,1,0,0,0,0,1909,1,0,0,0, + 0,1911,1,0,0,0,0,1913,1,0,0,0,0,1915,1,0,0,0,0,1917,1,0,0,0,0,1919, + 1,0,0,0,0,1921,1,0,0,0,0,1923,1,0,0,0,0,1925,1,0,0,0,0,1927,1,0, + 0,0,0,1929,1,0,0,0,0,1931,1,0,0,0,0,1933,1,0,0,0,0,1935,1,0,0,0, + 0,1937,1,0,0,0,0,1939,1,0,0,0,0,1941,1,0,0,0,0,1943,1,0,0,0,0,1945, + 1,0,0,0,0,1947,1,0,0,0,0,1949,1,0,0,0,0,1951,1,0,0,0,0,1953,1,0, + 0,0,0,1955,1,0,0,0,0,1957,1,0,0,0,0,1959,1,0,0,0,0,1961,1,0,0,0, + 0,1963,1,0,0,0,0,1965,1,0,0,0,0,1967,1,0,0,0,0,1969,1,0,0,0,0,1971, + 1,0,0,0,0,1973,1,0,0,0,0,1975,1,0,0,0,0,1977,1,0,0,0,0,1979,1,0, + 0,0,0,1981,1,0,0,0,0,1983,1,0,0,0,0,1985,1,0,0,0,0,1987,1,0,0,0, + 0,1989,1,0,0,0,0,1991,1,0,0,0,0,1993,1,0,0,0,0,1995,1,0,0,0,0,1997, + 1,0,0,0,0,1999,1,0,0,0,0,2001,1,0,0,0,0,2003,1,0,0,0,0,2005,1,0, + 0,0,0,2007,1,0,0,0,0,2009,1,0,0,0,0,2011,1,0,0,0,0,2013,1,0,0,0, + 0,2015,1,0,0,0,0,2017,1,0,0,0,0,2019,1,0,0,0,0,2021,1,0,0,0,0,2023, + 1,0,0,0,0,2025,1,0,0,0,0,2027,1,0,0,0,0,2029,1,0,0,0,0,2031,1,0, + 0,0,0,2033,1,0,0,0,0,2035,1,0,0,0,0,2037,1,0,0,0,0,2039,1,0,0,0, + 0,2041,1,0,0,0,0,2043,1,0,0,0,0,2045,1,0,0,0,0,2047,1,0,0,0,0,2049, + 1,0,0,0,0,2051,1,0,0,0,0,2053,1,0,0,0,0,2055,1,0,0,0,0,2057,1,0, + 0,0,0,2059,1,0,0,0,0,2061,1,0,0,0,0,2063,1,0,0,0,0,2065,1,0,0,0, + 0,2067,1,0,0,0,0,2069,1,0,0,0,0,2071,1,0,0,0,0,2073,1,0,0,0,0,2075, + 1,0,0,0,0,2077,1,0,0,0,0,2079,1,0,0,0,0,2081,1,0,0,0,0,2083,1,0, + 0,0,0,2085,1,0,0,0,0,2087,1,0,0,0,0,2089,1,0,0,0,0,2091,1,0,0,0, + 0,2093,1,0,0,0,0,2095,1,0,0,0,0,2097,1,0,0,0,0,2099,1,0,0,0,0,2101, + 1,0,0,0,0,2103,1,0,0,0,0,2105,1,0,0,0,0,2107,1,0,0,0,0,2109,1,0, + 0,0,0,2111,1,0,0,0,0,2113,1,0,0,0,0,2115,1,0,0,0,0,2117,1,0,0,0, + 0,2119,1,0,0,0,0,2121,1,0,0,0,0,2123,1,0,0,0,0,2125,1,0,0,0,0,2127, + 1,0,0,0,0,2129,1,0,0,0,0,2131,1,0,0,0,0,2133,1,0,0,0,0,2135,1,0, + 0,0,0,2137,1,0,0,0,0,2139,1,0,0,0,0,2141,1,0,0,0,0,2143,1,0,0,0, + 0,2145,1,0,0,0,0,2147,1,0,0,0,0,2149,1,0,0,0,0,2151,1,0,0,0,0,2153, + 1,0,0,0,0,2155,1,0,0,0,0,2157,1,0,0,0,0,2159,1,0,0,0,0,2161,1,0, + 0,0,0,2163,1,0,0,0,0,2165,1,0,0,0,0,2167,1,0,0,0,0,2169,1,0,0,0, + 0,2171,1,0,0,0,0,2173,1,0,0,0,0,2175,1,0,0,0,0,2177,1,0,0,0,0,2179, + 1,0,0,0,0,2181,1,0,0,0,0,2183,1,0,0,0,0,2185,1,0,0,0,0,2187,1,0, + 0,0,0,2189,1,0,0,0,0,2191,1,0,0,0,0,2193,1,0,0,0,0,2195,1,0,0,0, + 0,2197,1,0,0,0,0,2199,1,0,0,0,0,2201,1,0,0,0,0,2203,1,0,0,0,0,2205, + 1,0,0,0,0,2207,1,0,0,0,0,2209,1,0,0,0,0,2211,1,0,0,0,0,2213,1,0, + 0,0,0,2215,1,0,0,0,0,2217,1,0,0,0,0,2219,1,0,0,0,0,2221,1,0,0,0, + 0,2223,1,0,0,0,0,2225,1,0,0,0,0,2227,1,0,0,0,0,2229,1,0,0,0,0,2231, + 1,0,0,0,0,2233,1,0,0,0,0,2235,1,0,0,0,0,2237,1,0,0,0,0,2239,1,0, + 0,0,0,2241,1,0,0,0,0,2243,1,0,0,0,0,2245,1,0,0,0,0,2247,1,0,0,0, + 0,2249,1,0,0,0,0,2251,1,0,0,0,0,2253,1,0,0,0,0,2255,1,0,0,0,0,2257, + 1,0,0,0,0,2259,1,0,0,0,0,2261,1,0,0,0,0,2263,1,0,0,0,0,2265,1,0, + 0,0,0,2267,1,0,0,0,0,2269,1,0,0,0,0,2271,1,0,0,0,0,2273,1,0,0,0, + 0,2275,1,0,0,0,0,2277,1,0,0,0,0,2279,1,0,0,0,0,2281,1,0,0,0,0,2283, + 1,0,0,0,0,2285,1,0,0,0,0,2287,1,0,0,0,0,2291,1,0,0,0,0,2293,1,0, + 0,0,0,2295,1,0,0,0,0,2297,1,0,0,0,0,2299,1,0,0,0,0,2301,1,0,0,0, + 0,2303,1,0,0,0,0,2305,1,0,0,0,0,2307,1,0,0,0,0,2309,1,0,0,0,0,2311, + 1,0,0,0,0,2313,1,0,0,0,0,2315,1,0,0,0,0,2317,1,0,0,0,0,2319,1,0, + 0,0,0,2321,1,0,0,0,0,2323,1,0,0,0,0,2343,1,0,0,0,1,2346,1,0,0,0, + 3,2352,1,0,0,0,5,2366,1,0,0,0,7,2415,1,0,0,0,9,2419,1,0,0,0,11,2423, + 1,0,0,0,13,2427,1,0,0,0,15,2433,1,0,0,0,17,2440,1,0,0,0,19,2448, + 1,0,0,0,21,2452,1,0,0,0,23,2458,1,0,0,0,25,2461,1,0,0,0,27,2465, + 1,0,0,0,29,2475,1,0,0,0,31,2482,1,0,0,0,33,2490,1,0,0,0,35,2495, + 1,0,0,0,37,2503,1,0,0,0,39,2506,1,0,0,0,41,2511,1,0,0,0,43,2519, + 1,0,0,0,45,2524,1,0,0,0,47,2529,1,0,0,0,49,2536,1,0,0,0,51,2546, + 1,0,0,0,53,2552,1,0,0,0,55,2560,1,0,0,0,57,2567,1,0,0,0,59,2577, + 1,0,0,0,61,2588,1,0,0,0,63,2597,1,0,0,0,65,2605,1,0,0,0,67,2612, + 1,0,0,0,69,2618,1,0,0,0,71,2626,1,0,0,0,73,2639,1,0,0,0,75,2652, + 1,0,0,0,77,2659,1,0,0,0,79,2668,1,0,0,0,81,2678,1,0,0,0,83,2686, + 1,0,0,0,85,2694,1,0,0,0,87,2702,1,0,0,0,89,2709,1,0,0,0,91,2714, + 1,0,0,0,93,2723,1,0,0,0,95,2737,1,0,0,0,97,2749,1,0,0,0,99,2758, + 1,0,0,0,101,2770,1,0,0,0,103,2775,1,0,0,0,105,2780,1,0,0,0,107,2785, + 1,0,0,0,109,2792,1,0,0,0,111,2798,1,0,0,0,113,2807,1,0,0,0,115,2816, + 1,0,0,0,117,2824,1,0,0,0,119,2831,1,0,0,0,121,2838,1,0,0,0,123,2843, + 1,0,0,0,125,2851,1,0,0,0,127,2857,1,0,0,0,129,2863,1,0,0,0,131,2867, + 1,0,0,0,133,2873,1,0,0,0,135,2881,1,0,0,0,137,2886,1,0,0,0,139,2895, + 1,0,0,0,141,2905,1,0,0,0,143,2909,1,0,0,0,145,2915,1,0,0,0,147,2921, + 1,0,0,0,149,2928,1,0,0,0,151,2942,1,0,0,0,153,2952,1,0,0,0,155,2955, + 1,0,0,0,157,2962,1,0,0,0,159,2970,1,0,0,0,161,2973,1,0,0,0,163,2979, + 1,0,0,0,165,2986,1,0,0,0,167,2992,1,0,0,0,169,2998,1,0,0,0,171,3005, + 1,0,0,0,173,3014,1,0,0,0,175,3019,1,0,0,0,177,3022,1,0,0,0,179,3030, + 1,0,0,0,181,3035,1,0,0,0,183,3039,1,0,0,0,185,3044,1,0,0,0,187,3049, + 1,0,0,0,189,3057,1,0,0,0,191,3065,1,0,0,0,193,3071,1,0,0,0,195,3076, + 1,0,0,0,197,3081,1,0,0,0,199,3087,1,0,0,0,201,3094,1,0,0,0,203,3100, + 1,0,0,0,205,3105,1,0,0,0,207,3110,1,0,0,0,209,3117,1,0,0,0,211,3122, + 1,0,0,0,213,3135,1,0,0,0,215,3147,1,0,0,0,217,3177,1,0,0,0,219,3183, + 1,0,0,0,221,3192,1,0,0,0,223,3201,1,0,0,0,225,3210,1,0,0,0,227,3218, + 1,0,0,0,229,3222,1,0,0,0,231,3241,1,0,0,0,233,3246,1,0,0,0,235,3253, + 1,0,0,0,237,3256,1,0,0,0,239,3265,1,0,0,0,241,3272,1,0,0,0,243,3281, + 1,0,0,0,245,3292,1,0,0,0,247,3295,1,0,0,0,249,3301,1,0,0,0,251,3305, + 1,0,0,0,253,3311,1,0,0,0,255,3319,1,0,0,0,257,3324,1,0,0,0,259,3334, + 1,0,0,0,261,3342,1,0,0,0,263,3352,1,0,0,0,265,3358,1,0,0,0,267,3364, + 1,0,0,0,269,3369,1,0,0,0,271,3375,1,0,0,0,273,3386,1,0,0,0,275,3393, + 1,0,0,0,277,3401,1,0,0,0,279,3408,1,0,0,0,281,3415,1,0,0,0,283,3423, + 1,0,0,0,285,3431,1,0,0,0,287,3440,1,0,0,0,289,3449,1,0,0,0,291,3456, + 1,0,0,0,293,3463,1,0,0,0,295,3470,1,0,0,0,297,3476,1,0,0,0,299,3482, + 1,0,0,0,301,3489,1,0,0,0,303,3497,1,0,0,0,305,3504,1,0,0,0,307,3508, + 1,0,0,0,309,3518,1,0,0,0,311,3523,1,0,0,0,313,3530,1,0,0,0,315,3535, + 1,0,0,0,317,3554,1,0,0,0,319,3562,1,0,0,0,321,3566,1,0,0,0,323,3579, + 1,0,0,0,325,3588,1,0,0,0,327,3599,1,0,0,0,329,3614,1,0,0,0,331,3634, + 1,0,0,0,333,3651,1,0,0,0,335,3655,1,0,0,0,337,3663,1,0,0,0,339,3672, + 1,0,0,0,341,3682,1,0,0,0,343,3696,1,0,0,0,345,3702,1,0,0,0,347,3713, + 1,0,0,0,349,3718,1,0,0,0,351,3721,1,0,0,0,353,3730,1,0,0,0,355,3738, + 1,0,0,0,357,3743,1,0,0,0,359,3748,1,0,0,0,361,3754,1,0,0,0,363,3761, + 1,0,0,0,365,3768,1,0,0,0,367,3777,1,0,0,0,369,3784,1,0,0,0,371,3790, + 1,0,0,0,373,3794,1,0,0,0,375,3800,1,0,0,0,377,3807,1,0,0,0,379,3812, + 1,0,0,0,381,3818,1,0,0,0,383,3824,1,0,0,0,385,3829,1,0,0,0,387,3835, + 1,0,0,0,389,3839,1,0,0,0,391,3848,1,0,0,0,393,3856,1,0,0,0,395,3865, + 1,0,0,0,397,3875,1,0,0,0,399,3885,1,0,0,0,401,3889,1,0,0,0,403,3894, + 1,0,0,0,405,3899,1,0,0,0,407,3904,1,0,0,0,409,3909,1,0,0,0,411,3914, + 1,0,0,0,413,3922,1,0,0,0,415,3929,1,0,0,0,417,3934,1,0,0,0,419,3941, + 1,0,0,0,421,3951,1,0,0,0,423,3957,1,0,0,0,425,3964,1,0,0,0,427,3971, + 1,0,0,0,429,3979,1,0,0,0,431,3983,1,0,0,0,433,3991,1,0,0,0,435,3996, + 1,0,0,0,437,4001,1,0,0,0,439,4011,1,0,0,0,441,4020,1,0,0,0,443,4025, + 1,0,0,0,445,4030,1,0,0,0,447,4038,1,0,0,0,449,4047,1,0,0,0,451,4056, + 1,0,0,0,453,4063,1,0,0,0,455,4073,1,0,0,0,457,4082,1,0,0,0,459,4087, + 1,0,0,0,461,4098,1,0,0,0,463,4103,1,0,0,0,465,4112,1,0,0,0,467,4121, + 1,0,0,0,469,4126,1,0,0,0,471,4137,1,0,0,0,473,4146,1,0,0,0,475,4151, + 1,0,0,0,477,4159,1,0,0,0,479,4166,1,0,0,0,481,4177,1,0,0,0,483,4186, + 1,0,0,0,485,4197,1,0,0,0,487,4208,1,0,0,0,489,4220,1,0,0,0,491,4232, + 1,0,0,0,493,4246,1,0,0,0,495,4265,1,0,0,0,497,4284,1,0,0,0,499,4301, + 1,0,0,0,501,4317,1,0,0,0,503,4328,1,0,0,0,505,4342,1,0,0,0,507,4360, + 1,0,0,0,509,4378,1,0,0,0,511,4392,1,0,0,0,513,4411,1,0,0,0,515,4422, + 1,0,0,0,517,4435,1,0,0,0,519,4447,1,0,0,0,521,4457,1,0,0,0,523,4469, + 1,0,0,0,525,4480,1,0,0,0,527,4497,1,0,0,0,529,4517,1,0,0,0,531,4529, + 1,0,0,0,533,4544,1,0,0,0,535,4558,1,0,0,0,537,4570,1,0,0,0,539,4581, + 1,0,0,0,541,4593,1,0,0,0,543,4606,1,0,0,0,545,4624,1,0,0,0,547,4654, + 1,0,0,0,549,4666,1,0,0,0,551,4675,1,0,0,0,553,4693,1,0,0,0,555,4711, + 1,0,0,0,557,4722,1,0,0,0,559,4732,1,0,0,0,561,4745,1,0,0,0,563,4756, + 1,0,0,0,565,4767,1,0,0,0,567,4774,1,0,0,0,569,4785,1,0,0,0,571,4790, + 1,0,0,0,573,4794,1,0,0,0,575,4802,1,0,0,0,577,4809,1,0,0,0,579,4817, + 1,0,0,0,581,4823,1,0,0,0,583,4833,1,0,0,0,585,4844,1,0,0,0,587,4856, + 1,0,0,0,589,4869,1,0,0,0,591,4873,1,0,0,0,593,4884,1,0,0,0,595,4889, + 1,0,0,0,597,4893,1,0,0,0,599,4897,1,0,0,0,601,4903,1,0,0,0,603,4913, + 1,0,0,0,605,4926,1,0,0,0,607,4931,1,0,0,0,609,4942,1,0,0,0,611,4946, + 1,0,0,0,613,4953,1,0,0,0,615,4964,1,0,0,0,617,4976,1,0,0,0,619,4980, + 1,0,0,0,621,4988,1,0,0,0,623,4997,1,0,0,0,625,5006,1,0,0,0,627,5019, + 1,0,0,0,629,5032,1,0,0,0,631,5050,1,0,0,0,633,5060,1,0,0,0,635,5068, + 1,0,0,0,637,5076,1,0,0,0,639,5085,1,0,0,0,641,5094,1,0,0,0,643,5102, + 1,0,0,0,645,5117,1,0,0,0,647,5121,1,0,0,0,649,5130,1,0,0,0,651,5137, + 1,0,0,0,653,5147,1,0,0,0,655,5155,1,0,0,0,657,5160,1,0,0,0,659,5169, + 1,0,0,0,661,5178,1,0,0,0,663,5192,1,0,0,0,665,5200,1,0,0,0,667,5207, + 1,0,0,0,669,5213,1,0,0,0,671,5223,1,0,0,0,673,5233,1,0,0,0,675,5237, + 1,0,0,0,677,5240,1,0,0,0,679,5248,1,0,0,0,681,5259,1,0,0,0,683,5275, + 1,0,0,0,685,5290,1,0,0,0,687,5305,1,0,0,0,689,5311,1,0,0,0,691,5318, + 1,0,0,0,693,5322,1,0,0,0,695,5328,1,0,0,0,697,5333,1,0,0,0,699,5341, + 1,0,0,0,701,5347,1,0,0,0,703,5353,1,0,0,0,705,5362,1,0,0,0,707,5368, + 1,0,0,0,709,5376,1,0,0,0,711,5384,1,0,0,0,713,5393,1,0,0,0,715,5407, + 1,0,0,0,717,5414,1,0,0,0,719,5427,1,0,0,0,721,5434,1,0,0,0,723,5440, + 1,0,0,0,725,5451,1,0,0,0,727,5460,1,0,0,0,729,5465,1,0,0,0,731,5473, + 1,0,0,0,733,5487,1,0,0,0,735,5499,1,0,0,0,737,5507,1,0,0,0,739,5514, + 1,0,0,0,741,5522,1,0,0,0,743,5533,1,0,0,0,745,5573,1,0,0,0,747,5575, + 1,0,0,0,749,5586,1,0,0,0,751,5594,1,0,0,0,753,5605,1,0,0,0,755,5616, + 1,0,0,0,757,5635,1,0,0,0,759,5653,1,0,0,0,761,5669,1,0,0,0,763,5678, + 1,0,0,0,765,5686,1,0,0,0,767,5699,1,0,0,0,769,5704,1,0,0,0,771,5708, + 1,0,0,0,773,5714,1,0,0,0,775,5726,1,0,0,0,777,5731,1,0,0,0,779,5740, + 1,0,0,0,781,5751,1,0,0,0,783,5764,1,0,0,0,785,5772,1,0,0,0,787,5788, + 1,0,0,0,789,5801,1,0,0,0,791,5811,1,0,0,0,793,5819,1,0,0,0,795,5827, + 1,0,0,0,797,5832,1,0,0,0,799,5835,1,0,0,0,801,5844,1,0,0,0,803,5854, + 1,0,0,0,805,5862,1,0,0,0,807,5869,1,0,0,0,809,5879,1,0,0,0,811,5890, + 1,0,0,0,813,5908,1,0,0,0,815,5912,1,0,0,0,817,5917,1,0,0,0,819,5924, + 1,0,0,0,821,5932,1,0,0,0,823,5938,1,0,0,0,825,5945,1,0,0,0,827,5952, + 1,0,0,0,829,5957,1,0,0,0,831,5963,1,0,0,0,833,5970,1,0,0,0,835,5976, + 1,0,0,0,837,5985,1,0,0,0,839,5995,1,0,0,0,841,6002,1,0,0,0,843,6009, + 1,0,0,0,845,6018,1,0,0,0,847,6030,1,0,0,0,849,6052,1,0,0,0,851,6057, + 1,0,0,0,853,6064,1,0,0,0,855,6071,1,0,0,0,857,6087,1,0,0,0,859,6094, + 1,0,0,0,861,6100,1,0,0,0,863,6106,1,0,0,0,865,6112,1,0,0,0,867,6122, + 1,0,0,0,869,6130,1,0,0,0,871,6136,1,0,0,0,873,6141,1,0,0,0,875,6150, + 1,0,0,0,877,6158,1,0,0,0,879,6165,1,0,0,0,881,6172,1,0,0,0,883,6190, + 1,0,0,0,885,6198,1,0,0,0,887,6203,1,0,0,0,889,6208,1,0,0,0,891,6216, + 1,0,0,0,893,6221,1,0,0,0,895,6227,1,0,0,0,897,6238,1,0,0,0,899,6256, + 1,0,0,0,901,6263,1,0,0,0,903,6273,1,0,0,0,905,6281,1,0,0,0,907,6294, + 1,0,0,0,909,6302,1,0,0,0,911,6316,1,0,0,0,913,6324,1,0,0,0,915,6333, + 1,0,0,0,917,6341,1,0,0,0,919,6351,1,0,0,0,921,6359,1,0,0,0,923,6362, + 1,0,0,0,925,6372,1,0,0,0,927,6376,1,0,0,0,929,6386,1,0,0,0,931,6393, + 1,0,0,0,933,6398,1,0,0,0,935,6413,1,0,0,0,937,6422,1,0,0,0,939,6427, + 1,0,0,0,941,6434,1,0,0,0,943,6439,1,0,0,0,945,6445,1,0,0,0,947,6450, + 1,0,0,0,949,6456,1,0,0,0,951,6464,1,0,0,0,953,6469,1,0,0,0,955,6476, + 1,0,0,0,957,6497,1,0,0,0,959,6518,1,0,0,0,961,6531,1,0,0,0,963,6555, + 1,0,0,0,965,6567,1,0,0,0,967,6583,1,0,0,0,969,6598,1,0,0,0,971,6614, + 1,0,0,0,973,6626,1,0,0,0,975,6645,1,0,0,0,977,6656,1,0,0,0,979,6670, + 1,0,0,0,981,6688,1,0,0,0,983,6704,1,0,0,0,985,6722,1,0,0,0,987,6737, + 1,0,0,0,989,6756,1,0,0,0,991,6771,1,0,0,0,993,6790,1,0,0,0,995,6802, + 1,0,0,0,997,6827,1,0,0,0,999,6848,1,0,0,0,1001,6857,1,0,0,0,1003, + 6866,1,0,0,0,1005,6887,1,0,0,0,1007,6908,1,0,0,0,1009,6915,1,0,0, + 0,1011,6922,1,0,0,0,1013,6928,1,0,0,0,1015,6941,1,0,0,0,1017,6945, + 1,0,0,0,1019,6953,1,0,0,0,1021,6962,1,0,0,0,1023,6967,1,0,0,0,1025, + 6974,1,0,0,0,1027,6980,1,0,0,0,1029,6986,1,0,0,0,1031,6998,1,0,0, + 0,1033,7003,1,0,0,0,1035,7009,1,0,0,0,1037,7015,1,0,0,0,1039,7021, + 1,0,0,0,1041,7026,1,0,0,0,1043,7029,1,0,0,0,1045,7037,1,0,0,0,1047, + 7044,1,0,0,0,1049,7052,1,0,0,0,1051,7063,1,0,0,0,1053,7074,1,0,0, + 0,1055,7081,1,0,0,0,1057,7091,1,0,0,0,1059,7096,1,0,0,0,1061,7101, + 1,0,0,0,1063,7109,1,0,0,0,1065,7116,1,0,0,0,1067,7119,1,0,0,0,1069, + 7122,1,0,0,0,1071,7135,1,0,0,0,1073,7139,1,0,0,0,1075,7146,1,0,0, + 0,1077,7151,1,0,0,0,1079,7156,1,0,0,0,1081,7172,1,0,0,0,1083,7180, + 1,0,0,0,1085,7186,1,0,0,0,1087,7196,1,0,0,0,1089,7201,1,0,0,0,1091, + 7217,1,0,0,0,1093,7240,1,0,0,0,1095,7247,1,0,0,0,1097,7255,1,0,0, + 0,1099,7268,1,0,0,0,1101,7279,1,0,0,0,1103,7288,1,0,0,0,1105,7307, + 1,0,0,0,1107,7313,1,0,0,0,1109,7320,1,0,0,0,1111,7331,1,0,0,0,1113, + 7339,1,0,0,0,1115,7344,1,0,0,0,1117,7353,1,0,0,0,1119,7363,1,0,0, + 0,1121,7371,1,0,0,0,1123,7380,1,0,0,0,1125,7385,1,0,0,0,1127,7397, + 1,0,0,0,1129,7405,1,0,0,0,1131,7414,1,0,0,0,1133,7420,1,0,0,0,1135, + 7426,1,0,0,0,1137,7432,1,0,0,0,1139,7440,1,0,0,0,1141,7448,1,0,0, + 0,1143,7458,1,0,0,0,1145,7475,1,0,0,0,1147,7485,1,0,0,0,1149,7491, + 1,0,0,0,1151,7506,1,0,0,0,1153,7520,1,0,0,0,1155,7529,1,0,0,0,1157, + 7536,1,0,0,0,1159,7547,1,0,0,0,1161,7554,1,0,0,0,1163,7570,1,0,0, + 0,1165,7589,1,0,0,0,1167,7609,1,0,0,0,1169,7632,1,0,0,0,1171,7653, + 1,0,0,0,1173,7677,1,0,0,0,1175,7705,1,0,0,0,1177,7717,1,0,0,0,1179, + 7723,1,0,0,0,1181,7731,1,0,0,0,1183,7738,1,0,0,0,1185,7756,1,0,0, + 0,1187,7766,1,0,0,0,1189,7774,1,0,0,0,1191,7780,1,0,0,0,1193,7785, + 1,0,0,0,1195,7794,1,0,0,0,1197,7801,1,0,0,0,1199,7808,1,0,0,0,1201, + 7812,1,0,0,0,1203,7817,1,0,0,0,1205,7828,1,0,0,0,1207,7834,1,0,0, + 0,1209,7844,1,0,0,0,1211,7853,1,0,0,0,1213,7862,1,0,0,0,1215,7871, + 1,0,0,0,1217,7878,1,0,0,0,1219,7886,1,0,0,0,1221,7892,1,0,0,0,1223, + 7899,1,0,0,0,1225,7906,1,0,0,0,1227,7913,1,0,0,0,1229,7919,1,0,0, + 0,1231,7924,1,0,0,0,1233,7933,1,0,0,0,1235,7940,1,0,0,0,1237,7945, + 1,0,0,0,1239,7952,1,0,0,0,1241,7959,1,0,0,0,1243,7966,1,0,0,0,1245, + 7982,1,0,0,0,1247,8001,1,0,0,0,1249,8018,1,0,0,0,1251,8036,1,0,0, + 0,1253,8046,1,0,0,0,1255,8059,1,0,0,0,1257,8070,1,0,0,0,1259,8076, + 1,0,0,0,1261,8083,1,0,0,0,1263,8101,1,0,0,0,1265,8118,1,0,0,0,1267, + 8137,1,0,0,0,1269,8144,1,0,0,0,1271,8149,1,0,0,0,1273,8157,1,0,0, + 0,1275,8164,1,0,0,0,1277,8171,1,0,0,0,1279,8187,1,0,0,0,1281,8195, + 1,0,0,0,1283,8208,1,0,0,0,1285,8222,1,0,0,0,1287,8230,1,0,0,0,1289, + 8236,1,0,0,0,1291,8245,1,0,0,0,1293,8256,1,0,0,0,1295,8267,1,0,0, + 0,1297,8278,1,0,0,0,1299,8288,1,0,0,0,1301,8298,1,0,0,0,1303,8303, + 1,0,0,0,1305,8315,1,0,0,0,1307,8327,1,0,0,0,1309,8341,1,0,0,0,1311, + 8350,1,0,0,0,1313,8359,1,0,0,0,1315,8369,1,0,0,0,1317,8379,1,0,0, + 0,1319,8388,1,0,0,0,1321,8405,1,0,0,0,1323,8415,1,0,0,0,1325,8423, + 1,0,0,0,1327,8429,1,0,0,0,1329,8437,1,0,0,0,1331,8442,1,0,0,0,1333, + 8450,1,0,0,0,1335,8465,1,0,0,0,1337,8476,1,0,0,0,1339,8482,1,0,0, + 0,1341,8492,1,0,0,0,1343,8497,1,0,0,0,1345,8505,1,0,0,0,1347,8513, + 1,0,0,0,1349,8518,1,0,0,0,1351,8527,1,0,0,0,1353,8534,1,0,0,0,1355, + 8542,1,0,0,0,1357,8547,1,0,0,0,1359,8555,1,0,0,0,1361,8560,1,0,0, + 0,1363,8563,1,0,0,0,1365,8567,1,0,0,0,1367,8571,1,0,0,0,1369,8575, + 1,0,0,0,1371,8579,1,0,0,0,1373,8583,1,0,0,0,1375,8587,1,0,0,0,1377, + 8596,1,0,0,0,1379,8604,1,0,0,0,1381,8610,1,0,0,0,1383,8614,1,0,0, + 0,1385,8619,1,0,0,0,1387,8626,1,0,0,0,1389,8631,1,0,0,0,1391,8638, + 1,0,0,0,1393,8650,1,0,0,0,1395,8656,1,0,0,0,1397,8683,1,0,0,0,1399, + 8702,1,0,0,0,1401,8714,1,0,0,0,1403,8742,1,0,0,0,1405,8755,1,0,0, + 0,1407,8768,1,0,0,0,1409,8792,1,0,0,0,1411,8804,1,0,0,0,1413,8821, + 1,0,0,0,1415,8842,1,0,0,0,1417,8850,1,0,0,0,1419,8855,1,0,0,0,1421, + 8870,1,0,0,0,1423,8886,1,0,0,0,1425,8900,1,0,0,0,1427,8922,1,0,0, + 0,1429,8935,1,0,0,0,1431,8948,1,0,0,0,1433,8969,1,0,0,0,1435,8993, + 1,0,0,0,1437,9017,1,0,0,0,1439,9040,1,0,0,0,1441,9047,1,0,0,0,1443, + 9054,1,0,0,0,1445,9070,1,0,0,0,1447,9094,1,0,0,0,1449,9121,1,0,0, + 0,1451,9132,1,0,0,0,1453,9140,1,0,0,0,1455,9147,1,0,0,0,1457,9167, + 1,0,0,0,1459,9191,1,0,0,0,1461,9212,1,0,0,0,1463,9232,1,0,0,0,1465, + 9243,1,0,0,0,1467,9251,1,0,0,0,1469,9254,1,0,0,0,1471,9280,1,0,0, + 0,1473,9309,1,0,0,0,1475,9321,1,0,0,0,1477,9334,1,0,0,0,1479,9343, + 1,0,0,0,1481,9349,1,0,0,0,1483,9372,1,0,0,0,1485,9379,1,0,0,0,1487, + 9402,1,0,0,0,1489,9422,1,0,0,0,1491,9439,1,0,0,0,1493,9448,1,0,0, + 0,1495,9454,1,0,0,0,1497,9459,1,0,0,0,1499,9466,1,0,0,0,1501,9473, + 1,0,0,0,1503,9480,1,0,0,0,1505,9487,1,0,0,0,1507,9493,1,0,0,0,1509, + 9499,1,0,0,0,1511,9505,1,0,0,0,1513,9511,1,0,0,0,1515,9516,1,0,0, + 0,1517,9524,1,0,0,0,1519,9530,1,0,0,0,1521,9538,1,0,0,0,1523,9545, + 1,0,0,0,1525,9549,1,0,0,0,1527,9557,1,0,0,0,1529,9563,1,0,0,0,1531, + 9570,1,0,0,0,1533,9574,1,0,0,0,1535,9582,1,0,0,0,1537,9588,1,0,0, + 0,1539,9594,1,0,0,0,1541,9601,1,0,0,0,1543,9608,1,0,0,0,1545,9615, + 1,0,0,0,1547,9622,1,0,0,0,1549,9628,1,0,0,0,1551,9637,1,0,0,0,1553, + 9642,1,0,0,0,1555,9647,1,0,0,0,1557,9654,1,0,0,0,1559,9659,1,0,0, + 0,1561,9664,1,0,0,0,1563,9670,1,0,0,0,1565,9678,1,0,0,0,1567,9684, + 1,0,0,0,1569,9689,1,0,0,0,1571,9697,1,0,0,0,1573,9705,1,0,0,0,1575, + 9713,1,0,0,0,1577,9723,1,0,0,0,1579,9727,1,0,0,0,1581,9737,1,0,0, + 0,1583,9744,1,0,0,0,1585,9751,1,0,0,0,1587,9762,1,0,0,0,1589,9769, + 1,0,0,0,1591,9773,1,0,0,0,1593,9784,1,0,0,0,1595,9803,1,0,0,0,1597, + 9810,1,0,0,0,1599,9821,1,0,0,0,1601,9831,1,0,0,0,1603,9843,1,0,0, + 0,1605,9856,1,0,0,0,1607,9875,1,0,0,0,1609,9890,1,0,0,0,1611,9899, + 1,0,0,0,1613,9910,1,0,0,0,1615,9926,1,0,0,0,1617,9937,1,0,0,0,1619, + 9950,1,0,0,0,1621,9956,1,0,0,0,1623,9964,1,0,0,0,1625,9968,1,0,0, + 0,1627,9973,1,0,0,0,1629,9981,1,0,0,0,1631,9989,1,0,0,0,1633,10001, + 1,0,0,0,1635,10013,1,0,0,0,1637,10018,1,0,0,0,1639,10027,1,0,0,0, + 1641,10032,1,0,0,0,1643,10039,1,0,0,0,1645,10045,1,0,0,0,1647,10051, + 1,0,0,0,1649,10070,1,0,0,0,1651,10088,1,0,0,0,1653,10107,1,0,0,0, + 1655,10123,1,0,0,0,1657,10141,1,0,0,0,1659,10146,1,0,0,0,1661,10152, + 1,0,0,0,1663,10162,1,0,0,0,1665,10166,1,0,0,0,1667,10176,1,0,0,0, + 1669,10187,1,0,0,0,1671,10194,1,0,0,0,1673,10207,1,0,0,0,1675,10212, + 1,0,0,0,1677,10220,1,0,0,0,1679,10229,1,0,0,0,1681,10246,1,0,0,0, + 1683,10254,1,0,0,0,1685,10266,1,0,0,0,1687,10279,1,0,0,0,1689,10289, + 1,0,0,0,1691,10298,1,0,0,0,1693,10305,1,0,0,0,1695,10315,1,0,0,0, + 1697,10329,1,0,0,0,1699,10334,1,0,0,0,1701,10345,1,0,0,0,1703,10349, + 1,0,0,0,1705,10353,1,0,0,0,1707,10359,1,0,0,0,1709,10386,1,0,0,0, + 1711,10412,1,0,0,0,1713,10433,1,0,0,0,1715,10447,1,0,0,0,1717,10455, + 1,0,0,0,1719,10464,1,0,0,0,1721,10476,1,0,0,0,1723,10484,1,0,0,0, + 1725,10495,1,0,0,0,1727,10505,1,0,0,0,1729,10515,1,0,0,0,1731,10522, + 1,0,0,0,1733,10530,1,0,0,0,1735,10542,1,0,0,0,1737,10554,1,0,0,0, + 1739,10564,1,0,0,0,1741,10573,1,0,0,0,1743,10577,1,0,0,0,1745,10584, + 1,0,0,0,1747,10592,1,0,0,0,1749,10601,1,0,0,0,1751,10618,1,0,0,0, + 1753,10627,1,0,0,0,1755,10634,1,0,0,0,1757,10638,1,0,0,0,1759,10649, + 1,0,0,0,1761,10662,1,0,0,0,1763,10675,1,0,0,0,1765,10681,1,0,0,0, + 1767,10693,1,0,0,0,1769,10699,1,0,0,0,1771,10706,1,0,0,0,1773,10717, + 1,0,0,0,1775,10729,1,0,0,0,1777,10739,1,0,0,0,1779,10753,1,0,0,0, + 1781,10770,1,0,0,0,1783,10786,1,0,0,0,1785,10813,1,0,0,0,1787,10839, + 1,0,0,0,1789,10856,1,0,0,0,1791,10872,1,0,0,0,1793,10882,1,0,0,0, + 1795,10895,1,0,0,0,1797,10908,1,0,0,0,1799,10920,1,0,0,0,1801,10931, + 1,0,0,0,1803,10940,1,0,0,0,1805,10948,1,0,0,0,1807,10957,1,0,0,0, + 1809,10969,1,0,0,0,1811,10983,1,0,0,0,1813,10987,1,0,0,0,1815,10994, + 1,0,0,0,1817,11005,1,0,0,0,1819,11016,1,0,0,0,1821,11026,1,0,0,0, + 1823,11036,1,0,0,0,1825,11042,1,0,0,0,1827,11056,1,0,0,0,1829,11067, + 1,0,0,0,1831,11076,1,0,0,0,1833,11084,1,0,0,0,1835,11091,1,0,0,0, + 1837,11100,1,0,0,0,1839,11113,1,0,0,0,1841,11121,1,0,0,0,1843,11136, + 1,0,0,0,1845,11151,1,0,0,0,1847,11159,1,0,0,0,1849,11172,1,0,0,0, + 1851,11187,1,0,0,0,1853,11193,1,0,0,0,1855,11199,1,0,0,0,1857,11206, + 1,0,0,0,1859,11219,1,0,0,0,1861,11231,1,0,0,0,1863,11250,1,0,0,0, + 1865,11268,1,0,0,0,1867,11271,1,0,0,0,1869,11281,1,0,0,0,1871,11288, + 1,0,0,0,1873,11292,1,0,0,0,1875,11298,1,0,0,0,1877,11303,1,0,0,0, + 1879,11309,1,0,0,0,1881,11314,1,0,0,0,1883,11320,1,0,0,0,1885,11329, + 1,0,0,0,1887,11338,1,0,0,0,1889,11347,1,0,0,0,1891,11363,1,0,0,0, + 1893,11375,1,0,0,0,1895,11387,1,0,0,0,1897,11396,1,0,0,0,1899,11410, + 1,0,0,0,1901,11422,1,0,0,0,1903,11433,1,0,0,0,1905,11443,1,0,0,0, + 1907,11447,1,0,0,0,1909,11461,1,0,0,0,1911,11474,1,0,0,0,1913,11484, + 1,0,0,0,1915,11499,1,0,0,0,1917,11513,1,0,0,0,1919,11527,1,0,0,0, + 1921,11540,1,0,0,0,1923,11564,1,0,0,0,1925,11587,1,0,0,0,1927,11606, + 1,0,0,0,1929,11624,1,0,0,0,1931,11645,1,0,0,0,1933,11665,1,0,0,0, + 1935,11676,1,0,0,0,1937,11683,1,0,0,0,1939,11697,1,0,0,0,1941,11714, + 1,0,0,0,1943,11724,1,0,0,0,1945,11728,1,0,0,0,1947,11741,1,0,0,0, + 1949,11745,1,0,0,0,1951,11754,1,0,0,0,1953,11765,1,0,0,0,1955,11777, + 1,0,0,0,1957,11780,1,0,0,0,1959,11794,1,0,0,0,1961,11807,1,0,0,0, + 1963,11814,1,0,0,0,1965,11827,1,0,0,0,1967,11839,1,0,0,0,1969,11855, + 1,0,0,0,1971,11870,1,0,0,0,1973,11874,1,0,0,0,1975,11880,1,0,0,0, + 1977,11886,1,0,0,0,1979,11894,1,0,0,0,1981,11899,1,0,0,0,1983,11906, + 1,0,0,0,1985,11919,1,0,0,0,1987,11932,1,0,0,0,1989,11940,1,0,0,0, + 1991,11946,1,0,0,0,1993,11956,1,0,0,0,1995,11961,1,0,0,0,1997,11967, + 1,0,0,0,1999,11979,1,0,0,0,2001,12006,1,0,0,0,2003,12019,1,0,0,0, + 2005,12023,1,0,0,0,2007,12028,1,0,0,0,2009,12033,1,0,0,0,2011,12045, + 1,0,0,0,2013,12050,1,0,0,0,2015,12054,1,0,0,0,2017,12060,1,0,0,0, + 2019,12068,1,0,0,0,2021,12096,1,0,0,0,2023,12101,1,0,0,0,2025,12106, + 1,0,0,0,2027,12117,1,0,0,0,2029,12124,1,0,0,0,2031,12136,1,0,0,0, + 2033,12144,1,0,0,0,2035,12156,1,0,0,0,2037,12166,1,0,0,0,2039,12175, + 1,0,0,0,2041,12184,1,0,0,0,2043,12194,1,0,0,0,2045,12206,1,0,0,0, + 2047,12218,1,0,0,0,2049,12229,1,0,0,0,2051,12243,1,0,0,0,2053,12256, + 1,0,0,0,2055,12268,1,0,0,0,2057,12280,1,0,0,0,2059,12292,1,0,0,0, + 2061,12304,1,0,0,0,2063,12314,1,0,0,0,2065,12330,1,0,0,0,2067,12350, + 1,0,0,0,2069,12369,1,0,0,0,2071,12388,1,0,0,0,2073,12418,1,0,0,0, + 2075,12447,1,0,0,0,2077,12467,1,0,0,0,2079,12486,1,0,0,0,2081,12499, + 1,0,0,0,2083,12515,1,0,0,0,2085,12531,1,0,0,0,2087,12546,1,0,0,0, + 2089,12563,1,0,0,0,2091,12579,1,0,0,0,2093,12593,1,0,0,0,2095,12605, + 1,0,0,0,2097,12616,1,0,0,0,2099,12628,1,0,0,0,2101,12644,1,0,0,0, + 2103,12659,1,0,0,0,2105,12681,1,0,0,0,2107,12702,1,0,0,0,2109,12719, + 1,0,0,0,2111,12738,1,0,0,0,2113,12758,1,0,0,0,2115,12771,1,0,0,0, + 2117,12783,1,0,0,0,2119,12800,1,0,0,0,2121,12816,1,0,0,0,2123,12826, + 1,0,0,0,2125,12842,1,0,0,0,2127,12857,1,0,0,0,2129,12876,1,0,0,0, + 2131,12894,1,0,0,0,2133,12902,1,0,0,0,2135,12916,1,0,0,0,2137,12933, + 1,0,0,0,2139,12944,1,0,0,0,2141,12953,1,0,0,0,2143,12963,1,0,0,0, + 2145,12968,1,0,0,0,2147,12973,1,0,0,0,2149,12981,1,0,0,0,2151,12997, + 1,0,0,0,2153,13005,1,0,0,0,2155,13017,1,0,0,0,2157,13021,1,0,0,0, + 2159,13030,1,0,0,0,2161,13043,1,0,0,0,2163,13057,1,0,0,0,2165,13069, + 1,0,0,0,2167,13081,1,0,0,0,2169,13089,1,0,0,0,2171,13099,1,0,0,0, + 2173,13107,1,0,0,0,2175,13118,1,0,0,0,2177,13138,1,0,0,0,2179,13144, + 1,0,0,0,2181,13155,1,0,0,0,2183,13175,1,0,0,0,2185,13181,1,0,0,0, + 2187,13196,1,0,0,0,2189,13206,1,0,0,0,2191,13212,1,0,0,0,2193,13217, + 1,0,0,0,2195,13228,1,0,0,0,2197,13255,1,0,0,0,2199,13263,1,0,0,0, + 2201,13297,1,0,0,0,2203,13305,1,0,0,0,2205,13316,1,0,0,0,2207,13330, + 1,0,0,0,2209,13337,1,0,0,0,2211,13346,1,0,0,0,2213,13348,1,0,0,0, + 2215,13350,1,0,0,0,2217,13353,1,0,0,0,2219,13356,1,0,0,0,2221,13359, + 1,0,0,0,2223,13362,1,0,0,0,2225,13365,1,0,0,0,2227,13368,1,0,0,0, + 2229,13371,1,0,0,0,2231,13374,1,0,0,0,2233,13377,1,0,0,0,2235,13379, + 1,0,0,0,2237,13381,1,0,0,0,2239,13383,1,0,0,0,2241,13385,1,0,0,0, + 2243,13387,1,0,0,0,2245,13391,1,0,0,0,2247,13395,1,0,0,0,2249,13397, + 1,0,0,0,2251,13399,1,0,0,0,2253,13401,1,0,0,0,2255,13403,1,0,0,0, + 2257,13405,1,0,0,0,2259,13407,1,0,0,0,2261,13409,1,0,0,0,2263,13411, + 1,0,0,0,2265,13413,1,0,0,0,2267,13415,1,0,0,0,2269,13417,1,0,0,0, + 2271,13419,1,0,0,0,2273,13421,1,0,0,0,2275,13423,1,0,0,0,2277,13425, + 1,0,0,0,2279,13427,1,0,0,0,2281,13429,1,0,0,0,2283,13431,1,0,0,0, + 2285,13433,1,0,0,0,2287,13435,1,0,0,0,2289,13440,1,0,0,0,2291,13442, + 1,0,0,0,2293,13447,1,0,0,0,2295,13453,1,0,0,0,2297,13459,1,0,0,0, + 2299,13462,1,0,0,0,2301,13485,1,0,0,0,2303,13530,1,0,0,0,2305,13532, + 1,0,0,0,2307,13535,1,0,0,0,2309,13537,1,0,0,0,2311,13540,1,0,0,0, + 2313,13543,1,0,0,0,2315,13545,1,0,0,0,2317,13551,1,0,0,0,2319,13591, + 1,0,0,0,2321,13593,1,0,0,0,2323,13604,1,0,0,0,2325,13655,1,0,0,0, + 2327,13657,1,0,0,0,2329,13669,1,0,0,0,2331,13683,1,0,0,0,2333,13696, + 1,0,0,0,2335,13709,1,0,0,0,2337,13720,1,0,0,0,2339,13722,1,0,0,0, + 2341,13724,1,0,0,0,2343,13733,1,0,0,0,2345,2347,7,0,0,0,2346,2345, + 1,0,0,0,2347,2348,1,0,0,0,2348,2346,1,0,0,0,2348,2349,1,0,0,0,2349, + 2350,1,0,0,0,2350,2351,6,0,0,0,2351,2,1,0,0,0,2352,2353,5,47,0,0, + 2353,2354,5,42,0,0,2354,2355,5,33,0,0,2355,2357,1,0,0,0,2356,2358, + 9,0,0,0,2357,2356,1,0,0,0,2358,2359,1,0,0,0,2359,2360,1,0,0,0,2359, + 2357,1,0,0,0,2360,2361,1,0,0,0,2361,2362,5,42,0,0,2362,2363,5,47, + 0,0,2363,2364,1,0,0,0,2364,2365,6,1,1,0,2365,4,1,0,0,0,2366,2367, + 5,47,0,0,2367,2368,5,42,0,0,2368,2372,1,0,0,0,2369,2371,9,0,0,0, + 2370,2369,1,0,0,0,2371,2374,1,0,0,0,2372,2373,1,0,0,0,2372,2370, + 1,0,0,0,2373,2375,1,0,0,0,2374,2372,1,0,0,0,2375,2376,5,42,0,0,2376, + 2377,5,47,0,0,2377,2378,1,0,0,0,2378,2379,6,2,0,0,2379,6,1,0,0,0, + 2380,2381,5,45,0,0,2381,2382,5,45,0,0,2382,2386,1,0,0,0,2383,2385, + 7,1,0,0,2384,2383,1,0,0,0,2385,2388,1,0,0,0,2386,2384,1,0,0,0,2386, + 2387,1,0,0,0,2387,2391,1,0,0,0,2388,2386,1,0,0,0,2389,2391,5,35, + 0,0,2390,2380,1,0,0,0,2390,2389,1,0,0,0,2391,2395,1,0,0,0,2392,2394, + 8,2,0,0,2393,2392,1,0,0,0,2394,2397,1,0,0,0,2395,2393,1,0,0,0,2395, + 2396,1,0,0,0,2396,2403,1,0,0,0,2397,2395,1,0,0,0,2398,2400,5,13, + 0,0,2399,2398,1,0,0,0,2399,2400,1,0,0,0,2400,2401,1,0,0,0,2401,2404, + 5,10,0,0,2402,2404,5,0,0,1,2403,2399,1,0,0,0,2403,2402,1,0,0,0,2404, + 2416,1,0,0,0,2405,2406,5,45,0,0,2406,2407,5,45,0,0,2407,2413,1,0, + 0,0,2408,2410,5,13,0,0,2409,2408,1,0,0,0,2409,2410,1,0,0,0,2410, + 2411,1,0,0,0,2411,2414,5,10,0,0,2412,2414,5,0,0,1,2413,2409,1,0, + 0,0,2413,2412,1,0,0,0,2414,2416,1,0,0,0,2415,2390,1,0,0,0,2415,2405, + 1,0,0,0,2416,2417,1,0,0,0,2417,2418,6,3,0,0,2418,8,1,0,0,0,2419, + 2420,7,3,0,0,2420,2421,7,4,0,0,2421,2422,7,4,0,0,2422,10,1,0,0,0, + 2423,2424,7,3,0,0,2424,2425,7,5,0,0,2425,2426,7,5,0,0,2426,12,1, + 0,0,0,2427,2428,7,3,0,0,2428,2429,7,5,0,0,2429,2430,7,6,0,0,2430, + 2431,7,7,0,0,2431,2432,7,8,0,0,2432,14,1,0,0,0,2433,2434,7,3,0,0, + 2434,2435,7,5,0,0,2435,2436,7,9,0,0,2436,2437,7,3,0,0,2437,2438, + 7,10,0,0,2438,2439,7,11,0,0,2439,16,1,0,0,0,2440,2441,7,3,0,0,2441, + 2442,7,12,0,0,2442,2443,7,3,0,0,2443,2444,7,5,0,0,2444,2445,7,10, + 0,0,2445,2446,7,13,0,0,2446,2447,7,7,0,0,2447,18,1,0,0,0,2448,2449, + 7,3,0,0,2449,2450,7,12,0,0,2450,2451,7,4,0,0,2451,20,1,0,0,0,2452, + 2453,7,3,0,0,2453,2454,7,8,0,0,2454,2455,7,8,0,0,2455,2456,7,3,0, + 0,2456,2457,7,10,0,0,2457,22,1,0,0,0,2458,2459,7,3,0,0,2459,2460, + 7,11,0,0,2460,24,1,0,0,0,2461,2462,7,3,0,0,2462,2463,7,11,0,0,2463, + 2464,7,14,0,0,2464,26,1,0,0,0,2465,2466,7,3,0,0,2466,2467,7,6,0, + 0,2467,2468,7,6,0,0,2468,2469,7,8,0,0,2469,2470,7,15,0,0,2470,2471, + 7,16,0,0,2471,2472,7,17,0,0,2472,2473,7,6,0,0,2473,2474,7,7,0,0, + 2474,28,1,0,0,0,2475,2476,7,16,0,0,2476,2477,7,7,0,0,2477,2478,7, + 18,0,0,2478,2479,7,19,0,0,2479,2480,7,8,0,0,2480,2481,7,7,0,0,2481, + 30,1,0,0,0,2482,2483,7,16,0,0,2483,2484,7,7,0,0,2484,2485,7,6,0, + 0,2485,2486,7,9,0,0,2486,2487,7,7,0,0,2487,2488,7,7,0,0,2488,2489, + 7,12,0,0,2489,32,1,0,0,0,2490,2491,7,16,0,0,2491,2492,7,19,0,0,2492, + 2493,7,6,0,0,2493,2494,7,20,0,0,2494,34,1,0,0,0,2495,2496,7,16,0, + 0,2496,2497,7,17,0,0,2497,2498,7,14,0,0,2498,2499,7,21,0,0,2499, + 2500,7,7,0,0,2500,2501,7,6,0,0,2501,2502,7,11,0,0,2502,36,1,0,0, + 0,2503,2504,7,16,0,0,2504,2505,7,10,0,0,2505,38,1,0,0,0,2506,2507, + 7,14,0,0,2507,2508,7,3,0,0,2508,2509,7,5,0,0,2509,2510,7,5,0,0,2510, + 40,1,0,0,0,2511,2512,7,14,0,0,2512,2513,7,3,0,0,2513,2514,7,11,0, + 0,2514,2515,7,14,0,0,2515,2516,7,3,0,0,2516,2517,7,4,0,0,2517,2518, + 7,7,0,0,2518,42,1,0,0,0,2519,2520,7,14,0,0,2520,2521,7,3,0,0,2521, + 2522,7,11,0,0,2522,2523,7,7,0,0,2523,44,1,0,0,0,2524,2525,7,14,0, + 0,2525,2526,7,3,0,0,2526,2527,7,11,0,0,2527,2528,7,6,0,0,2528,46, + 1,0,0,0,2529,2530,7,14,0,0,2530,2531,7,20,0,0,2531,2532,7,3,0,0, + 2532,2533,7,12,0,0,2533,2534,7,22,0,0,2534,2535,7,7,0,0,2535,48, + 1,0,0,0,2536,2537,7,14,0,0,2537,2538,7,20,0,0,2538,2539,7,3,0,0, + 2539,2540,7,8,0,0,2540,2541,7,3,0,0,2541,2542,7,14,0,0,2542,2543, + 7,6,0,0,2543,2544,7,7,0,0,2544,2545,7,8,0,0,2545,50,1,0,0,0,2546, + 2547,7,14,0,0,2547,2548,7,20,0,0,2548,2549,7,7,0,0,2549,2550,7,14, + 0,0,2550,2551,7,21,0,0,2551,52,1,0,0,0,2552,2553,7,14,0,0,2553,2554, + 7,19,0,0,2554,2555,7,5,0,0,2555,2556,7,5,0,0,2556,2557,7,3,0,0,2557, + 2558,7,6,0,0,2558,2559,7,7,0,0,2559,54,1,0,0,0,2560,2561,7,14,0, + 0,2561,2562,7,19,0,0,2562,2563,7,5,0,0,2563,2564,7,17,0,0,2564,2565, + 7,23,0,0,2565,2566,7,12,0,0,2566,56,1,0,0,0,2567,2568,7,14,0,0,2568, + 2569,7,19,0,0,2569,2570,7,12,0,0,2570,2571,7,4,0,0,2571,2572,7,15, + 0,0,2572,2573,7,6,0,0,2573,2574,7,15,0,0,2574,2575,7,19,0,0,2575, + 2576,7,12,0,0,2576,58,1,0,0,0,2577,2578,7,14,0,0,2578,2579,7,19, + 0,0,2579,2580,7,12,0,0,2580,2581,7,11,0,0,2581,2582,7,6,0,0,2582, + 2583,7,8,0,0,2583,2584,7,3,0,0,2584,2585,7,15,0,0,2585,2586,7,12, + 0,0,2586,2587,7,6,0,0,2587,60,1,0,0,0,2588,2589,7,14,0,0,2589,2590, + 7,19,0,0,2590,2591,7,12,0,0,2591,2592,7,6,0,0,2592,2593,7,15,0,0, + 2593,2594,7,12,0,0,2594,2595,7,17,0,0,2595,2596,7,7,0,0,2596,62, + 1,0,0,0,2597,2598,7,14,0,0,2598,2599,7,19,0,0,2599,2600,7,12,0,0, + 2600,2601,7,24,0,0,2601,2602,7,7,0,0,2602,2603,7,8,0,0,2603,2604, + 7,6,0,0,2604,64,1,0,0,0,2605,2606,7,14,0,0,2606,2607,7,8,0,0,2607, + 2608,7,7,0,0,2608,2609,7,3,0,0,2609,2610,7,6,0,0,2610,2611,7,7,0, + 0,2611,66,1,0,0,0,2612,2613,7,14,0,0,2613,2614,7,8,0,0,2614,2615, + 7,19,0,0,2615,2616,7,11,0,0,2616,2617,7,11,0,0,2617,68,1,0,0,0,2618, + 2619,7,14,0,0,2619,2620,7,17,0,0,2620,2621,7,8,0,0,2621,2622,7,8, + 0,0,2622,2623,7,7,0,0,2623,2624,7,12,0,0,2624,2625,7,6,0,0,2625, + 70,1,0,0,0,2626,2627,7,14,0,0,2627,2628,7,17,0,0,2628,2629,7,8,0, + 0,2629,2630,7,8,0,0,2630,2631,7,7,0,0,2631,2632,7,12,0,0,2632,2633, + 7,6,0,0,2633,2634,5,95,0,0,2634,2635,7,8,0,0,2635,2636,7,19,0,0, + 2636,2637,7,5,0,0,2637,2638,7,7,0,0,2638,72,1,0,0,0,2639,2640,7, + 14,0,0,2640,2641,7,17,0,0,2641,2642,7,8,0,0,2642,2643,7,8,0,0,2643, + 2644,7,7,0,0,2644,2645,7,12,0,0,2645,2646,7,6,0,0,2646,2647,5,95, + 0,0,2647,2648,7,17,0,0,2648,2649,7,11,0,0,2649,2650,7,7,0,0,2650, + 2651,7,8,0,0,2651,74,1,0,0,0,2652,2653,7,14,0,0,2653,2654,7,17,0, + 0,2654,2655,7,8,0,0,2655,2656,7,11,0,0,2656,2657,7,19,0,0,2657,2658, + 7,8,0,0,2658,76,1,0,0,0,2659,2660,7,4,0,0,2660,2661,7,3,0,0,2661, + 2662,7,6,0,0,2662,2663,7,3,0,0,2663,2664,7,16,0,0,2664,2665,7,3, + 0,0,2665,2666,7,11,0,0,2666,2667,7,7,0,0,2667,78,1,0,0,0,2668,2669, + 7,4,0,0,2669,2670,7,3,0,0,2670,2671,7,6,0,0,2671,2672,7,3,0,0,2672, + 2673,7,16,0,0,2673,2674,7,3,0,0,2674,2675,7,11,0,0,2675,2676,7,7, + 0,0,2676,2677,7,11,0,0,2677,80,1,0,0,0,2678,2679,7,4,0,0,2679,2680, + 7,7,0,0,2680,2681,7,14,0,0,2681,2682,7,5,0,0,2682,2683,7,3,0,0,2683, + 2684,7,8,0,0,2684,2685,7,7,0,0,2685,82,1,0,0,0,2686,2687,7,4,0,0, + 2687,2688,7,7,0,0,2688,2689,7,18,0,0,2689,2690,7,3,0,0,2690,2691, + 7,17,0,0,2691,2692,7,5,0,0,2692,2693,7,6,0,0,2693,84,1,0,0,0,2694, + 2695,7,4,0,0,2695,2696,7,7,0,0,2696,2697,7,5,0,0,2697,2698,7,3,0, + 0,2698,2699,7,10,0,0,2699,2700,7,7,0,0,2700,2701,7,4,0,0,2701,86, + 1,0,0,0,2702,2703,7,4,0,0,2703,2704,7,7,0,0,2704,2705,7,5,0,0,2705, + 2706,7,7,0,0,2706,2707,7,6,0,0,2707,2708,7,7,0,0,2708,88,1,0,0,0, + 2709,2710,7,4,0,0,2710,2711,7,7,0,0,2711,2712,7,11,0,0,2712,2713, + 7,14,0,0,2713,90,1,0,0,0,2714,2715,7,4,0,0,2715,2716,7,7,0,0,2716, + 2717,7,11,0,0,2717,2718,7,14,0,0,2718,2719,7,8,0,0,2719,2720,7,15, + 0,0,2720,2721,7,16,0,0,2721,2722,7,7,0,0,2722,92,1,0,0,0,2723,2724, + 7,4,0,0,2724,2725,7,7,0,0,2725,2726,7,6,0,0,2726,2727,7,7,0,0,2727, + 2728,7,8,0,0,2728,2729,7,23,0,0,2729,2730,7,15,0,0,2730,2731,7,12, + 0,0,2731,2732,7,15,0,0,2732,2733,7,11,0,0,2733,2734,7,6,0,0,2734, + 2735,7,15,0,0,2735,2736,7,14,0,0,2736,94,1,0,0,0,2737,2738,7,4,0, + 0,2738,2739,7,15,0,0,2739,2740,7,3,0,0,2740,2741,7,22,0,0,2741,2742, + 7,12,0,0,2742,2743,7,19,0,0,2743,2744,7,11,0,0,2744,2745,7,6,0,0, + 2745,2746,7,15,0,0,2746,2747,7,14,0,0,2747,2748,7,11,0,0,2748,96, + 1,0,0,0,2749,2750,7,4,0,0,2750,2751,7,15,0,0,2751,2752,7,11,0,0, + 2752,2753,7,6,0,0,2753,2754,7,15,0,0,2754,2755,7,12,0,0,2755,2756, + 7,14,0,0,2756,2757,7,6,0,0,2757,98,1,0,0,0,2758,2759,7,4,0,0,2759, + 2760,7,15,0,0,2760,2761,7,11,0,0,2761,2762,7,6,0,0,2762,2763,7,15, + 0,0,2763,2764,7,12,0,0,2764,2765,7,14,0,0,2765,2766,7,6,0,0,2766, + 2767,7,8,0,0,2767,2768,7,19,0,0,2768,2769,7,9,0,0,2769,100,1,0,0, + 0,2770,2771,7,4,0,0,2771,2772,7,8,0,0,2772,2773,7,19,0,0,2773,2774, + 7,25,0,0,2774,102,1,0,0,0,2775,2776,7,7,0,0,2776,2777,7,3,0,0,2777, + 2778,7,14,0,0,2778,2779,7,20,0,0,2779,104,1,0,0,0,2780,2781,7,7, + 0,0,2781,2782,7,5,0,0,2782,2783,7,11,0,0,2783,2784,7,7,0,0,2784, + 106,1,0,0,0,2785,2786,7,7,0,0,2786,2787,7,5,0,0,2787,2788,7,11,0, + 0,2788,2789,7,7,0,0,2789,2790,7,15,0,0,2790,2791,7,18,0,0,2791,108, + 1,0,0,0,2792,2793,7,7,0,0,2793,2794,7,23,0,0,2794,2795,7,25,0,0, + 2795,2796,7,6,0,0,2796,2797,7,10,0,0,2797,110,1,0,0,0,2798,2799, + 7,7,0,0,2799,2800,7,12,0,0,2800,2801,7,14,0,0,2801,2802,7,5,0,0, + 2802,2803,7,19,0,0,2803,2804,7,11,0,0,2804,2805,7,7,0,0,2805,2806, + 7,4,0,0,2806,112,1,0,0,0,2807,2808,7,7,0,0,2808,2809,7,12,0,0,2809, + 2810,7,18,0,0,2810,2811,7,19,0,0,2811,2812,7,8,0,0,2812,2813,7,14, + 0,0,2813,2814,7,7,0,0,2814,2815,7,4,0,0,2815,114,1,0,0,0,2816,2817, + 7,7,0,0,2817,2818,7,11,0,0,2818,2819,7,14,0,0,2819,2820,7,3,0,0, + 2820,2821,7,25,0,0,2821,2822,7,7,0,0,2822,2823,7,4,0,0,2823,116, + 1,0,0,0,2824,2825,7,7,0,0,2825,2826,7,26,0,0,2826,2827,7,14,0,0, + 2827,2828,7,7,0,0,2828,2829,7,25,0,0,2829,2830,7,6,0,0,2830,118, + 1,0,0,0,2831,2832,7,7,0,0,2832,2833,7,26,0,0,2833,2834,7,15,0,0, + 2834,2835,7,11,0,0,2835,2836,7,6,0,0,2836,2837,7,11,0,0,2837,120, + 1,0,0,0,2838,2839,7,7,0,0,2839,2840,7,26,0,0,2840,2841,7,15,0,0, + 2841,2842,7,6,0,0,2842,122,1,0,0,0,2843,2844,7,7,0,0,2844,2845,7, + 26,0,0,2845,2846,7,25,0,0,2846,2847,7,5,0,0,2847,2848,7,3,0,0,2848, + 2849,7,15,0,0,2849,2850,7,12,0,0,2850,124,1,0,0,0,2851,2852,7,18, + 0,0,2852,2853,7,3,0,0,2853,2854,7,5,0,0,2854,2855,7,11,0,0,2855, + 2856,7,7,0,0,2856,126,1,0,0,0,2857,2858,7,18,0,0,2858,2859,7,7,0, + 0,2859,2860,7,6,0,0,2860,2861,7,14,0,0,2861,2862,7,20,0,0,2862,128, + 1,0,0,0,2863,2864,7,18,0,0,2864,2865,7,19,0,0,2865,2866,7,8,0,0, + 2866,130,1,0,0,0,2867,2868,7,18,0,0,2868,2869,7,19,0,0,2869,2870, + 7,8,0,0,2870,2871,7,14,0,0,2871,2872,7,7,0,0,2872,132,1,0,0,0,2873, + 2874,7,18,0,0,2874,2875,7,19,0,0,2875,2876,7,8,0,0,2876,2877,7,7, + 0,0,2877,2878,7,15,0,0,2878,2879,7,22,0,0,2879,2880,7,12,0,0,2880, + 134,1,0,0,0,2881,2882,7,18,0,0,2882,2883,7,8,0,0,2883,2884,7,19, + 0,0,2884,2885,7,23,0,0,2885,136,1,0,0,0,2886,2887,7,18,0,0,2887, + 2888,7,17,0,0,2888,2889,7,5,0,0,2889,2890,7,5,0,0,2890,2891,7,6, + 0,0,2891,2892,7,7,0,0,2892,2893,7,26,0,0,2893,2894,7,6,0,0,2894, + 138,1,0,0,0,2895,2896,7,22,0,0,2896,2897,7,7,0,0,2897,2898,7,12, + 0,0,2898,2899,7,7,0,0,2899,2900,7,8,0,0,2900,2901,7,3,0,0,2901,2902, + 7,6,0,0,2902,2903,7,7,0,0,2903,2904,7,4,0,0,2904,140,1,0,0,0,2905, + 2906,7,22,0,0,2906,2907,7,7,0,0,2907,2908,7,6,0,0,2908,142,1,0,0, + 0,2909,2910,7,22,0,0,2910,2911,7,8,0,0,2911,2912,7,3,0,0,2912,2913, + 7,12,0,0,2913,2914,7,6,0,0,2914,144,1,0,0,0,2915,2916,7,22,0,0,2916, + 2917,7,8,0,0,2917,2918,7,19,0,0,2918,2919,7,17,0,0,2919,2920,7,25, + 0,0,2920,146,1,0,0,0,2921,2922,7,20,0,0,2922,2923,7,3,0,0,2923,2924, + 7,24,0,0,2924,2925,7,15,0,0,2925,2926,7,12,0,0,2926,2927,7,22,0, + 0,2927,148,1,0,0,0,2928,2929,7,20,0,0,2929,2930,7,15,0,0,2930,2931, + 7,22,0,0,2931,2932,7,20,0,0,2932,2933,5,95,0,0,2933,2934,7,25,0, + 0,2934,2935,7,8,0,0,2935,2936,7,15,0,0,2936,2937,7,19,0,0,2937,2938, + 7,8,0,0,2938,2939,7,15,0,0,2939,2940,7,6,0,0,2940,2941,7,10,0,0, + 2941,150,1,0,0,0,2942,2943,7,20,0,0,2943,2944,7,15,0,0,2944,2945, + 7,11,0,0,2945,2946,7,6,0,0,2946,2947,7,19,0,0,2947,2948,7,22,0,0, + 2948,2949,7,8,0,0,2949,2950,7,3,0,0,2950,2951,7,23,0,0,2951,152, + 1,0,0,0,2952,2953,7,15,0,0,2953,2954,7,18,0,0,2954,154,1,0,0,0,2955, + 2956,7,15,0,0,2956,2957,7,22,0,0,2957,2958,7,12,0,0,2958,2959,7, + 19,0,0,2959,2960,7,8,0,0,2960,2961,7,7,0,0,2961,156,1,0,0,0,2962, + 2963,7,15,0,0,2963,2964,7,22,0,0,2964,2965,7,12,0,0,2965,2966,7, + 19,0,0,2966,2967,7,8,0,0,2967,2968,7,7,0,0,2968,2969,7,4,0,0,2969, + 158,1,0,0,0,2970,2971,7,15,0,0,2971,2972,7,12,0,0,2972,160,1,0,0, + 0,2973,2974,7,15,0,0,2974,2975,7,12,0,0,2975,2976,7,4,0,0,2976,2977, + 7,7,0,0,2977,2978,7,26,0,0,2978,162,1,0,0,0,2979,2980,7,15,0,0,2980, + 2981,7,12,0,0,2981,2982,7,18,0,0,2982,2983,7,15,0,0,2983,2984,7, + 5,0,0,2984,2985,7,7,0,0,2985,164,1,0,0,0,2986,2987,7,15,0,0,2987, + 2988,7,12,0,0,2988,2989,7,12,0,0,2989,2990,7,7,0,0,2990,2991,7,8, + 0,0,2991,166,1,0,0,0,2992,2993,7,15,0,0,2993,2994,7,12,0,0,2994, + 2995,7,19,0,0,2995,2996,7,17,0,0,2996,2997,7,6,0,0,2997,168,1,0, + 0,0,2998,2999,7,15,0,0,2999,3000,7,12,0,0,3000,3001,7,11,0,0,3001, + 3002,7,7,0,0,3002,3003,7,8,0,0,3003,3004,7,6,0,0,3004,170,1,0,0, + 0,3005,3006,7,15,0,0,3006,3007,7,12,0,0,3007,3008,7,6,0,0,3008,3009, + 7,7,0,0,3009,3010,7,8,0,0,3010,3011,7,24,0,0,3011,3012,7,3,0,0,3012, + 3013,7,5,0,0,3013,172,1,0,0,0,3014,3015,7,15,0,0,3015,3016,7,12, + 0,0,3016,3017,7,6,0,0,3017,3018,7,19,0,0,3018,174,1,0,0,0,3019,3020, + 7,15,0,0,3020,3021,7,11,0,0,3021,176,1,0,0,0,3022,3023,7,15,0,0, + 3023,3024,7,6,0,0,3024,3025,7,7,0,0,3025,3026,7,8,0,0,3026,3027, + 7,3,0,0,3027,3028,7,6,0,0,3028,3029,7,7,0,0,3029,178,1,0,0,0,3030, + 3031,7,27,0,0,3031,3032,7,19,0,0,3032,3033,7,15,0,0,3033,3034,7, + 12,0,0,3034,180,1,0,0,0,3035,3036,7,21,0,0,3036,3037,7,7,0,0,3037, + 3038,7,10,0,0,3038,182,1,0,0,0,3039,3040,7,21,0,0,3040,3041,7,7, + 0,0,3041,3042,7,10,0,0,3042,3043,7,11,0,0,3043,184,1,0,0,0,3044, + 3045,7,21,0,0,3045,3046,7,15,0,0,3046,3047,7,5,0,0,3047,3048,7,5, + 0,0,3048,186,1,0,0,0,3049,3050,7,5,0,0,3050,3051,7,3,0,0,3051,3052, + 7,6,0,0,3052,3053,7,7,0,0,3053,3054,7,8,0,0,3054,3055,7,3,0,0,3055, + 3056,7,5,0,0,3056,188,1,0,0,0,3057,3058,7,5,0,0,3058,3059,7,7,0, + 0,3059,3060,7,3,0,0,3060,3061,7,4,0,0,3061,3062,7,15,0,0,3062,3063, + 7,12,0,0,3063,3064,7,22,0,0,3064,190,1,0,0,0,3065,3066,7,5,0,0,3066, + 3067,7,7,0,0,3067,3068,7,3,0,0,3068,3069,7,24,0,0,3069,3070,7,7, + 0,0,3070,192,1,0,0,0,3071,3072,7,5,0,0,3072,3073,7,7,0,0,3073,3074, + 7,18,0,0,3074,3075,7,6,0,0,3075,194,1,0,0,0,3076,3077,7,5,0,0,3077, + 3078,7,15,0,0,3078,3079,7,21,0,0,3079,3080,7,7,0,0,3080,196,1,0, + 0,0,3081,3082,7,5,0,0,3082,3083,7,15,0,0,3083,3084,7,23,0,0,3084, + 3085,7,15,0,0,3085,3086,7,6,0,0,3086,198,1,0,0,0,3087,3088,7,5,0, + 0,3088,3089,7,15,0,0,3089,3090,7,12,0,0,3090,3091,7,7,0,0,3091,3092, + 7,3,0,0,3092,3093,7,8,0,0,3093,200,1,0,0,0,3094,3095,7,5,0,0,3095, + 3096,7,15,0,0,3096,3097,7,12,0,0,3097,3098,7,7,0,0,3098,3099,7,11, + 0,0,3099,202,1,0,0,0,3100,3101,7,5,0,0,3101,3102,7,19,0,0,3102,3103, + 7,3,0,0,3103,3104,7,4,0,0,3104,204,1,0,0,0,3105,3106,7,5,0,0,3106, + 3107,7,19,0,0,3107,3108,7,14,0,0,3108,3109,7,21,0,0,3109,206,1,0, + 0,0,3110,3111,7,5,0,0,3111,3112,7,19,0,0,3112,3113,7,14,0,0,3113, + 3114,7,21,0,0,3114,3115,7,7,0,0,3115,3116,7,4,0,0,3116,208,1,0,0, + 0,3117,3118,7,5,0,0,3118,3119,7,19,0,0,3119,3120,7,19,0,0,3120,3121, + 7,25,0,0,3121,210,1,0,0,0,3122,3123,7,5,0,0,3123,3124,7,19,0,0,3124, + 3125,7,9,0,0,3125,3126,5,95,0,0,3126,3127,7,25,0,0,3127,3128,7,8, + 0,0,3128,3129,7,15,0,0,3129,3130,7,19,0,0,3130,3131,7,8,0,0,3131, + 3132,7,15,0,0,3132,3133,7,6,0,0,3133,3134,7,10,0,0,3134,212,1,0, + 0,0,3135,3136,7,23,0,0,3136,3137,7,3,0,0,3137,3138,7,11,0,0,3138, + 3139,7,6,0,0,3139,3140,7,7,0,0,3140,3141,7,8,0,0,3141,3142,5,95, + 0,0,3142,3143,7,16,0,0,3143,3144,7,15,0,0,3144,3145,7,12,0,0,3145, + 3146,7,4,0,0,3146,214,1,0,0,0,3147,3148,7,23,0,0,3148,3149,7,3,0, + 0,3149,3150,7,11,0,0,3150,3151,7,6,0,0,3151,3152,7,7,0,0,3152,3153, + 7,8,0,0,3153,3154,5,95,0,0,3154,3155,7,11,0,0,3155,3156,7,11,0,0, + 3156,3157,7,5,0,0,3157,3158,5,95,0,0,3158,3159,7,24,0,0,3159,3160, + 7,7,0,0,3160,3161,7,8,0,0,3161,3162,7,15,0,0,3162,3163,7,18,0,0, + 3163,3164,7,10,0,0,3164,3165,5,95,0,0,3165,3166,7,11,0,0,3166,3167, + 7,7,0,0,3167,3168,7,8,0,0,3168,3169,7,24,0,0,3169,3170,7,7,0,0,3170, + 3171,7,8,0,0,3171,3172,5,95,0,0,3172,3173,7,14,0,0,3173,3174,7,7, + 0,0,3174,3175,7,8,0,0,3175,3176,7,6,0,0,3176,216,1,0,0,0,3177,3178, + 7,23,0,0,3178,3179,7,3,0,0,3179,3180,7,6,0,0,3180,3181,7,14,0,0, + 3181,3182,7,20,0,0,3182,218,1,0,0,0,3183,3184,7,23,0,0,3184,3185, + 7,3,0,0,3185,3186,7,26,0,0,3186,3187,7,24,0,0,3187,3188,7,3,0,0, + 3188,3189,7,5,0,0,3189,3190,7,17,0,0,3190,3191,7,7,0,0,3191,220, + 1,0,0,0,3192,3193,7,23,0,0,3193,3194,7,15,0,0,3194,3195,7,12,0,0, + 3195,3196,7,24,0,0,3196,3197,7,3,0,0,3197,3198,7,5,0,0,3198,3199, + 7,17,0,0,3199,3200,7,7,0,0,3200,222,1,0,0,0,3201,3202,7,23,0,0,3202, + 3203,7,19,0,0,3203,3204,7,4,0,0,3204,3205,7,15,0,0,3205,3206,7,18, + 0,0,3206,3207,7,15,0,0,3207,3208,7,7,0,0,3208,3209,7,11,0,0,3209, + 224,1,0,0,0,3210,3211,7,12,0,0,3211,3212,7,3,0,0,3212,3213,7,6,0, + 0,3213,3214,7,17,0,0,3214,3215,7,8,0,0,3215,3216,7,3,0,0,3216,3217, + 7,5,0,0,3217,226,1,0,0,0,3218,3219,7,12,0,0,3219,3220,7,19,0,0,3220, + 3221,7,6,0,0,3221,228,1,0,0,0,3222,3223,7,12,0,0,3223,3224,7,19, + 0,0,3224,3225,5,95,0,0,3225,3226,7,9,0,0,3226,3227,7,8,0,0,3227, + 3228,7,15,0,0,3228,3229,7,6,0,0,3229,3230,7,7,0,0,3230,3231,5,95, + 0,0,3231,3232,7,6,0,0,3232,3233,7,19,0,0,3233,3234,5,95,0,0,3234, + 3235,7,16,0,0,3235,3236,7,15,0,0,3236,3237,7,12,0,0,3237,3238,7, + 5,0,0,3238,3239,7,19,0,0,3239,3240,7,22,0,0,3240,230,1,0,0,0,3241, + 3242,7,12,0,0,3242,3243,7,17,0,0,3243,3244,7,5,0,0,3244,3245,7,5, + 0,0,3245,232,1,0,0,0,3246,3247,7,12,0,0,3247,3248,7,17,0,0,3248, + 3249,7,23,0,0,3249,3250,7,16,0,0,3250,3251,7,7,0,0,3251,3252,7,8, + 0,0,3252,234,1,0,0,0,3253,3254,7,19,0,0,3254,3255,7,12,0,0,3255, + 236,1,0,0,0,3256,3257,7,19,0,0,3257,3258,7,25,0,0,3258,3259,7,6, + 0,0,3259,3260,7,15,0,0,3260,3261,7,23,0,0,3261,3262,7,15,0,0,3262, + 3263,7,13,0,0,3263,3264,7,7,0,0,3264,238,1,0,0,0,3265,3266,7,19, + 0,0,3266,3267,7,25,0,0,3267,3268,7,6,0,0,3268,3269,7,15,0,0,3269, + 3270,7,19,0,0,3270,3271,7,12,0,0,3271,240,1,0,0,0,3272,3273,7,19, + 0,0,3273,3274,7,25,0,0,3274,3275,7,6,0,0,3275,3276,7,15,0,0,3276, + 3277,7,19,0,0,3277,3278,7,12,0,0,3278,3279,7,3,0,0,3279,3280,7,5, + 0,0,3280,242,1,0,0,0,3281,3282,7,19,0,0,3282,3283,7,25,0,0,3283, + 3284,7,6,0,0,3284,3285,7,15,0,0,3285,3286,7,19,0,0,3286,3287,7,12, + 0,0,3287,3288,7,3,0,0,3288,3289,7,5,0,0,3289,3290,7,5,0,0,3290,3291, + 7,10,0,0,3291,244,1,0,0,0,3292,3293,7,19,0,0,3293,3294,7,8,0,0,3294, + 246,1,0,0,0,3295,3296,7,19,0,0,3296,3297,7,8,0,0,3297,3298,7,4,0, + 0,3298,3299,7,7,0,0,3299,3300,7,8,0,0,3300,248,1,0,0,0,3301,3302, + 7,19,0,0,3302,3303,7,17,0,0,3303,3304,7,6,0,0,3304,250,1,0,0,0,3305, + 3306,7,19,0,0,3306,3307,7,17,0,0,3307,3308,7,6,0,0,3308,3309,7,7, + 0,0,3309,3310,7,8,0,0,3310,252,1,0,0,0,3311,3312,7,19,0,0,3312,3313, + 7,17,0,0,3313,3314,7,6,0,0,3314,3315,7,18,0,0,3315,3316,7,15,0,0, + 3316,3317,7,5,0,0,3317,3318,7,7,0,0,3318,254,1,0,0,0,3319,3320,7, + 19,0,0,3320,3321,7,24,0,0,3321,3322,7,7,0,0,3322,3323,7,8,0,0,3323, + 256,1,0,0,0,3324,3325,7,25,0,0,3325,3326,7,3,0,0,3326,3327,7,8,0, + 0,3327,3328,7,6,0,0,3328,3329,7,15,0,0,3329,3330,7,6,0,0,3330,3331, + 7,15,0,0,3331,3332,7,19,0,0,3332,3333,7,12,0,0,3333,258,1,0,0,0, + 3334,3335,7,25,0,0,3335,3336,7,8,0,0,3336,3337,7,15,0,0,3337,3338, + 7,23,0,0,3338,3339,7,3,0,0,3339,3340,7,8,0,0,3340,3341,7,10,0,0, + 3341,260,1,0,0,0,3342,3343,7,25,0,0,3343,3344,7,8,0,0,3344,3345, + 7,19,0,0,3345,3346,7,14,0,0,3346,3347,7,7,0,0,3347,3348,7,4,0,0, + 3348,3349,7,17,0,0,3349,3350,7,8,0,0,3350,3351,7,7,0,0,3351,262, + 1,0,0,0,3352,3353,7,25,0,0,3353,3354,7,17,0,0,3354,3355,7,8,0,0, + 3355,3356,7,22,0,0,3356,3357,7,7,0,0,3357,264,1,0,0,0,3358,3359, + 7,8,0,0,3359,3360,7,3,0,0,3360,3361,7,12,0,0,3361,3362,7,22,0,0, + 3362,3363,7,7,0,0,3363,266,1,0,0,0,3364,3365,7,8,0,0,3365,3366,7, + 7,0,0,3366,3367,7,3,0,0,3367,3368,7,4,0,0,3368,268,1,0,0,0,3369, + 3370,7,8,0,0,3370,3371,7,7,0,0,3371,3372,7,3,0,0,3372,3373,7,4,0, + 0,3373,3374,7,11,0,0,3374,270,1,0,0,0,3375,3376,7,8,0,0,3376,3377, + 7,7,0,0,3377,3378,7,18,0,0,3378,3379,7,7,0,0,3379,3380,7,8,0,0,3380, + 3381,7,7,0,0,3381,3382,7,12,0,0,3382,3383,7,14,0,0,3383,3384,7,7, + 0,0,3384,3385,7,11,0,0,3385,272,1,0,0,0,3386,3387,7,8,0,0,3387,3388, + 7,7,0,0,3388,3389,7,22,0,0,3389,3390,7,7,0,0,3390,3391,7,26,0,0, + 3391,3392,7,25,0,0,3392,274,1,0,0,0,3393,3394,7,8,0,0,3394,3395, + 7,7,0,0,3395,3396,7,5,0,0,3396,3397,7,7,0,0,3397,3398,7,3,0,0,3398, + 3399,7,11,0,0,3399,3400,7,7,0,0,3400,276,1,0,0,0,3401,3402,7,8,0, + 0,3402,3403,7,7,0,0,3403,3404,7,12,0,0,3404,3405,7,3,0,0,3405,3406, + 7,23,0,0,3406,3407,7,7,0,0,3407,278,1,0,0,0,3408,3409,7,8,0,0,3409, + 3410,7,7,0,0,3410,3411,7,25,0,0,3411,3412,7,7,0,0,3412,3413,7,3, + 0,0,3413,3414,7,6,0,0,3414,280,1,0,0,0,3415,3416,7,8,0,0,3416,3417, + 7,7,0,0,3417,3418,7,25,0,0,3418,3419,7,5,0,0,3419,3420,7,3,0,0,3420, + 3421,7,14,0,0,3421,3422,7,7,0,0,3422,282,1,0,0,0,3423,3424,7,8,0, + 0,3424,3425,7,7,0,0,3425,3426,7,28,0,0,3426,3427,7,17,0,0,3427,3428, + 7,15,0,0,3428,3429,7,8,0,0,3429,3430,7,7,0,0,3430,284,1,0,0,0,3431, + 3432,7,8,0,0,3432,3433,7,7,0,0,3433,3434,7,11,0,0,3434,3435,7,15, + 0,0,3435,3436,7,22,0,0,3436,3437,7,12,0,0,3437,3438,7,3,0,0,3438, + 3439,7,5,0,0,3439,286,1,0,0,0,3440,3441,7,8,0,0,3441,3442,7,7,0, + 0,3442,3443,7,11,0,0,3443,3444,7,6,0,0,3444,3445,7,8,0,0,3445,3446, + 7,15,0,0,3446,3447,7,14,0,0,3447,3448,7,6,0,0,3448,288,1,0,0,0,3449, + 3450,7,8,0,0,3450,3451,7,7,0,0,3451,3452,7,6,0,0,3452,3453,7,3,0, + 0,3453,3454,7,15,0,0,3454,3455,7,12,0,0,3455,290,1,0,0,0,3456,3457, + 7,8,0,0,3457,3458,7,7,0,0,3458,3459,7,6,0,0,3459,3460,7,17,0,0,3460, + 3461,7,8,0,0,3461,3462,7,12,0,0,3462,292,1,0,0,0,3463,3464,7,8,0, + 0,3464,3465,7,7,0,0,3465,3466,7,24,0,0,3466,3467,7,19,0,0,3467,3468, + 7,21,0,0,3468,3469,7,7,0,0,3469,294,1,0,0,0,3470,3471,7,8,0,0,3471, + 3472,7,15,0,0,3472,3473,7,22,0,0,3473,3474,7,20,0,0,3474,3475,7, + 6,0,0,3475,296,1,0,0,0,3476,3477,7,8,0,0,3477,3478,7,5,0,0,3478, + 3479,7,15,0,0,3479,3480,7,21,0,0,3480,3481,7,7,0,0,3481,298,1,0, + 0,0,3482,3483,7,11,0,0,3483,3484,7,14,0,0,3484,3485,7,20,0,0,3485, + 3486,7,7,0,0,3486,3487,7,23,0,0,3487,3488,7,3,0,0,3488,300,1,0,0, + 0,3489,3490,7,11,0,0,3490,3491,7,14,0,0,3491,3492,7,20,0,0,3492, + 3493,7,7,0,0,3493,3494,7,23,0,0,3494,3495,7,3,0,0,3495,3496,7,11, + 0,0,3496,302,1,0,0,0,3497,3498,7,11,0,0,3498,3499,7,7,0,0,3499,3500, + 7,5,0,0,3500,3501,7,7,0,0,3501,3502,7,14,0,0,3502,3503,7,6,0,0,3503, + 304,1,0,0,0,3504,3505,7,11,0,0,3505,3506,7,7,0,0,3506,3507,7,6,0, + 0,3507,306,1,0,0,0,3508,3509,7,11,0,0,3509,3510,7,7,0,0,3510,3511, + 7,25,0,0,3511,3512,7,3,0,0,3512,3513,7,8,0,0,3513,3514,7,3,0,0,3514, + 3515,7,6,0,0,3515,3516,7,19,0,0,3516,3517,7,8,0,0,3517,308,1,0,0, + 0,3518,3519,7,11,0,0,3519,3520,7,20,0,0,3520,3521,7,19,0,0,3521, + 3522,7,9,0,0,3522,310,1,0,0,0,3523,3524,7,11,0,0,3524,3525,7,15, + 0,0,3525,3526,7,22,0,0,3526,3527,7,12,0,0,3527,3528,7,3,0,0,3528, + 3529,7,5,0,0,3529,312,1,0,0,0,3530,3531,7,11,0,0,3531,3532,7,21, + 0,0,3532,3533,7,15,0,0,3533,3534,7,25,0,0,3534,314,1,0,0,0,3535, + 3536,7,11,0,0,3536,3537,7,21,0,0,3537,3538,7,15,0,0,3538,3539,7, + 25,0,0,3539,3540,5,95,0,0,3540,3541,7,28,0,0,3541,3542,7,17,0,0, + 3542,3543,7,7,0,0,3543,3544,7,8,0,0,3544,3545,7,10,0,0,3545,3546, + 5,95,0,0,3546,3547,7,8,0,0,3547,3548,7,7,0,0,3548,3549,7,9,0,0,3549, + 3550,7,8,0,0,3550,3551,7,15,0,0,3551,3552,7,6,0,0,3552,3553,7,7, + 0,0,3553,316,1,0,0,0,3554,3555,7,11,0,0,3555,3556,7,25,0,0,3556, + 3557,7,3,0,0,3557,3558,7,6,0,0,3558,3559,7,15,0,0,3559,3560,7,3, + 0,0,3560,3561,7,5,0,0,3561,318,1,0,0,0,3562,3563,7,11,0,0,3563,3564, + 7,28,0,0,3564,3565,7,5,0,0,3565,320,1,0,0,0,3566,3567,7,11,0,0,3567, + 3568,7,28,0,0,3568,3569,7,5,0,0,3569,3570,7,7,0,0,3570,3571,7,26, + 0,0,3571,3572,7,14,0,0,3572,3573,7,7,0,0,3573,3574,7,25,0,0,3574, + 3575,7,6,0,0,3575,3576,7,15,0,0,3576,3577,7,19,0,0,3577,3578,7,12, + 0,0,3578,322,1,0,0,0,3579,3580,7,11,0,0,3580,3581,7,28,0,0,3581, + 3582,7,5,0,0,3582,3583,7,11,0,0,3583,3584,7,6,0,0,3584,3585,7,3, + 0,0,3585,3586,7,6,0,0,3586,3587,7,7,0,0,3587,324,1,0,0,0,3588,3589, + 7,11,0,0,3589,3590,7,28,0,0,3590,3591,7,5,0,0,3591,3592,7,9,0,0, + 3592,3593,7,3,0,0,3593,3594,7,8,0,0,3594,3595,7,12,0,0,3595,3596, + 7,15,0,0,3596,3597,7,12,0,0,3597,3598,7,22,0,0,3598,326,1,0,0,0, + 3599,3600,7,11,0,0,3600,3601,7,28,0,0,3601,3602,7,5,0,0,3602,3603, + 5,95,0,0,3603,3604,7,16,0,0,3604,3605,7,15,0,0,3605,3606,7,22,0, + 0,3606,3607,5,95,0,0,3607,3608,7,8,0,0,3608,3609,7,7,0,0,3609,3610, + 7,11,0,0,3610,3611,7,17,0,0,3611,3612,7,5,0,0,3612,3613,7,6,0,0, + 3613,328,1,0,0,0,3614,3615,7,11,0,0,3615,3616,7,28,0,0,3616,3617, + 7,5,0,0,3617,3618,5,95,0,0,3618,3619,7,14,0,0,3619,3620,7,3,0,0, + 3620,3621,7,5,0,0,3621,3622,7,14,0,0,3622,3623,5,95,0,0,3623,3624, + 7,18,0,0,3624,3625,7,19,0,0,3625,3626,7,17,0,0,3626,3627,7,12,0, + 0,3627,3628,7,4,0,0,3628,3629,5,95,0,0,3629,3630,7,8,0,0,3630,3631, + 7,19,0,0,3631,3632,7,9,0,0,3632,3633,7,11,0,0,3633,330,1,0,0,0,3634, + 3635,7,11,0,0,3635,3636,7,28,0,0,3636,3637,7,5,0,0,3637,3638,5,95, + 0,0,3638,3639,7,11,0,0,3639,3640,7,23,0,0,3640,3641,7,3,0,0,3641, + 3642,7,5,0,0,3642,3643,7,5,0,0,3643,3644,5,95,0,0,3644,3645,7,8, + 0,0,3645,3646,7,7,0,0,3646,3647,7,11,0,0,3647,3648,7,17,0,0,3648, + 3649,7,5,0,0,3649,3650,7,6,0,0,3650,332,1,0,0,0,3651,3652,7,11,0, + 0,3652,3653,7,11,0,0,3653,3654,7,5,0,0,3654,334,1,0,0,0,3655,3656, + 7,11,0,0,3656,3657,7,6,0,0,3657,3658,7,3,0,0,3658,3659,7,14,0,0, + 3659,3660,7,21,0,0,3660,3661,7,7,0,0,3661,3662,7,4,0,0,3662,336, + 1,0,0,0,3663,3664,7,11,0,0,3664,3665,7,6,0,0,3665,3666,7,3,0,0,3666, + 3667,7,8,0,0,3667,3668,7,6,0,0,3668,3669,7,15,0,0,3669,3670,7,12, + 0,0,3670,3671,7,22,0,0,3671,338,1,0,0,0,3672,3673,7,11,0,0,3673, + 3674,7,6,0,0,3674,3675,7,3,0,0,3675,3676,7,6,0,0,3676,3677,7,7,0, + 0,3677,3678,7,23,0,0,3678,3679,7,7,0,0,3679,3680,7,12,0,0,3680,3681, + 7,6,0,0,3681,340,1,0,0,0,3682,3683,7,11,0,0,3683,3684,7,6,0,0,3684, + 3685,7,8,0,0,3685,3686,7,3,0,0,3686,3687,7,15,0,0,3687,3688,7,22, + 0,0,3688,3689,7,20,0,0,3689,3690,7,6,0,0,3690,3691,5,95,0,0,3691, + 3692,7,27,0,0,3692,3693,7,19,0,0,3693,3694,7,15,0,0,3694,3695,7, + 12,0,0,3695,342,1,0,0,0,3696,3697,7,6,0,0,3697,3698,7,3,0,0,3698, + 3699,7,16,0,0,3699,3700,7,5,0,0,3700,3701,7,7,0,0,3701,344,1,0,0, + 0,3702,3703,7,6,0,0,3703,3704,7,7,0,0,3704,3705,7,8,0,0,3705,3706, + 7,23,0,0,3706,3707,7,15,0,0,3707,3708,7,12,0,0,3708,3709,7,3,0,0, + 3709,3710,7,6,0,0,3710,3711,7,7,0,0,3711,3712,7,4,0,0,3712,346,1, + 0,0,0,3713,3714,7,6,0,0,3714,3715,7,20,0,0,3715,3716,7,7,0,0,3716, + 3717,7,12,0,0,3717,348,1,0,0,0,3718,3719,7,6,0,0,3719,3720,7,19, + 0,0,3720,350,1,0,0,0,3721,3722,7,6,0,0,3722,3723,7,8,0,0,3723,3724, + 7,3,0,0,3724,3725,7,15,0,0,3725,3726,7,5,0,0,3726,3727,7,15,0,0, + 3727,3728,7,12,0,0,3728,3729,7,22,0,0,3729,352,1,0,0,0,3730,3731, + 7,6,0,0,3731,3732,7,8,0,0,3732,3733,7,15,0,0,3733,3734,7,22,0,0, + 3734,3735,7,22,0,0,3735,3736,7,7,0,0,3736,3737,7,8,0,0,3737,354, + 1,0,0,0,3738,3739,7,6,0,0,3739,3740,7,8,0,0,3740,3741,7,17,0,0,3741, + 3742,7,7,0,0,3742,356,1,0,0,0,3743,3744,7,17,0,0,3744,3745,7,12, + 0,0,3745,3746,7,4,0,0,3746,3747,7,19,0,0,3747,358,1,0,0,0,3748,3749, + 7,17,0,0,3749,3750,7,12,0,0,3750,3751,7,15,0,0,3751,3752,7,19,0, + 0,3752,3753,7,12,0,0,3753,360,1,0,0,0,3754,3755,7,17,0,0,3755,3756, + 7,12,0,0,3756,3757,7,15,0,0,3757,3758,7,28,0,0,3758,3759,7,17,0, + 0,3759,3760,7,7,0,0,3760,362,1,0,0,0,3761,3762,7,17,0,0,3762,3763, + 7,12,0,0,3763,3764,7,5,0,0,3764,3765,7,19,0,0,3765,3766,7,14,0,0, + 3766,3767,7,21,0,0,3767,364,1,0,0,0,3768,3769,7,17,0,0,3769,3770, + 7,12,0,0,3770,3771,7,11,0,0,3771,3772,7,15,0,0,3772,3773,7,22,0, + 0,3773,3774,7,12,0,0,3774,3775,7,7,0,0,3775,3776,7,4,0,0,3776,366, + 1,0,0,0,3777,3778,7,17,0,0,3778,3779,7,25,0,0,3779,3780,7,4,0,0, + 3780,3781,7,3,0,0,3781,3782,7,6,0,0,3782,3783,7,7,0,0,3783,368,1, + 0,0,0,3784,3785,7,17,0,0,3785,3786,7,11,0,0,3786,3787,7,3,0,0,3787, + 3788,7,22,0,0,3788,3789,7,7,0,0,3789,370,1,0,0,0,3790,3791,7,17, + 0,0,3791,3792,7,11,0,0,3792,3793,7,7,0,0,3793,372,1,0,0,0,3794,3795, + 7,17,0,0,3795,3796,7,11,0,0,3796,3797,7,15,0,0,3797,3798,7,12,0, + 0,3798,3799,7,22,0,0,3799,374,1,0,0,0,3800,3801,7,24,0,0,3801,3802, + 7,3,0,0,3802,3803,7,5,0,0,3803,3804,7,17,0,0,3804,3805,7,7,0,0,3805, + 3806,7,11,0,0,3806,376,1,0,0,0,3807,3808,7,9,0,0,3808,3809,7,20, + 0,0,3809,3810,7,7,0,0,3810,3811,7,12,0,0,3811,378,1,0,0,0,3812,3813, + 7,9,0,0,3813,3814,7,20,0,0,3814,3815,7,7,0,0,3815,3816,7,8,0,0,3816, + 3817,7,7,0,0,3817,380,1,0,0,0,3818,3819,7,9,0,0,3819,3820,7,20,0, + 0,3820,3821,7,15,0,0,3821,3822,7,5,0,0,3822,3823,7,7,0,0,3823,382, + 1,0,0,0,3824,3825,7,9,0,0,3825,3826,7,15,0,0,3826,3827,7,6,0,0,3827, + 3828,7,20,0,0,3828,384,1,0,0,0,3829,3830,7,9,0,0,3830,3831,7,8,0, + 0,3831,3832,7,15,0,0,3832,3833,7,6,0,0,3833,3834,7,7,0,0,3834,386, + 1,0,0,0,3835,3836,7,26,0,0,3836,3837,7,19,0,0,3837,3838,7,8,0,0, + 3838,388,1,0,0,0,3839,3840,7,13,0,0,3840,3841,7,7,0,0,3841,3842, + 7,8,0,0,3842,3843,7,19,0,0,3843,3844,7,18,0,0,3844,3845,7,15,0,0, + 3845,3846,7,5,0,0,3846,3847,7,5,0,0,3847,390,1,0,0,0,3848,3849,7, + 6,0,0,3849,3850,7,15,0,0,3850,3851,7,12,0,0,3851,3852,7,10,0,0,3852, + 3853,7,15,0,0,3853,3854,7,12,0,0,3854,3855,7,6,0,0,3855,392,1,0, + 0,0,3856,3857,7,11,0,0,3857,3858,7,23,0,0,3858,3859,7,3,0,0,3859, + 3860,7,5,0,0,3860,3861,7,5,0,0,3861,3862,7,15,0,0,3862,3863,7,12, + 0,0,3863,3864,7,6,0,0,3864,394,1,0,0,0,3865,3866,7,23,0,0,3866,3867, + 7,7,0,0,3867,3868,7,4,0,0,3868,3869,7,15,0,0,3869,3870,7,17,0,0, + 3870,3871,7,23,0,0,3871,3872,7,15,0,0,3872,3873,7,12,0,0,3873,3874, + 7,6,0,0,3874,396,1,0,0,0,3875,3876,7,23,0,0,3876,3877,7,15,0,0,3877, + 3878,7,4,0,0,3878,3879,7,4,0,0,3879,3880,7,5,0,0,3880,3881,7,7,0, + 0,3881,3882,7,15,0,0,3882,3883,7,12,0,0,3883,3884,7,6,0,0,3884,398, + 1,0,0,0,3885,3886,7,15,0,0,3886,3887,7,12,0,0,3887,3888,7,6,0,0, + 3888,400,1,0,0,0,3889,3890,7,15,0,0,3890,3891,7,12,0,0,3891,3892, + 7,6,0,0,3892,3893,5,49,0,0,3893,402,1,0,0,0,3894,3895,7,15,0,0,3895, + 3896,7,12,0,0,3896,3897,7,6,0,0,3897,3898,5,50,0,0,3898,404,1,0, + 0,0,3899,3900,7,15,0,0,3900,3901,7,12,0,0,3901,3902,7,6,0,0,3902, + 3903,5,51,0,0,3903,406,1,0,0,0,3904,3905,7,15,0,0,3905,3906,7,12, + 0,0,3906,3907,7,6,0,0,3907,3908,5,52,0,0,3908,408,1,0,0,0,3909,3910, + 7,15,0,0,3910,3911,7,12,0,0,3911,3912,7,6,0,0,3912,3913,5,56,0,0, + 3913,410,1,0,0,0,3914,3915,7,15,0,0,3915,3916,7,12,0,0,3916,3917, + 7,6,0,0,3917,3918,7,7,0,0,3918,3919,7,22,0,0,3919,3920,7,7,0,0,3920, + 3921,7,8,0,0,3921,412,1,0,0,0,3922,3923,7,16,0,0,3923,3924,7,15, + 0,0,3924,3925,7,22,0,0,3925,3926,7,15,0,0,3926,3927,7,12,0,0,3927, + 3928,7,6,0,0,3928,414,1,0,0,0,3929,3930,7,8,0,0,3930,3931,7,7,0, + 0,3931,3932,7,3,0,0,3932,3933,7,5,0,0,3933,416,1,0,0,0,3934,3935, + 7,4,0,0,3935,3936,7,19,0,0,3936,3937,7,17,0,0,3937,3938,7,16,0,0, + 3938,3939,7,5,0,0,3939,3940,7,7,0,0,3940,418,1,0,0,0,3941,3942,7, + 25,0,0,3942,3943,7,8,0,0,3943,3944,7,7,0,0,3944,3945,7,14,0,0,3945, + 3946,7,15,0,0,3946,3947,7,11,0,0,3947,3948,7,15,0,0,3948,3949,7, + 19,0,0,3949,3950,7,12,0,0,3950,420,1,0,0,0,3951,3952,7,18,0,0,3952, + 3953,7,5,0,0,3953,3954,7,19,0,0,3954,3955,7,3,0,0,3955,3956,7,6, + 0,0,3956,422,1,0,0,0,3957,3958,7,18,0,0,3958,3959,7,5,0,0,3959,3960, + 7,19,0,0,3960,3961,7,3,0,0,3961,3962,7,6,0,0,3962,3963,5,52,0,0, + 3963,424,1,0,0,0,3964,3965,7,18,0,0,3965,3966,7,5,0,0,3966,3967, + 7,19,0,0,3967,3968,7,3,0,0,3968,3969,7,6,0,0,3969,3970,5,56,0,0, + 3970,426,1,0,0,0,3971,3972,7,4,0,0,3972,3973,7,7,0,0,3973,3974,7, + 14,0,0,3974,3975,7,15,0,0,3975,3976,7,23,0,0,3976,3977,7,3,0,0,3977, + 3978,7,5,0,0,3978,428,1,0,0,0,3979,3980,7,4,0,0,3980,3981,7,7,0, + 0,3981,3982,7,14,0,0,3982,430,1,0,0,0,3983,3984,7,12,0,0,3984,3985, + 7,17,0,0,3985,3986,7,23,0,0,3986,3987,7,7,0,0,3987,3988,7,8,0,0, + 3988,3989,7,15,0,0,3989,3990,7,14,0,0,3990,432,1,0,0,0,3991,3992, + 7,4,0,0,3992,3993,7,3,0,0,3993,3994,7,6,0,0,3994,3995,7,7,0,0,3995, + 434,1,0,0,0,3996,3997,7,6,0,0,3997,3998,7,15,0,0,3998,3999,7,23, + 0,0,3999,4000,7,7,0,0,4000,436,1,0,0,0,4001,4002,7,6,0,0,4002,4003, + 7,15,0,0,4003,4004,7,23,0,0,4004,4005,7,7,0,0,4005,4006,7,11,0,0, + 4006,4007,7,6,0,0,4007,4008,7,3,0,0,4008,4009,7,23,0,0,4009,4010, + 7,25,0,0,4010,438,1,0,0,0,4011,4012,7,4,0,0,4012,4013,7,3,0,0,4013, + 4014,7,6,0,0,4014,4015,7,7,0,0,4015,4016,7,6,0,0,4016,4017,7,15, + 0,0,4017,4018,7,23,0,0,4018,4019,7,7,0,0,4019,440,1,0,0,0,4020,4021, + 7,10,0,0,4021,4022,7,7,0,0,4022,4023,7,3,0,0,4023,4024,7,8,0,0,4024, + 442,1,0,0,0,4025,4026,7,14,0,0,4026,4027,7,20,0,0,4027,4028,7,3, + 0,0,4028,4029,7,8,0,0,4029,444,1,0,0,0,4030,4031,7,24,0,0,4031,4032, + 7,3,0,0,4032,4033,7,8,0,0,4033,4034,7,14,0,0,4034,4035,7,20,0,0, + 4035,4036,7,3,0,0,4036,4037,7,8,0,0,4037,446,1,0,0,0,4038,4039,7, + 12,0,0,4039,4040,7,24,0,0,4040,4041,7,3,0,0,4041,4042,7,8,0,0,4042, + 4043,7,14,0,0,4043,4044,7,20,0,0,4044,4045,7,3,0,0,4045,4046,7,8, + 0,0,4046,448,1,0,0,0,4047,4048,7,12,0,0,4048,4049,7,3,0,0,4049,4050, + 7,6,0,0,4050,4051,7,15,0,0,4051,4052,7,19,0,0,4052,4053,7,12,0,0, + 4053,4054,7,3,0,0,4054,4055,7,5,0,0,4055,450,1,0,0,0,4056,4057,7, + 16,0,0,4057,4058,7,15,0,0,4058,4059,7,12,0,0,4059,4060,7,3,0,0,4060, + 4061,7,8,0,0,4061,4062,7,10,0,0,4062,452,1,0,0,0,4063,4064,7,24, + 0,0,4064,4065,7,3,0,0,4065,4066,7,8,0,0,4066,4067,7,16,0,0,4067, + 4068,7,15,0,0,4068,4069,7,12,0,0,4069,4070,7,3,0,0,4070,4071,7,8, + 0,0,4071,4072,7,10,0,0,4072,454,1,0,0,0,4073,4074,7,6,0,0,4074,4075, + 7,15,0,0,4075,4076,7,12,0,0,4076,4077,7,10,0,0,4077,4078,7,16,0, + 0,4078,4079,7,5,0,0,4079,4080,7,19,0,0,4080,4081,7,16,0,0,4081,456, + 1,0,0,0,4082,4083,7,16,0,0,4083,4084,7,5,0,0,4084,4085,7,19,0,0, + 4085,4086,7,16,0,0,4086,458,1,0,0,0,4087,4088,7,23,0,0,4088,4089, + 7,7,0,0,4089,4090,7,4,0,0,4090,4091,7,15,0,0,4091,4092,7,17,0,0, + 4092,4093,7,23,0,0,4093,4094,7,16,0,0,4094,4095,7,5,0,0,4095,4096, + 7,19,0,0,4096,4097,7,16,0,0,4097,460,1,0,0,0,4098,4099,7,5,0,0,4099, + 4100,7,19,0,0,4100,4101,7,12,0,0,4101,4102,7,22,0,0,4102,462,1,0, + 0,0,4103,4104,7,5,0,0,4104,4105,7,19,0,0,4105,4106,7,12,0,0,4106, + 4107,7,22,0,0,4107,4108,7,16,0,0,4108,4109,7,5,0,0,4109,4110,7,19, + 0,0,4110,4111,7,16,0,0,4111,464,1,0,0,0,4112,4113,7,6,0,0,4113,4114, + 7,15,0,0,4114,4115,7,12,0,0,4115,4116,7,10,0,0,4116,4117,7,6,0,0, + 4117,4118,7,7,0,0,4118,4119,7,26,0,0,4119,4120,7,6,0,0,4120,466, + 1,0,0,0,4121,4122,7,6,0,0,4122,4123,7,7,0,0,4123,4124,7,26,0,0,4124, + 4125,7,6,0,0,4125,468,1,0,0,0,4126,4127,7,23,0,0,4127,4128,7,7,0, + 0,4128,4129,7,4,0,0,4129,4130,7,15,0,0,4130,4131,7,17,0,0,4131,4132, + 7,23,0,0,4132,4133,7,6,0,0,4133,4134,7,7,0,0,4134,4135,7,26,0,0, + 4135,4136,7,6,0,0,4136,470,1,0,0,0,4137,4138,7,5,0,0,4138,4139,7, + 19,0,0,4139,4140,7,12,0,0,4140,4141,7,22,0,0,4141,4142,7,6,0,0,4142, + 4143,7,7,0,0,4143,4144,7,26,0,0,4144,4145,7,6,0,0,4145,472,1,0,0, + 0,4146,4147,7,7,0,0,4147,4148,7,12,0,0,4148,4149,7,17,0,0,4149,4150, + 7,23,0,0,4150,474,1,0,0,0,4151,4152,7,24,0,0,4152,4153,7,3,0,0,4153, + 4154,7,8,0,0,4154,4155,7,10,0,0,4155,4156,7,15,0,0,4156,4157,7,12, + 0,0,4157,4158,7,22,0,0,4158,476,1,0,0,0,4159,4160,7,11,0,0,4160, + 4161,7,7,0,0,4161,4162,7,8,0,0,4162,4163,7,15,0,0,4163,4164,7,3, + 0,0,4164,4165,7,5,0,0,4165,478,1,0,0,0,4166,4167,7,10,0,0,4167,4168, + 7,7,0,0,4168,4169,7,3,0,0,4169,4170,7,8,0,0,4170,4171,5,95,0,0,4171, + 4172,7,23,0,0,4172,4173,7,19,0,0,4173,4174,7,12,0,0,4174,4175,7, + 6,0,0,4175,4176,7,20,0,0,4176,480,1,0,0,0,4177,4178,7,4,0,0,4178, + 4179,7,3,0,0,4179,4180,7,10,0,0,4180,4181,5,95,0,0,4181,4182,7,20, + 0,0,4182,4183,7,19,0,0,4183,4184,7,17,0,0,4184,4185,7,8,0,0,4185, + 482,1,0,0,0,4186,4187,7,4,0,0,4187,4188,7,3,0,0,4188,4189,7,10,0, + 0,4189,4190,5,95,0,0,4190,4191,7,23,0,0,4191,4192,7,15,0,0,4192, + 4193,7,12,0,0,4193,4194,7,17,0,0,4194,4195,7,6,0,0,4195,4196,7,7, + 0,0,4196,484,1,0,0,0,4197,4198,7,4,0,0,4198,4199,7,3,0,0,4199,4200, + 7,10,0,0,4200,4201,5,95,0,0,4201,4202,7,11,0,0,4202,4203,7,7,0,0, + 4203,4204,7,14,0,0,4204,4205,7,19,0,0,4205,4206,7,12,0,0,4206,4207, + 7,4,0,0,4207,486,1,0,0,0,4208,4209,7,20,0,0,4209,4210,7,19,0,0,4210, + 4211,7,17,0,0,4211,4212,7,8,0,0,4212,4213,5,95,0,0,4213,4214,7,23, + 0,0,4214,4215,7,15,0,0,4215,4216,7,12,0,0,4216,4217,7,17,0,0,4217, + 4218,7,6,0,0,4218,4219,7,7,0,0,4219,488,1,0,0,0,4220,4221,7,20,0, + 0,4221,4222,7,19,0,0,4222,4223,7,17,0,0,4223,4224,7,8,0,0,4224,4225, + 5,95,0,0,4225,4226,7,11,0,0,4226,4227,7,7,0,0,4227,4228,7,14,0,0, + 4228,4229,7,19,0,0,4229,4230,7,12,0,0,4230,4231,7,4,0,0,4231,490, + 1,0,0,0,4232,4233,7,23,0,0,4233,4234,7,15,0,0,4234,4235,7,12,0,0, + 4235,4236,7,17,0,0,4236,4237,7,6,0,0,4237,4238,7,7,0,0,4238,4239, + 5,95,0,0,4239,4240,7,11,0,0,4240,4241,7,7,0,0,4241,4242,7,14,0,0, + 4242,4243,7,19,0,0,4243,4244,7,12,0,0,4244,4245,7,4,0,0,4245,492, + 1,0,0,0,4246,4247,7,11,0,0,4247,4248,7,7,0,0,4248,4249,7,14,0,0, + 4249,4250,7,19,0,0,4250,4251,7,12,0,0,4251,4252,7,4,0,0,4252,4253, + 5,95,0,0,4253,4254,7,23,0,0,4254,4255,7,15,0,0,4255,4256,7,14,0, + 0,4256,4257,7,8,0,0,4257,4258,7,19,0,0,4258,4259,7,11,0,0,4259,4260, + 7,7,0,0,4260,4261,7,14,0,0,4261,4262,7,19,0,0,4262,4263,7,12,0,0, + 4263,4264,7,4,0,0,4264,494,1,0,0,0,4265,4266,7,23,0,0,4266,4267, + 7,15,0,0,4267,4268,7,12,0,0,4268,4269,7,17,0,0,4269,4270,7,6,0,0, + 4270,4271,7,7,0,0,4271,4272,5,95,0,0,4272,4273,7,23,0,0,4273,4274, + 7,15,0,0,4274,4275,7,14,0,0,4275,4276,7,8,0,0,4276,4277,7,19,0,0, + 4277,4278,7,11,0,0,4278,4279,7,7,0,0,4279,4280,7,14,0,0,4280,4281, + 7,19,0,0,4281,4282,7,12,0,0,4282,4283,7,4,0,0,4283,496,1,0,0,0,4284, + 4285,7,20,0,0,4285,4286,7,19,0,0,4286,4287,7,17,0,0,4287,4288,7, + 8,0,0,4288,4289,5,95,0,0,4289,4290,7,23,0,0,4290,4291,7,15,0,0,4291, + 4292,7,14,0,0,4292,4293,7,8,0,0,4293,4294,7,19,0,0,4294,4295,7,11, + 0,0,4295,4296,7,7,0,0,4296,4297,7,14,0,0,4297,4298,7,19,0,0,4298, + 4299,7,12,0,0,4299,4300,7,4,0,0,4300,498,1,0,0,0,4301,4302,7,4,0, + 0,4302,4303,7,3,0,0,4303,4304,7,10,0,0,4304,4305,5,95,0,0,4305,4306, + 7,23,0,0,4306,4307,7,15,0,0,4307,4308,7,14,0,0,4308,4309,7,8,0,0, + 4309,4310,7,19,0,0,4310,4311,7,11,0,0,4311,4312,7,7,0,0,4312,4313, + 7,14,0,0,4313,4314,7,19,0,0,4314,4315,7,12,0,0,4315,4316,7,4,0,0, + 4316,500,1,0,0,0,4317,4318,7,27,0,0,4318,4319,7,11,0,0,4319,4320, + 7,19,0,0,4320,4321,7,12,0,0,4321,4322,5,95,0,0,4322,4323,7,3,0,0, + 4323,4324,7,8,0,0,4324,4325,7,8,0,0,4325,4326,7,3,0,0,4326,4327, + 7,10,0,0,4327,502,1,0,0,0,4328,4329,7,27,0,0,4329,4330,7,11,0,0, + 4330,4331,7,19,0,0,4331,4332,7,12,0,0,4332,4333,5,95,0,0,4333,4334, + 7,3,0,0,4334,4335,7,8,0,0,4335,4336,7,8,0,0,4336,4337,7,3,0,0,4337, + 4338,7,10,0,0,4338,4339,7,3,0,0,4339,4340,7,22,0,0,4340,4341,7,22, + 0,0,4341,504,1,0,0,0,4342,4343,7,27,0,0,4343,4344,7,11,0,0,4344, + 4345,7,19,0,0,4345,4346,7,12,0,0,4346,4347,5,95,0,0,4347,4348,7, + 3,0,0,4348,4349,7,8,0,0,4349,4350,7,8,0,0,4350,4351,7,3,0,0,4351, + 4352,7,10,0,0,4352,4353,5,95,0,0,4353,4354,7,3,0,0,4354,4355,7,25, + 0,0,4355,4356,7,25,0,0,4356,4357,7,7,0,0,4357,4358,7,12,0,0,4358, + 4359,7,4,0,0,4359,506,1,0,0,0,4360,4361,7,27,0,0,4361,4362,7,11, + 0,0,4362,4363,7,19,0,0,4363,4364,7,12,0,0,4364,4365,5,95,0,0,4365, + 4366,7,3,0,0,4366,4367,7,8,0,0,4367,4368,7,8,0,0,4368,4369,7,3,0, + 0,4369,4370,7,10,0,0,4370,4371,5,95,0,0,4371,4372,7,15,0,0,4372, + 4373,7,12,0,0,4373,4374,7,11,0,0,4374,4375,7,7,0,0,4375,4376,7,8, + 0,0,4376,4377,7,6,0,0,4377,508,1,0,0,0,4378,4379,7,27,0,0,4379,4380, + 7,11,0,0,4380,4381,7,19,0,0,4381,4382,7,12,0,0,4382,4383,5,95,0, + 0,4383,4384,7,14,0,0,4384,4385,7,19,0,0,4385,4386,7,12,0,0,4386, + 4387,7,6,0,0,4387,4388,7,3,0,0,4388,4389,7,15,0,0,4389,4390,7,12, + 0,0,4390,4391,7,11,0,0,4391,510,1,0,0,0,4392,4393,7,27,0,0,4393, + 4394,7,11,0,0,4394,4395,7,19,0,0,4395,4396,7,12,0,0,4396,4397,5, + 95,0,0,4397,4398,7,14,0,0,4398,4399,7,19,0,0,4399,4400,7,12,0,0, + 4400,4401,7,6,0,0,4401,4402,7,3,0,0,4402,4403,7,15,0,0,4403,4404, + 7,12,0,0,4404,4405,7,11,0,0,4405,4406,5,95,0,0,4406,4407,7,25,0, + 0,4407,4408,7,3,0,0,4408,4409,7,6,0,0,4409,4410,7,20,0,0,4410,512, + 1,0,0,0,4411,4412,7,27,0,0,4412,4413,7,11,0,0,4413,4414,7,19,0,0, + 4414,4415,7,12,0,0,4415,4416,5,95,0,0,4416,4417,7,4,0,0,4417,4418, + 7,7,0,0,4418,4419,7,25,0,0,4419,4420,7,6,0,0,4420,4421,7,20,0,0, + 4421,514,1,0,0,0,4422,4423,7,27,0,0,4423,4424,7,11,0,0,4424,4425, + 7,19,0,0,4425,4426,7,12,0,0,4426,4427,5,95,0,0,4427,4428,7,7,0,0, + 4428,4429,7,26,0,0,4429,4430,7,6,0,0,4430,4431,7,8,0,0,4431,4432, + 7,3,0,0,4432,4433,7,14,0,0,4433,4434,7,6,0,0,4434,516,1,0,0,0,4435, + 4436,7,27,0,0,4436,4437,7,11,0,0,4437,4438,7,19,0,0,4438,4439,7, + 12,0,0,4439,4440,5,95,0,0,4440,4441,7,15,0,0,4441,4442,7,12,0,0, + 4442,4443,7,11,0,0,4443,4444,7,7,0,0,4444,4445,7,8,0,0,4445,4446, + 7,6,0,0,4446,518,1,0,0,0,4447,4448,7,27,0,0,4448,4449,7,11,0,0,4449, + 4450,7,19,0,0,4450,4451,7,12,0,0,4451,4452,5,95,0,0,4452,4453,7, + 21,0,0,4453,4454,7,7,0,0,4454,4455,7,10,0,0,4455,4456,7,11,0,0,4456, + 520,1,0,0,0,4457,4458,7,27,0,0,4458,4459,7,11,0,0,4459,4460,7,19, + 0,0,4460,4461,7,12,0,0,4461,4462,5,95,0,0,4462,4463,7,5,0,0,4463, + 4464,7,7,0,0,4464,4465,7,12,0,0,4465,4466,7,22,0,0,4466,4467,7,6, + 0,0,4467,4468,7,20,0,0,4468,522,1,0,0,0,4469,4470,7,27,0,0,4470, + 4471,7,11,0,0,4471,4472,7,19,0,0,4472,4473,7,12,0,0,4473,4474,5, + 95,0,0,4474,4475,7,23,0,0,4475,4476,7,7,0,0,4476,4477,7,8,0,0,4477, + 4478,7,22,0,0,4478,4479,7,7,0,0,4479,524,1,0,0,0,4480,4481,7,27, + 0,0,4481,4482,7,11,0,0,4482,4483,7,19,0,0,4483,4484,7,12,0,0,4484, + 4485,5,95,0,0,4485,4486,7,23,0,0,4486,4487,7,7,0,0,4487,4488,7,8, + 0,0,4488,4489,7,22,0,0,4489,4490,7,7,0,0,4490,4491,5,95,0,0,4491, + 4492,7,25,0,0,4492,4493,7,3,0,0,4493,4494,7,6,0,0,4494,4495,7,14, + 0,0,4495,4496,7,20,0,0,4496,526,1,0,0,0,4497,4498,7,27,0,0,4498, + 4499,7,11,0,0,4499,4500,7,19,0,0,4500,4501,7,12,0,0,4501,4502,5, + 95,0,0,4502,4503,7,23,0,0,4503,4504,7,7,0,0,4504,4505,7,8,0,0,4505, + 4506,7,22,0,0,4506,4507,7,7,0,0,4507,4508,5,95,0,0,4508,4509,7,25, + 0,0,4509,4510,7,8,0,0,4510,4511,7,7,0,0,4511,4512,7,11,0,0,4512, + 4513,7,7,0,0,4513,4514,7,8,0,0,4514,4515,7,24,0,0,4515,4516,7,7, + 0,0,4516,528,1,0,0,0,4517,4518,7,27,0,0,4518,4519,7,11,0,0,4519, + 4520,7,19,0,0,4520,4521,7,12,0,0,4521,4522,5,95,0,0,4522,4523,7, + 19,0,0,4523,4524,7,16,0,0,4524,4525,7,27,0,0,4525,4526,7,7,0,0,4526, + 4527,7,14,0,0,4527,4528,7,6,0,0,4528,530,1,0,0,0,4529,4530,7,27, + 0,0,4530,4531,7,11,0,0,4531,4532,7,19,0,0,4532,4533,7,12,0,0,4533, + 4534,5,95,0,0,4534,4535,7,19,0,0,4535,4536,7,16,0,0,4536,4537,7, + 27,0,0,4537,4538,7,7,0,0,4538,4539,7,14,0,0,4539,4540,7,6,0,0,4540, + 4541,7,3,0,0,4541,4542,7,22,0,0,4542,4543,7,22,0,0,4543,532,1,0, + 0,0,4544,4545,7,27,0,0,4545,4546,7,11,0,0,4546,4547,7,19,0,0,4547, + 4548,7,12,0,0,4548,4549,5,95,0,0,4549,4550,7,19,0,0,4550,4551,7, + 24,0,0,4551,4552,7,7,0,0,4552,4553,7,8,0,0,4553,4554,7,5,0,0,4554, + 4555,7,3,0,0,4555,4556,7,25,0,0,4556,4557,7,11,0,0,4557,534,1,0, + 0,0,4558,4559,7,27,0,0,4559,4560,7,11,0,0,4560,4561,7,19,0,0,4561, + 4562,7,12,0,0,4562,4563,5,95,0,0,4563,4564,7,25,0,0,4564,4565,7, + 8,0,0,4565,4566,7,7,0,0,4566,4567,7,6,0,0,4567,4568,7,6,0,0,4568, + 4569,7,10,0,0,4569,536,1,0,0,0,4570,4571,7,27,0,0,4571,4572,7,11, + 0,0,4572,4573,7,19,0,0,4573,4574,7,12,0,0,4574,4575,5,95,0,0,4575, + 4576,7,28,0,0,4576,4577,7,17,0,0,4577,4578,7,19,0,0,4578,4579,7, + 6,0,0,4579,4580,7,7,0,0,4580,538,1,0,0,0,4581,4582,7,27,0,0,4582, + 4583,7,11,0,0,4583,4584,7,19,0,0,4584,4585,7,12,0,0,4585,4586,5, + 95,0,0,4586,4587,7,8,0,0,4587,4588,7,7,0,0,4588,4589,7,23,0,0,4589, + 4590,7,19,0,0,4590,4591,7,24,0,0,4591,4592,7,7,0,0,4592,540,1,0, + 0,0,4593,4594,7,27,0,0,4594,4595,7,11,0,0,4595,4596,7,19,0,0,4596, + 4597,7,12,0,0,4597,4598,5,95,0,0,4598,4599,7,8,0,0,4599,4600,7,7, + 0,0,4600,4601,7,25,0,0,4601,4602,7,5,0,0,4602,4603,7,3,0,0,4603, + 4604,7,14,0,0,4604,4605,7,7,0,0,4605,542,1,0,0,0,4606,4607,7,27, + 0,0,4607,4608,7,11,0,0,4608,4609,7,19,0,0,4609,4610,7,12,0,0,4610, + 4611,5,95,0,0,4611,4612,7,11,0,0,4612,4613,7,14,0,0,4613,4614,7, + 20,0,0,4614,4615,7,7,0,0,4615,4616,7,23,0,0,4616,4617,7,3,0,0,4617, + 4618,5,95,0,0,4618,4619,7,24,0,0,4619,4620,7,3,0,0,4620,4621,7,5, + 0,0,4621,4622,7,15,0,0,4622,4623,7,4,0,0,4623,544,1,0,0,0,4624,4625, + 7,27,0,0,4625,4626,7,11,0,0,4626,4627,7,19,0,0,4627,4628,7,12,0, + 0,4628,4629,5,95,0,0,4629,4630,7,11,0,0,4630,4631,7,14,0,0,4631, + 4632,7,20,0,0,4632,4633,7,7,0,0,4633,4634,7,23,0,0,4634,4635,7,3, + 0,0,4635,4636,5,95,0,0,4636,4637,7,24,0,0,4637,4638,7,3,0,0,4638, + 4639,7,5,0,0,4639,4640,7,15,0,0,4640,4641,7,4,0,0,4641,4642,7,3, + 0,0,4642,4643,7,6,0,0,4643,4644,7,15,0,0,4644,4645,7,19,0,0,4645, + 4646,7,12,0,0,4646,4647,5,95,0,0,4647,4648,7,8,0,0,4648,4649,7,7, + 0,0,4649,4650,7,25,0,0,4650,4651,7,19,0,0,4651,4652,7,8,0,0,4652, + 4653,7,6,0,0,4653,546,1,0,0,0,4654,4655,7,27,0,0,4655,4656,7,11, + 0,0,4656,4657,7,19,0,0,4657,4658,7,12,0,0,4658,4659,5,95,0,0,4659, + 4660,7,11,0,0,4660,4661,7,7,0,0,4661,4662,7,3,0,0,4662,4663,7,8, + 0,0,4663,4664,7,14,0,0,4664,4665,7,20,0,0,4665,548,1,0,0,0,4666, + 4667,7,27,0,0,4667,4668,7,11,0,0,4668,4669,7,19,0,0,4669,4670,7, + 12,0,0,4670,4671,5,95,0,0,4671,4672,7,11,0,0,4672,4673,7,7,0,0,4673, + 4674,7,6,0,0,4674,550,1,0,0,0,4675,4676,7,27,0,0,4676,4677,7,11, + 0,0,4677,4678,7,19,0,0,4678,4679,7,12,0,0,4679,4680,5,95,0,0,4680, + 4681,7,11,0,0,4681,4682,7,6,0,0,4682,4683,7,19,0,0,4683,4684,7,8, + 0,0,4684,4685,7,3,0,0,4685,4686,7,22,0,0,4686,4687,7,7,0,0,4687, + 4688,5,95,0,0,4688,4689,7,18,0,0,4689,4690,7,8,0,0,4690,4691,7,7, + 0,0,4691,4692,7,7,0,0,4692,552,1,0,0,0,4693,4694,7,27,0,0,4694,4695, + 7,11,0,0,4695,4696,7,19,0,0,4696,4697,7,12,0,0,4697,4698,5,95,0, + 0,4698,4699,7,11,0,0,4699,4700,7,6,0,0,4700,4701,7,19,0,0,4701,4702, + 7,8,0,0,4702,4703,7,3,0,0,4703,4704,7,22,0,0,4704,4705,7,7,0,0,4705, + 4706,5,95,0,0,4706,4707,7,11,0,0,4707,4708,7,15,0,0,4708,4709,7, + 13,0,0,4709,4710,7,7,0,0,4710,554,1,0,0,0,4711,4712,7,27,0,0,4712, + 4713,7,11,0,0,4713,4714,7,19,0,0,4714,4715,7,12,0,0,4715,4716,5, + 95,0,0,4716,4717,7,6,0,0,4717,4718,7,3,0,0,4718,4719,7,16,0,0,4719, + 4720,7,5,0,0,4720,4721,7,7,0,0,4721,556,1,0,0,0,4722,4723,7,27,0, + 0,4723,4724,7,11,0,0,4724,4725,7,19,0,0,4725,4726,7,12,0,0,4726, + 4727,5,95,0,0,4727,4728,7,6,0,0,4728,4729,7,10,0,0,4729,4730,7,25, + 0,0,4730,4731,7,7,0,0,4731,558,1,0,0,0,4732,4733,7,27,0,0,4733,4734, + 7,11,0,0,4734,4735,7,19,0,0,4735,4736,7,12,0,0,4736,4737,5,95,0, + 0,4737,4738,7,17,0,0,4738,4739,7,12,0,0,4739,4740,7,28,0,0,4740, + 4741,7,17,0,0,4741,4742,7,19,0,0,4742,4743,7,6,0,0,4743,4744,7,7, + 0,0,4744,560,1,0,0,0,4745,4746,7,27,0,0,4746,4747,7,11,0,0,4747, + 4748,7,19,0,0,4748,4749,7,12,0,0,4749,4750,5,95,0,0,4750,4751,7, + 24,0,0,4751,4752,7,3,0,0,4752,4753,7,5,0,0,4753,4754,7,15,0,0,4754, + 4755,7,4,0,0,4755,562,1,0,0,0,4756,4757,7,27,0,0,4757,4758,7,11, + 0,0,4758,4759,7,19,0,0,4759,4760,7,12,0,0,4760,4761,5,95,0,0,4761, + 4762,7,24,0,0,4762,4763,7,3,0,0,4763,4764,7,5,0,0,4764,4765,7,17, + 0,0,4765,4766,7,7,0,0,4766,564,1,0,0,0,4767,4768,7,12,0,0,4768,4769, + 7,7,0,0,4769,4770,7,11,0,0,4770,4771,7,6,0,0,4771,4772,7,7,0,0,4772, + 4773,7,4,0,0,4773,566,1,0,0,0,4774,4775,7,19,0,0,4775,4776,7,8,0, + 0,4776,4777,7,4,0,0,4777,4778,7,15,0,0,4778,4779,7,12,0,0,4779,4780, + 7,3,0,0,4780,4781,7,5,0,0,4781,4782,7,15,0,0,4782,4783,7,6,0,0,4783, + 4784,7,10,0,0,4784,568,1,0,0,0,4785,4786,7,25,0,0,4786,4787,7,3, + 0,0,4787,4788,7,6,0,0,4788,4789,7,20,0,0,4789,570,1,0,0,0,4790,4791, + 7,3,0,0,4791,4792,7,24,0,0,4792,4793,7,22,0,0,4793,572,1,0,0,0,4794, + 4795,7,16,0,0,4795,4796,7,15,0,0,4796,4797,7,6,0,0,4797,4798,5,95, + 0,0,4798,4799,7,3,0,0,4799,4800,7,12,0,0,4800,4801,7,4,0,0,4801, + 574,1,0,0,0,4802,4803,7,16,0,0,4803,4804,7,15,0,0,4804,4805,7,6, + 0,0,4805,4806,5,95,0,0,4806,4807,7,19,0,0,4807,4808,7,8,0,0,4808, + 576,1,0,0,0,4809,4810,7,16,0,0,4810,4811,7,15,0,0,4811,4812,7,6, + 0,0,4812,4813,5,95,0,0,4813,4814,7,26,0,0,4814,4815,7,19,0,0,4815, + 4816,7,8,0,0,4816,578,1,0,0,0,4817,4818,7,14,0,0,4818,4819,7,19, + 0,0,4819,4820,7,17,0,0,4820,4821,7,12,0,0,4821,4822,7,6,0,0,4822, + 580,1,0,0,0,4823,4824,7,14,0,0,4824,4825,7,17,0,0,4825,4826,7,23, + 0,0,4826,4827,7,7,0,0,4827,4828,5,95,0,0,4828,4829,7,4,0,0,4829, + 4830,7,15,0,0,4830,4831,7,11,0,0,4831,4832,7,6,0,0,4832,582,1,0, + 0,0,4833,4834,7,4,0,0,4834,4835,7,7,0,0,4835,4836,7,12,0,0,4836, + 4837,7,11,0,0,4837,4838,7,7,0,0,4838,4839,5,95,0,0,4839,4840,7,8, + 0,0,4840,4841,7,3,0,0,4841,4842,7,12,0,0,4842,4843,7,21,0,0,4843, + 584,1,0,0,0,4844,4845,7,18,0,0,4845,4846,7,15,0,0,4846,4847,7,8, + 0,0,4847,4848,7,11,0,0,4848,4849,7,6,0,0,4849,4850,5,95,0,0,4850, + 4851,7,24,0,0,4851,4852,7,3,0,0,4852,4853,7,5,0,0,4853,4854,7,17, + 0,0,4854,4855,7,7,0,0,4855,586,1,0,0,0,4856,4857,7,22,0,0,4857,4858, + 7,8,0,0,4858,4859,7,19,0,0,4859,4860,7,17,0,0,4860,4861,7,25,0,0, + 4861,4862,5,95,0,0,4862,4863,7,14,0,0,4863,4864,7,19,0,0,4864,4865, + 7,12,0,0,4865,4866,7,14,0,0,4866,4867,7,3,0,0,4867,4868,7,6,0,0, + 4868,588,1,0,0,0,4869,4870,7,5,0,0,4870,4871,7,3,0,0,4871,4872,7, + 22,0,0,4872,590,1,0,0,0,4873,4874,7,5,0,0,4874,4875,7,3,0,0,4875, + 4876,7,11,0,0,4876,4877,7,6,0,0,4877,4878,5,95,0,0,4878,4879,7,24, + 0,0,4879,4880,7,3,0,0,4880,4881,7,5,0,0,4881,4882,7,17,0,0,4882, + 4883,7,7,0,0,4883,592,1,0,0,0,4884,4885,7,5,0,0,4885,4886,7,7,0, + 0,4886,4887,7,3,0,0,4887,4888,7,4,0,0,4888,594,1,0,0,0,4889,4890, + 7,23,0,0,4890,4891,7,3,0,0,4891,4892,7,26,0,0,4892,596,1,0,0,0,4893, + 4894,7,23,0,0,4894,4895,7,15,0,0,4895,4896,7,12,0,0,4896,598,1,0, + 0,0,4897,4898,7,12,0,0,4898,4899,7,6,0,0,4899,4900,7,15,0,0,4900, + 4901,7,5,0,0,4901,4902,7,7,0,0,4902,600,1,0,0,0,4903,4904,7,12,0, + 0,4904,4905,7,6,0,0,4905,4906,7,20,0,0,4906,4907,5,95,0,0,4907,4908, + 7,24,0,0,4908,4909,7,3,0,0,4909,4910,7,5,0,0,4910,4911,7,17,0,0, + 4911,4912,7,7,0,0,4912,602,1,0,0,0,4913,4914,7,25,0,0,4914,4915, + 7,7,0,0,4915,4916,7,8,0,0,4916,4917,7,14,0,0,4917,4918,7,7,0,0,4918, + 4919,7,12,0,0,4919,4920,7,6,0,0,4920,4921,5,95,0,0,4921,4922,7,8, + 0,0,4922,4923,7,3,0,0,4923,4924,7,12,0,0,4924,4925,7,21,0,0,4925, + 604,1,0,0,0,4926,4927,7,8,0,0,4927,4928,7,3,0,0,4928,4929,7,12,0, + 0,4929,4930,7,21,0,0,4930,606,1,0,0,0,4931,4932,7,8,0,0,4932,4933, + 7,19,0,0,4933,4934,7,9,0,0,4934,4935,5,95,0,0,4935,4936,7,12,0,0, + 4936,4937,7,17,0,0,4937,4938,7,23,0,0,4938,4939,7,16,0,0,4939,4940, + 7,7,0,0,4940,4941,7,8,0,0,4941,608,1,0,0,0,4942,4943,7,11,0,0,4943, + 4944,7,6,0,0,4944,4945,7,4,0,0,4945,610,1,0,0,0,4946,4947,7,11,0, + 0,4947,4948,7,6,0,0,4948,4949,7,4,0,0,4949,4950,7,4,0,0,4950,4951, + 7,7,0,0,4951,4952,7,24,0,0,4952,612,1,0,0,0,4953,4954,7,11,0,0,4954, + 4955,7,6,0,0,4955,4956,7,4,0,0,4956,4957,7,4,0,0,4957,4958,7,7,0, + 0,4958,4959,7,24,0,0,4959,4960,5,95,0,0,4960,4961,7,25,0,0,4961, + 4962,7,19,0,0,4962,4963,7,25,0,0,4963,614,1,0,0,0,4964,4965,7,11, + 0,0,4965,4966,7,6,0,0,4966,4967,7,4,0,0,4967,4968,7,4,0,0,4968,4969, + 7,7,0,0,4969,4970,7,24,0,0,4970,4971,5,95,0,0,4971,4972,7,11,0,0, + 4972,4973,7,3,0,0,4973,4974,7,23,0,0,4974,4975,7,25,0,0,4975,616, + 1,0,0,0,4976,4977,7,11,0,0,4977,4978,7,17,0,0,4978,4979,7,23,0,0, + 4979,618,1,0,0,0,4980,4981,7,24,0,0,4981,4982,7,3,0,0,4982,4983, + 7,8,0,0,4983,4984,5,95,0,0,4984,4985,7,25,0,0,4985,4986,7,19,0,0, + 4986,4987,7,25,0,0,4987,620,1,0,0,0,4988,4989,7,24,0,0,4989,4990, + 7,3,0,0,4990,4991,7,8,0,0,4991,4992,5,95,0,0,4992,4993,7,11,0,0, + 4993,4994,7,3,0,0,4994,4995,7,23,0,0,4995,4996,7,25,0,0,4996,622, + 1,0,0,0,4997,4998,7,24,0,0,4998,4999,7,3,0,0,4999,5000,7,8,0,0,5000, + 5001,7,15,0,0,5001,5002,7,3,0,0,5002,5003,7,12,0,0,5003,5004,7,14, + 0,0,5004,5005,7,7,0,0,5005,624,1,0,0,0,5006,5007,7,14,0,0,5007,5008, + 7,17,0,0,5008,5009,7,8,0,0,5009,5010,7,8,0,0,5010,5011,7,7,0,0,5011, + 5012,7,12,0,0,5012,5013,7,6,0,0,5013,5014,5,95,0,0,5014,5015,7,4, + 0,0,5015,5016,7,3,0,0,5016,5017,7,6,0,0,5017,5018,7,7,0,0,5018,626, + 1,0,0,0,5019,5020,7,14,0,0,5020,5021,7,17,0,0,5021,5022,7,8,0,0, + 5022,5023,7,8,0,0,5023,5024,7,7,0,0,5024,5025,7,12,0,0,5025,5026, + 7,6,0,0,5026,5027,5,95,0,0,5027,5028,7,6,0,0,5028,5029,7,15,0,0, + 5029,5030,7,23,0,0,5030,5031,7,7,0,0,5031,628,1,0,0,0,5032,5033, + 7,14,0,0,5033,5034,7,17,0,0,5034,5035,7,8,0,0,5035,5036,7,8,0,0, + 5036,5037,7,7,0,0,5037,5038,7,12,0,0,5038,5039,7,6,0,0,5039,5040, + 5,95,0,0,5040,5041,7,6,0,0,5041,5042,7,15,0,0,5042,5043,7,23,0,0, + 5043,5044,7,7,0,0,5044,5045,7,11,0,0,5045,5046,7,6,0,0,5046,5047, + 7,3,0,0,5047,5048,7,23,0,0,5048,5049,7,25,0,0,5049,630,1,0,0,0,5050, + 5051,7,5,0,0,5051,5052,7,19,0,0,5052,5053,7,14,0,0,5053,5054,7,3, + 0,0,5054,5055,7,5,0,0,5055,5056,7,6,0,0,5056,5057,7,15,0,0,5057, + 5058,7,23,0,0,5058,5059,7,7,0,0,5059,632,1,0,0,0,5060,5061,7,14, + 0,0,5061,5062,7,17,0,0,5062,5063,7,8,0,0,5063,5064,7,4,0,0,5064, + 5065,7,3,0,0,5065,5066,7,6,0,0,5066,5067,7,7,0,0,5067,634,1,0,0, + 0,5068,5069,7,14,0,0,5069,5070,7,17,0,0,5070,5071,7,8,0,0,5071,5072, + 7,6,0,0,5072,5073,7,15,0,0,5073,5074,7,23,0,0,5074,5075,7,7,0,0, + 5075,636,1,0,0,0,5076,5077,7,4,0,0,5077,5078,7,3,0,0,5078,5079,7, + 6,0,0,5079,5080,7,7,0,0,5080,5081,5,95,0,0,5081,5082,7,3,0,0,5082, + 5083,7,4,0,0,5083,5084,7,4,0,0,5084,638,1,0,0,0,5085,5086,7,4,0, + 0,5086,5087,7,3,0,0,5087,5088,7,6,0,0,5088,5089,7,7,0,0,5089,5090, + 5,95,0,0,5090,5091,7,11,0,0,5091,5092,7,17,0,0,5092,5093,7,16,0, + 0,5093,640,1,0,0,0,5094,5095,7,7,0,0,5095,5096,7,26,0,0,5096,5097, + 7,6,0,0,5097,5098,7,8,0,0,5098,5099,7,3,0,0,5099,5100,7,14,0,0,5100, + 5101,7,6,0,0,5101,642,1,0,0,0,5102,5103,7,5,0,0,5103,5104,7,19,0, + 0,5104,5105,7,14,0,0,5105,5106,7,3,0,0,5106,5107,7,5,0,0,5107,5108, + 7,6,0,0,5108,5109,7,15,0,0,5109,5110,7,23,0,0,5110,5111,7,7,0,0, + 5111,5112,7,11,0,0,5112,5113,7,6,0,0,5113,5114,7,3,0,0,5114,5115, + 7,23,0,0,5115,5116,7,25,0,0,5116,644,1,0,0,0,5117,5118,7,12,0,0, + 5118,5119,7,19,0,0,5119,5120,7,9,0,0,5120,646,1,0,0,0,5121,5122, + 7,25,0,0,5122,5123,7,19,0,0,5123,5124,7,11,0,0,5124,5125,7,15,0, + 0,5125,5126,7,6,0,0,5126,5127,7,15,0,0,5127,5128,7,19,0,0,5128,5129, + 7,12,0,0,5129,648,1,0,0,0,5130,5131,7,11,0,0,5131,5132,7,17,0,0, + 5132,5133,7,16,0,0,5133,5134,7,11,0,0,5134,5135,7,6,0,0,5135,5136, + 7,8,0,0,5136,650,1,0,0,0,5137,5138,7,11,0,0,5138,5139,7,17,0,0,5139, + 5140,7,16,0,0,5140,5141,7,11,0,0,5141,5142,7,6,0,0,5142,5143,7,8, + 0,0,5143,5144,7,15,0,0,5144,5145,7,12,0,0,5145,5146,7,22,0,0,5146, + 652,1,0,0,0,5147,5148,7,11,0,0,5148,5149,7,10,0,0,5149,5150,7,11, + 0,0,5150,5151,7,4,0,0,5151,5152,7,3,0,0,5152,5153,7,6,0,0,5153,5154, + 7,7,0,0,5154,654,1,0,0,0,5155,5156,7,6,0,0,5156,5157,7,8,0,0,5157, + 5158,7,15,0,0,5158,5159,7,23,0,0,5159,656,1,0,0,0,5160,5161,7,17, + 0,0,5161,5162,7,6,0,0,5162,5163,7,14,0,0,5163,5164,5,95,0,0,5164, + 5165,7,4,0,0,5165,5166,7,3,0,0,5166,5167,7,6,0,0,5167,5168,7,7,0, + 0,5168,658,1,0,0,0,5169,5170,7,17,0,0,5170,5171,7,6,0,0,5171,5172, + 7,14,0,0,5172,5173,5,95,0,0,5173,5174,7,6,0,0,5174,5175,7,15,0,0, + 5175,5176,7,23,0,0,5176,5177,7,7,0,0,5177,660,1,0,0,0,5178,5179, + 7,17,0,0,5179,5180,7,6,0,0,5180,5181,7,14,0,0,5181,5182,5,95,0,0, + 5182,5183,7,6,0,0,5183,5184,7,15,0,0,5184,5185,7,23,0,0,5185,5186, + 7,7,0,0,5186,5187,7,11,0,0,5187,5188,7,6,0,0,5188,5189,7,3,0,0,5189, + 5190,7,23,0,0,5190,5191,7,25,0,0,5191,662,1,0,0,0,5192,5193,7,3, + 0,0,5193,5194,7,14,0,0,5194,5195,7,14,0,0,5195,5196,7,19,0,0,5196, + 5197,7,17,0,0,5197,5198,7,12,0,0,5198,5199,7,6,0,0,5199,664,1,0, + 0,0,5200,5201,7,3,0,0,5201,5202,7,14,0,0,5202,5203,7,6,0,0,5203, + 5204,7,15,0,0,5204,5205,7,19,0,0,5205,5206,7,12,0,0,5206,666,1,0, + 0,0,5207,5208,7,3,0,0,5208,5209,7,18,0,0,5209,5210,7,6,0,0,5210, + 5211,7,7,0,0,5211,5212,7,8,0,0,5212,668,1,0,0,0,5213,5214,7,3,0, + 0,5214,5215,7,22,0,0,5215,5216,7,22,0,0,5216,5217,7,8,0,0,5217,5218, + 7,7,0,0,5218,5219,7,22,0,0,5219,5220,7,3,0,0,5220,5221,7,6,0,0,5221, + 5222,7,7,0,0,5222,670,1,0,0,0,5223,5224,7,3,0,0,5224,5225,7,5,0, + 0,5225,5226,7,22,0,0,5226,5227,7,19,0,0,5227,5228,7,8,0,0,5228,5229, + 7,15,0,0,5229,5230,7,6,0,0,5230,5231,7,20,0,0,5231,5232,7,23,0,0, + 5232,672,1,0,0,0,5233,5234,7,3,0,0,5234,5235,7,12,0,0,5235,5236, + 7,10,0,0,5236,674,1,0,0,0,5237,5238,7,3,0,0,5238,5239,7,6,0,0,5239, + 676,1,0,0,0,5240,5241,7,3,0,0,5241,5242,7,17,0,0,5242,5243,7,6,0, + 0,5243,5244,7,20,0,0,5244,5245,7,19,0,0,5245,5246,7,8,0,0,5246,5247, + 7,11,0,0,5247,678,1,0,0,0,5248,5249,7,3,0,0,5249,5250,7,17,0,0,5250, + 5251,7,6,0,0,5251,5252,7,19,0,0,5252,5253,7,14,0,0,5253,5254,7,19, + 0,0,5254,5255,7,23,0,0,5255,5256,7,23,0,0,5256,5257,7,15,0,0,5257, + 5258,7,6,0,0,5258,680,1,0,0,0,5259,5260,7,3,0,0,5260,5261,7,17,0, + 0,5261,5262,7,6,0,0,5262,5263,7,19,0,0,5263,5264,7,7,0,0,5264,5265, + 7,26,0,0,5265,5266,7,6,0,0,5266,5267,7,7,0,0,5267,5268,7,12,0,0, + 5268,5269,7,4,0,0,5269,5270,5,95,0,0,5270,5271,7,11,0,0,5271,5272, + 7,15,0,0,5272,5273,7,13,0,0,5273,5274,7,7,0,0,5274,682,1,0,0,0,5275, + 5276,7,3,0,0,5276,5277,7,17,0,0,5277,5278,7,6,0,0,5278,5279,7,19, + 0,0,5279,5280,5,95,0,0,5280,5281,7,15,0,0,5281,5282,7,12,0,0,5282, + 5283,7,14,0,0,5283,5284,7,8,0,0,5284,5285,7,7,0,0,5285,5286,7,23, + 0,0,5286,5287,7,7,0,0,5287,5288,7,12,0,0,5288,5289,7,6,0,0,5289, + 684,1,0,0,0,5290,5291,7,3,0,0,5291,5292,7,24,0,0,5292,5293,7,22, + 0,0,5293,5294,5,95,0,0,5294,5295,7,8,0,0,5295,5296,7,19,0,0,5296, + 5297,7,9,0,0,5297,5298,5,95,0,0,5298,5299,7,5,0,0,5299,5300,7,7, + 0,0,5300,5301,7,12,0,0,5301,5302,7,22,0,0,5302,5303,7,6,0,0,5303, + 5304,7,20,0,0,5304,686,1,0,0,0,5305,5306,7,16,0,0,5306,5307,7,7, + 0,0,5307,5308,7,22,0,0,5308,5309,7,15,0,0,5309,5310,7,12,0,0,5310, + 688,1,0,0,0,5311,5312,7,16,0,0,5312,5313,7,15,0,0,5313,5314,7,12, + 0,0,5314,5315,7,5,0,0,5315,5316,7,19,0,0,5316,5317,7,22,0,0,5317, + 690,1,0,0,0,5318,5319,7,16,0,0,5319,5320,7,15,0,0,5320,5321,7,6, + 0,0,5321,692,1,0,0,0,5322,5323,7,16,0,0,5323,5324,7,5,0,0,5324,5325, + 7,19,0,0,5325,5326,7,14,0,0,5326,5327,7,21,0,0,5327,694,1,0,0,0, + 5328,5329,7,16,0,0,5329,5330,7,19,0,0,5330,5331,7,19,0,0,5331,5332, + 7,5,0,0,5332,696,1,0,0,0,5333,5334,7,16,0,0,5334,5335,7,19,0,0,5335, + 5336,7,19,0,0,5336,5337,7,5,0,0,5337,5338,7,7,0,0,5338,5339,7,3, + 0,0,5339,5340,7,12,0,0,5340,698,1,0,0,0,5341,5342,7,16,0,0,5342, + 5343,7,6,0,0,5343,5344,7,8,0,0,5344,5345,7,7,0,0,5345,5346,7,7,0, + 0,5346,700,1,0,0,0,5347,5348,7,14,0,0,5348,5349,7,3,0,0,5349,5350, + 7,14,0,0,5350,5351,7,20,0,0,5351,5352,7,7,0,0,5352,702,1,0,0,0,5353, + 5354,7,14,0,0,5354,5355,7,3,0,0,5355,5356,7,11,0,0,5356,5357,7,14, + 0,0,5357,5358,7,3,0,0,5358,5359,7,4,0,0,5359,5360,7,7,0,0,5360,5361, + 7,4,0,0,5361,704,1,0,0,0,5362,5363,7,14,0,0,5363,5364,7,20,0,0,5364, + 5365,7,3,0,0,5365,5366,7,15,0,0,5366,5367,7,12,0,0,5367,706,1,0, + 0,0,5368,5369,7,14,0,0,5369,5370,7,20,0,0,5370,5371,7,3,0,0,5371, + 5372,7,12,0,0,5372,5373,7,22,0,0,5373,5374,7,7,0,0,5374,5375,7,4, + 0,0,5375,708,1,0,0,0,5376,5377,7,14,0,0,5377,5378,7,20,0,0,5378, + 5379,7,3,0,0,5379,5380,7,12,0,0,5380,5381,7,12,0,0,5381,5382,7,7, + 0,0,5382,5383,7,5,0,0,5383,710,1,0,0,0,5384,5385,7,14,0,0,5385,5386, + 7,20,0,0,5386,5387,7,7,0,0,5387,5388,7,14,0,0,5388,5389,7,21,0,0, + 5389,5390,7,11,0,0,5390,5391,7,17,0,0,5391,5392,7,23,0,0,5392,712, + 1,0,0,0,5393,5394,7,25,0,0,5394,5395,7,3,0,0,5395,5396,7,22,0,0, + 5396,5397,7,7,0,0,5397,5398,5,95,0,0,5398,5399,7,14,0,0,5399,5400, + 7,20,0,0,5400,5401,7,7,0,0,5401,5402,7,14,0,0,5402,5403,7,21,0,0, + 5403,5404,7,11,0,0,5404,5405,7,17,0,0,5405,5406,7,23,0,0,5406,714, + 1,0,0,0,5407,5408,7,14,0,0,5408,5409,7,15,0,0,5409,5410,7,25,0,0, + 5410,5411,7,20,0,0,5411,5412,7,7,0,0,5412,5413,7,8,0,0,5413,716, + 1,0,0,0,5414,5415,7,14,0,0,5415,5416,7,5,0,0,5416,5417,7,3,0,0,5417, + 5418,7,11,0,0,5418,5419,7,11,0,0,5419,5420,5,95,0,0,5420,5421,7, + 19,0,0,5421,5422,7,8,0,0,5422,5423,7,15,0,0,5423,5424,7,22,0,0,5424, + 5425,7,15,0,0,5425,5426,7,12,0,0,5426,718,1,0,0,0,5427,5428,7,14, + 0,0,5428,5429,7,5,0,0,5429,5430,7,15,0,0,5430,5431,7,7,0,0,5431, + 5432,7,12,0,0,5432,5433,7,6,0,0,5433,720,1,0,0,0,5434,5435,7,14, + 0,0,5435,5436,7,5,0,0,5436,5437,7,19,0,0,5437,5438,7,11,0,0,5438, + 5439,7,7,0,0,5439,722,1,0,0,0,5440,5441,7,14,0,0,5441,5442,7,5,0, + 0,5442,5443,7,17,0,0,5443,5444,7,11,0,0,5444,5445,7,6,0,0,5445,5446, + 7,7,0,0,5446,5447,7,8,0,0,5447,5448,7,15,0,0,5448,5449,7,12,0,0, + 5449,5450,7,22,0,0,5450,724,1,0,0,0,5451,5452,7,14,0,0,5452,5453, + 7,19,0,0,5453,5454,7,3,0,0,5454,5455,7,5,0,0,5455,5456,7,7,0,0,5456, + 5457,7,11,0,0,5457,5458,7,14,0,0,5458,5459,7,7,0,0,5459,726,1,0, + 0,0,5460,5461,7,14,0,0,5461,5462,7,19,0,0,5462,5463,7,4,0,0,5463, + 5464,7,7,0,0,5464,728,1,0,0,0,5465,5466,7,14,0,0,5466,5467,7,19, + 0,0,5467,5468,7,5,0,0,5468,5469,7,17,0,0,5469,5470,7,23,0,0,5470, + 5471,7,12,0,0,5471,5472,7,11,0,0,5472,730,1,0,0,0,5473,5474,7,14, + 0,0,5474,5475,7,19,0,0,5475,5476,7,5,0,0,5476,5477,7,17,0,0,5477, + 5478,7,23,0,0,5478,5479,7,12,0,0,5479,5480,5,95,0,0,5480,5481,7, + 18,0,0,5481,5482,7,19,0,0,5482,5483,7,8,0,0,5483,5484,7,23,0,0,5484, + 5485,7,3,0,0,5485,5486,7,6,0,0,5486,732,1,0,0,0,5487,5488,7,14,0, + 0,5488,5489,7,19,0,0,5489,5490,7,5,0,0,5490,5491,7,17,0,0,5491,5492, + 7,23,0,0,5492,5493,7,12,0,0,5493,5494,5,95,0,0,5494,5495,7,12,0, + 0,5495,5496,7,3,0,0,5496,5497,7,23,0,0,5497,5498,7,7,0,0,5498,734, + 1,0,0,0,5499,5500,7,14,0,0,5500,5501,7,19,0,0,5501,5502,7,23,0,0, + 5502,5503,7,23,0,0,5503,5504,7,7,0,0,5504,5505,7,12,0,0,5505,5506, + 7,6,0,0,5506,736,1,0,0,0,5507,5508,7,14,0,0,5508,5509,7,19,0,0,5509, + 5510,7,23,0,0,5510,5511,7,23,0,0,5511,5512,7,15,0,0,5512,5513,7, + 6,0,0,5513,738,1,0,0,0,5514,5515,7,14,0,0,5515,5516,7,19,0,0,5516, + 5517,7,23,0,0,5517,5518,7,25,0,0,5518,5519,7,3,0,0,5519,5520,7,14, + 0,0,5520,5521,7,6,0,0,5521,740,1,0,0,0,5522,5523,7,14,0,0,5523,5524, + 7,19,0,0,5524,5525,7,23,0,0,5525,5526,7,25,0,0,5526,5527,7,5,0,0, + 5527,5528,7,7,0,0,5528,5529,7,6,0,0,5529,5530,7,15,0,0,5530,5531, + 7,19,0,0,5531,5532,7,12,0,0,5532,742,1,0,0,0,5533,5534,7,14,0,0, + 5534,5535,7,19,0,0,5535,5536,7,23,0,0,5536,5537,7,25,0,0,5537,5538, + 7,8,0,0,5538,5539,7,7,0,0,5539,5540,7,11,0,0,5540,5541,7,11,0,0, + 5541,5542,7,7,0,0,5542,5543,7,4,0,0,5543,744,1,0,0,0,5544,5545,7, + 14,0,0,5545,5546,7,19,0,0,5546,5547,7,23,0,0,5547,5548,7,25,0,0, + 5548,5549,7,8,0,0,5549,5550,7,7,0,0,5550,5551,7,11,0,0,5551,5552, + 7,11,0,0,5552,5553,7,15,0,0,5553,5554,7,19,0,0,5554,5574,7,12,0, + 0,5555,5557,3,2289,1144,0,5556,5555,1,0,0,0,5556,5557,1,0,0,0,5557, + 5558,1,0,0,0,5558,5559,7,14,0,0,5559,5560,7,19,0,0,5560,5561,7,23, + 0,0,5561,5562,7,25,0,0,5562,5563,7,8,0,0,5563,5564,7,7,0,0,5564, + 5565,7,11,0,0,5565,5566,7,11,0,0,5566,5567,7,15,0,0,5567,5568,7, + 19,0,0,5568,5569,7,12,0,0,5569,5571,1,0,0,0,5570,5572,3,2289,1144, + 0,5571,5570,1,0,0,0,5571,5572,1,0,0,0,5572,5574,1,0,0,0,5573,5544, + 1,0,0,0,5573,5556,1,0,0,0,5574,746,1,0,0,0,5575,5576,7,14,0,0,5576, + 5577,7,19,0,0,5577,5578,7,12,0,0,5578,5579,7,14,0,0,5579,5580,7, + 17,0,0,5580,5581,7,8,0,0,5581,5582,7,8,0,0,5582,5583,7,7,0,0,5583, + 5584,7,12,0,0,5584,5585,7,6,0,0,5585,748,1,0,0,0,5586,5587,7,14, + 0,0,5587,5588,7,19,0,0,5588,5589,7,12,0,0,5589,5590,7,12,0,0,5590, + 5591,7,7,0,0,5591,5592,7,14,0,0,5592,5593,7,6,0,0,5593,750,1,0,0, + 0,5594,5595,7,14,0,0,5595,5596,7,19,0,0,5596,5597,7,12,0,0,5597, + 5598,7,12,0,0,5598,5599,7,7,0,0,5599,5600,7,14,0,0,5600,5601,7,6, + 0,0,5601,5602,7,15,0,0,5602,5603,7,19,0,0,5603,5604,7,12,0,0,5604, + 752,1,0,0,0,5605,5606,7,14,0,0,5606,5607,7,19,0,0,5607,5608,7,12, + 0,0,5608,5609,7,11,0,0,5609,5610,7,15,0,0,5610,5611,7,11,0,0,5611, + 5612,7,6,0,0,5612,5613,7,7,0,0,5613,5614,7,12,0,0,5614,5615,7,6, + 0,0,5615,754,1,0,0,0,5616,5617,7,14,0,0,5617,5618,7,19,0,0,5618, + 5619,7,12,0,0,5619,5620,7,11,0,0,5620,5621,7,6,0,0,5621,5622,7,8, + 0,0,5622,5623,7,3,0,0,5623,5624,7,15,0,0,5624,5625,7,12,0,0,5625, + 5626,7,6,0,0,5626,5627,5,95,0,0,5627,5628,7,14,0,0,5628,5629,7,3, + 0,0,5629,5630,7,6,0,0,5630,5631,7,3,0,0,5631,5632,7,5,0,0,5632,5633, + 7,19,0,0,5633,5634,7,22,0,0,5634,756,1,0,0,0,5635,5636,7,14,0,0, + 5636,5637,7,19,0,0,5637,5638,7,12,0,0,5638,5639,7,11,0,0,5639,5640, + 7,6,0,0,5640,5641,7,8,0,0,5641,5642,7,3,0,0,5642,5643,7,15,0,0,5643, + 5644,7,12,0,0,5644,5645,7,6,0,0,5645,5646,5,95,0,0,5646,5647,7,11, + 0,0,5647,5648,7,14,0,0,5648,5649,7,20,0,0,5649,5650,7,7,0,0,5650, + 5651,7,23,0,0,5651,5652,7,3,0,0,5652,758,1,0,0,0,5653,5654,7,14, + 0,0,5654,5655,7,19,0,0,5655,5656,7,12,0,0,5656,5657,7,11,0,0,5657, + 5658,7,6,0,0,5658,5659,7,8,0,0,5659,5660,7,3,0,0,5660,5661,7,15, + 0,0,5661,5662,7,12,0,0,5662,5663,7,6,0,0,5663,5664,5,95,0,0,5664, + 5665,7,12,0,0,5665,5666,7,3,0,0,5666,5667,7,23,0,0,5667,5668,7,7, + 0,0,5668,760,1,0,0,0,5669,5670,7,14,0,0,5670,5671,7,19,0,0,5671, + 5672,7,12,0,0,5672,5673,7,6,0,0,5673,5674,7,3,0,0,5674,5675,7,15, + 0,0,5675,5676,7,12,0,0,5676,5677,7,11,0,0,5677,762,1,0,0,0,5678, + 5679,7,14,0,0,5679,5680,7,19,0,0,5680,5681,7,12,0,0,5681,5682,7, + 6,0,0,5682,5683,7,7,0,0,5683,5684,7,26,0,0,5684,5685,7,6,0,0,5685, + 764,1,0,0,0,5686,5687,7,14,0,0,5687,5688,7,19,0,0,5688,5689,7,12, + 0,0,5689,5690,7,6,0,0,5690,5691,7,8,0,0,5691,5692,7,15,0,0,5692, + 5693,7,16,0,0,5693,5694,7,17,0,0,5694,5695,7,6,0,0,5695,5696,7,19, + 0,0,5696,5697,7,8,0,0,5697,5698,7,11,0,0,5698,766,1,0,0,0,5699,5700, + 7,14,0,0,5700,5701,7,19,0,0,5701,5702,7,25,0,0,5702,5703,7,10,0, + 0,5703,768,1,0,0,0,5704,5705,7,14,0,0,5705,5706,7,25,0,0,5706,5707, + 7,17,0,0,5707,770,1,0,0,0,5708,5709,7,14,0,0,5709,5710,7,10,0,0, + 5710,5711,7,14,0,0,5711,5712,7,5,0,0,5712,5713,7,7,0,0,5713,772, + 1,0,0,0,5714,5715,7,14,0,0,5715,5716,7,17,0,0,5716,5717,7,8,0,0, + 5717,5718,7,11,0,0,5718,5719,7,19,0,0,5719,5720,7,8,0,0,5720,5721, + 5,95,0,0,5721,5722,7,12,0,0,5722,5723,7,3,0,0,5723,5724,7,23,0,0, + 5724,5725,7,7,0,0,5725,774,1,0,0,0,5726,5727,7,4,0,0,5727,5728,7, + 3,0,0,5728,5729,7,6,0,0,5729,5730,7,3,0,0,5730,776,1,0,0,0,5731, + 5732,7,4,0,0,5732,5733,7,3,0,0,5733,5734,7,6,0,0,5734,5735,7,3,0, + 0,5735,5736,7,18,0,0,5736,5737,7,15,0,0,5737,5738,7,5,0,0,5738,5739, + 7,7,0,0,5739,778,1,0,0,0,5740,5741,7,4,0,0,5741,5742,7,7,0,0,5742, + 5743,7,3,0,0,5743,5744,7,5,0,0,5744,5745,7,5,0,0,5745,5746,7,19, + 0,0,5746,5747,7,14,0,0,5747,5748,7,3,0,0,5748,5749,7,6,0,0,5749, + 5750,7,7,0,0,5750,780,1,0,0,0,5751,5752,7,4,0,0,5752,5753,7,7,0, + 0,5753,5754,7,18,0,0,5754,5755,7,3,0,0,5755,5756,7,17,0,0,5756,5757, + 7,5,0,0,5757,5758,7,6,0,0,5758,5759,5,95,0,0,5759,5760,7,3,0,0,5760, + 5761,7,17,0,0,5761,5762,7,6,0,0,5762,5763,7,20,0,0,5763,782,1,0, + 0,0,5764,5765,7,4,0,0,5765,5766,7,7,0,0,5766,5767,7,18,0,0,5767, + 5768,7,15,0,0,5768,5769,7,12,0,0,5769,5770,7,7,0,0,5770,5771,7,8, + 0,0,5771,784,1,0,0,0,5772,5773,7,4,0,0,5773,5774,7,7,0,0,5774,5775, + 7,5,0,0,5775,5776,7,3,0,0,5776,5777,7,10,0,0,5777,5778,5,95,0,0, + 5778,5779,7,21,0,0,5779,5780,7,7,0,0,5780,5781,7,10,0,0,5781,5782, + 5,95,0,0,5782,5783,7,9,0,0,5783,5784,7,8,0,0,5784,5785,7,15,0,0, + 5785,5786,7,6,0,0,5786,5787,7,7,0,0,5787,786,1,0,0,0,5788,5789,7, + 4,0,0,5789,5790,7,7,0,0,5790,5791,7,11,0,0,5791,5792,5,95,0,0,5792, + 5793,7,21,0,0,5793,5794,7,7,0,0,5794,5795,7,10,0,0,5795,5796,5,95, + 0,0,5796,5797,7,18,0,0,5797,5798,7,15,0,0,5798,5799,7,5,0,0,5799, + 5800,7,7,0,0,5800,788,1,0,0,0,5801,5802,7,4,0,0,5802,5803,7,15,0, + 0,5803,5804,7,8,0,0,5804,5805,7,7,0,0,5805,5806,7,14,0,0,5806,5807, + 7,6,0,0,5807,5808,7,19,0,0,5808,5809,7,8,0,0,5809,5810,7,10,0,0, + 5810,790,1,0,0,0,5811,5812,7,4,0,0,5812,5813,7,15,0,0,5813,5814, + 7,11,0,0,5814,5815,7,3,0,0,5815,5816,7,16,0,0,5816,5817,7,5,0,0, + 5817,5818,7,7,0,0,5818,792,1,0,0,0,5819,5820,7,4,0,0,5820,5821,7, + 15,0,0,5821,5822,7,11,0,0,5822,5823,7,14,0,0,5823,5824,7,3,0,0,5824, + 5825,7,8,0,0,5825,5826,7,4,0,0,5826,794,1,0,0,0,5827,5828,7,4,0, + 0,5828,5829,7,15,0,0,5829,5830,7,11,0,0,5830,5831,7,21,0,0,5831, + 796,1,0,0,0,5832,5833,7,4,0,0,5833,5834,7,19,0,0,5834,798,1,0,0, + 0,5835,5836,7,4,0,0,5836,5837,7,17,0,0,5837,5838,7,23,0,0,5838,5839, + 7,25,0,0,5839,5840,7,18,0,0,5840,5841,7,15,0,0,5841,5842,7,5,0,0, + 5842,5843,7,7,0,0,5843,800,1,0,0,0,5844,5845,7,4,0,0,5845,5846,7, + 17,0,0,5846,5847,7,25,0,0,5847,5848,7,5,0,0,5848,5849,7,15,0,0,5849, + 5850,7,14,0,0,5850,5851,7,3,0,0,5851,5852,7,6,0,0,5852,5853,7,7, + 0,0,5853,802,1,0,0,0,5854,5855,7,4,0,0,5855,5856,7,10,0,0,5856,5857, + 7,12,0,0,5857,5858,7,3,0,0,5858,5859,7,23,0,0,5859,5860,7,15,0,0, + 5860,5861,7,14,0,0,5861,804,1,0,0,0,5862,5863,7,7,0,0,5863,5864, + 7,12,0,0,5864,5865,7,3,0,0,5865,5866,7,16,0,0,5866,5867,7,5,0,0, + 5867,5868,7,7,0,0,5868,806,1,0,0,0,5869,5870,7,7,0,0,5870,5871,7, + 12,0,0,5871,5872,7,14,0,0,5872,5873,7,8,0,0,5873,5874,7,10,0,0,5874, + 5875,7,25,0,0,5875,5876,7,6,0,0,5876,5877,7,7,0,0,5877,5878,7,4, + 0,0,5878,808,1,0,0,0,5879,5880,7,7,0,0,5880,5881,7,12,0,0,5881,5882, + 7,14,0,0,5882,5883,7,8,0,0,5883,5884,7,10,0,0,5884,5885,7,25,0,0, + 5885,5886,7,6,0,0,5886,5887,7,15,0,0,5887,5888,7,19,0,0,5888,5889, + 7,12,0,0,5889,810,1,0,0,0,5890,5891,7,7,0,0,5891,5892,7,12,0,0,5892, + 5893,7,14,0,0,5893,5894,7,8,0,0,5894,5895,7,10,0,0,5895,5896,7,25, + 0,0,5896,5897,7,6,0,0,5897,5898,7,15,0,0,5898,5899,7,19,0,0,5899, + 5900,7,12,0,0,5900,5901,5,95,0,0,5901,5902,7,21,0,0,5902,5903,7, + 7,0,0,5903,5904,7,10,0,0,5904,5905,5,95,0,0,5905,5906,7,15,0,0,5906, + 5907,7,4,0,0,5907,812,1,0,0,0,5908,5909,7,7,0,0,5909,5910,7,12,0, + 0,5910,5911,7,4,0,0,5911,814,1,0,0,0,5912,5913,7,7,0,0,5913,5914, + 7,12,0,0,5914,5915,7,4,0,0,5915,5916,7,11,0,0,5916,816,1,0,0,0,5917, + 5918,7,7,0,0,5918,5919,7,12,0,0,5919,5920,7,22,0,0,5920,5921,7,15, + 0,0,5921,5922,7,12,0,0,5922,5923,7,7,0,0,5923,818,1,0,0,0,5924,5925, + 7,7,0,0,5925,5926,7,12,0,0,5926,5927,7,22,0,0,5927,5928,7,15,0,0, + 5928,5929,7,12,0,0,5929,5930,7,7,0,0,5930,5931,7,11,0,0,5931,820, + 1,0,0,0,5932,5933,7,7,0,0,5933,5934,7,8,0,0,5934,5935,7,8,0,0,5935, + 5936,7,19,0,0,5936,5937,7,8,0,0,5937,822,1,0,0,0,5938,5939,7,7,0, + 0,5939,5940,7,8,0,0,5940,5941,7,8,0,0,5941,5942,7,19,0,0,5942,5943, + 7,8,0,0,5943,5944,7,11,0,0,5944,824,1,0,0,0,5945,5946,7,7,0,0,5946, + 5947,7,11,0,0,5947,5948,7,14,0,0,5948,5949,7,3,0,0,5949,5950,7,25, + 0,0,5950,5951,7,7,0,0,5951,826,1,0,0,0,5952,5953,7,7,0,0,5953,5954, + 7,24,0,0,5954,5955,7,7,0,0,5955,5956,7,12,0,0,5956,828,1,0,0,0,5957, + 5958,7,7,0,0,5958,5959,7,24,0,0,5959,5960,7,7,0,0,5960,5961,7,12, + 0,0,5961,5962,7,6,0,0,5962,830,1,0,0,0,5963,5964,7,7,0,0,5964,5965, + 7,24,0,0,5965,5966,7,7,0,0,5966,5967,7,12,0,0,5967,5968,7,6,0,0, + 5968,5969,7,11,0,0,5969,832,1,0,0,0,5970,5971,7,7,0,0,5971,5972, + 7,24,0,0,5972,5973,7,7,0,0,5973,5974,7,8,0,0,5974,5975,7,10,0,0, + 5975,834,1,0,0,0,5976,5977,7,7,0,0,5977,5978,7,26,0,0,5978,5979, + 7,14,0,0,5979,5980,7,20,0,0,5980,5981,7,3,0,0,5981,5982,7,12,0,0, + 5982,5983,7,22,0,0,5983,5984,7,7,0,0,5984,836,1,0,0,0,5985,5986, + 7,7,0,0,5986,5987,7,26,0,0,5987,5988,7,14,0,0,5988,5989,7,5,0,0, + 5989,5990,7,17,0,0,5990,5991,7,11,0,0,5991,5992,7,15,0,0,5992,5993, + 7,24,0,0,5993,5994,7,7,0,0,5994,838,1,0,0,0,5995,5996,7,7,0,0,5996, + 5997,7,26,0,0,5997,5998,7,25,0,0,5998,5999,7,15,0,0,5999,6000,7, + 8,0,0,6000,6001,7,7,0,0,6001,840,1,0,0,0,6002,6003,7,7,0,0,6003, + 6004,7,26,0,0,6004,6005,7,25,0,0,6005,6006,7,19,0,0,6006,6007,7, + 8,0,0,6007,6008,7,6,0,0,6008,842,1,0,0,0,6009,6010,7,7,0,0,6010, + 6011,7,26,0,0,6011,6012,7,6,0,0,6012,6013,7,7,0,0,6013,6014,7,12, + 0,0,6014,6015,7,4,0,0,6015,6016,7,7,0,0,6016,6017,7,4,0,0,6017,844, + 1,0,0,0,6018,6019,7,7,0,0,6019,6020,7,26,0,0,6020,6021,7,6,0,0,6021, + 6022,7,7,0,0,6022,6023,7,12,0,0,6023,6024,7,6,0,0,6024,6025,5,95, + 0,0,6025,6026,7,11,0,0,6026,6027,7,15,0,0,6027,6028,7,13,0,0,6028, + 6029,7,7,0,0,6029,846,1,0,0,0,6030,6031,7,18,0,0,6031,6032,7,3,0, + 0,6032,6033,7,15,0,0,6033,6034,7,5,0,0,6034,6035,7,7,0,0,6035,6036, + 7,4,0,0,6036,6037,5,95,0,0,6037,6038,7,5,0,0,6038,6039,7,19,0,0, + 6039,6040,7,22,0,0,6040,6041,7,15,0,0,6041,6042,7,12,0,0,6042,6043, + 5,95,0,0,6043,6044,7,3,0,0,6044,6045,7,6,0,0,6045,6046,7,6,0,0,6046, + 6047,7,7,0,0,6047,6048,7,23,0,0,6048,6049,7,25,0,0,6049,6050,7,6, + 0,0,6050,6051,7,11,0,0,6051,848,1,0,0,0,6052,6053,7,18,0,0,6053, + 6054,7,3,0,0,6054,6055,7,11,0,0,6055,6056,7,6,0,0,6056,850,1,0,0, + 0,6057,6058,7,18,0,0,6058,6059,7,3,0,0,6059,6060,7,17,0,0,6060,6061, + 7,5,0,0,6061,6062,7,6,0,0,6062,6063,7,11,0,0,6063,852,1,0,0,0,6064, + 6065,7,18,0,0,6065,6066,7,15,0,0,6066,6067,7,7,0,0,6067,6068,7,5, + 0,0,6068,6069,7,4,0,0,6069,6070,7,11,0,0,6070,854,1,0,0,0,6071,6072, + 7,18,0,0,6072,6073,7,15,0,0,6073,6074,7,5,0,0,6074,6075,7,7,0,0, + 6075,6076,5,95,0,0,6076,6077,7,16,0,0,6077,6078,7,5,0,0,6078,6079, + 7,19,0,0,6079,6080,7,14,0,0,6080,6081,7,21,0,0,6081,6082,5,95,0, + 0,6082,6083,7,11,0,0,6083,6084,7,15,0,0,6084,6085,7,13,0,0,6085, + 6086,7,7,0,0,6086,856,1,0,0,0,6087,6088,7,18,0,0,6088,6089,7,15, + 0,0,6089,6090,7,5,0,0,6090,6091,7,6,0,0,6091,6092,7,7,0,0,6092,6093, + 7,8,0,0,6093,858,1,0,0,0,6094,6095,7,18,0,0,6095,6096,7,15,0,0,6096, + 6097,7,8,0,0,6097,6098,7,11,0,0,6098,6099,7,6,0,0,6099,860,1,0,0, + 0,6100,6101,7,18,0,0,6101,6102,7,15,0,0,6102,6103,7,26,0,0,6103, + 6104,7,7,0,0,6104,6105,7,4,0,0,6105,862,1,0,0,0,6106,6107,7,18,0, + 0,6107,6108,7,5,0,0,6108,6109,7,17,0,0,6109,6110,7,11,0,0,6110,6111, + 7,20,0,0,6111,864,1,0,0,0,6112,6113,7,18,0,0,6113,6114,7,19,0,0, + 6114,6115,7,5,0,0,6115,6116,7,5,0,0,6116,6117,7,19,0,0,6117,6118, + 7,9,0,0,6118,6119,7,15,0,0,6119,6120,7,12,0,0,6120,6121,7,22,0,0, + 6121,866,1,0,0,0,6122,6123,7,18,0,0,6123,6124,7,19,0,0,6124,6125, + 7,5,0,0,6125,6126,7,5,0,0,6126,6127,7,19,0,0,6127,6128,7,9,0,0,6128, + 6129,7,11,0,0,6129,868,1,0,0,0,6130,6131,7,18,0,0,6131,6132,7,19, + 0,0,6132,6133,7,17,0,0,6133,6134,7,12,0,0,6134,6135,7,4,0,0,6135, + 870,1,0,0,0,6136,6137,7,18,0,0,6137,6138,7,17,0,0,6138,6139,7,5, + 0,0,6139,6140,7,5,0,0,6140,872,1,0,0,0,6141,6142,7,18,0,0,6142,6143, + 7,17,0,0,6143,6144,7,12,0,0,6144,6145,7,14,0,0,6145,6146,7,6,0,0, + 6146,6147,7,15,0,0,6147,6148,7,19,0,0,6148,6149,7,12,0,0,6149,874, + 1,0,0,0,6150,6151,7,22,0,0,6151,6152,7,7,0,0,6152,6153,7,12,0,0, + 6153,6154,7,7,0,0,6154,6155,7,8,0,0,6155,6156,7,3,0,0,6156,6157, + 7,5,0,0,6157,876,1,0,0,0,6158,6159,7,22,0,0,6159,6160,7,5,0,0,6160, + 6161,7,19,0,0,6161,6162,7,16,0,0,6162,6163,7,3,0,0,6163,6164,7,5, + 0,0,6164,878,1,0,0,0,6165,6166,7,22,0,0,6166,6167,7,8,0,0,6167,6168, + 7,3,0,0,6168,6169,7,12,0,0,6169,6170,7,6,0,0,6170,6171,7,11,0,0, + 6171,880,1,0,0,0,6172,6173,7,22,0,0,6173,6174,7,8,0,0,6174,6175, + 7,19,0,0,6175,6176,7,17,0,0,6176,6177,7,25,0,0,6177,6178,5,95,0, + 0,6178,6179,7,8,0,0,6179,6180,7,7,0,0,6180,6181,7,25,0,0,6181,6182, + 7,5,0,0,6182,6183,7,15,0,0,6183,6184,7,14,0,0,6184,6185,7,3,0,0, + 6185,6186,7,6,0,0,6186,6187,7,15,0,0,6187,6188,7,19,0,0,6188,6189, + 7,12,0,0,6189,882,1,0,0,0,6190,6191,7,20,0,0,6191,6192,7,3,0,0,6192, + 6193,7,12,0,0,6193,6194,7,4,0,0,6194,6195,7,5,0,0,6195,6196,7,7, + 0,0,6196,6197,7,8,0,0,6197,884,1,0,0,0,6198,6199,7,20,0,0,6199,6200, + 7,3,0,0,6200,6201,7,11,0,0,6201,6202,7,20,0,0,6202,886,1,0,0,0,6203, + 6204,7,20,0,0,6204,6205,7,7,0,0,6205,6206,7,5,0,0,6206,6207,7,25, + 0,0,6207,888,1,0,0,0,6208,6209,7,20,0,0,6209,6210,7,15,0,0,6210, + 6211,7,11,0,0,6211,6212,7,6,0,0,6212,6213,7,19,0,0,6213,6214,7,8, + 0,0,6214,6215,7,10,0,0,6215,890,1,0,0,0,6216,6217,7,20,0,0,6217, + 6218,7,19,0,0,6218,6219,7,11,0,0,6219,6220,7,6,0,0,6220,892,1,0, + 0,0,6221,6222,7,20,0,0,6222,6223,7,19,0,0,6223,6224,7,11,0,0,6224, + 6225,7,6,0,0,6225,6226,7,11,0,0,6226,894,1,0,0,0,6227,6228,7,15, + 0,0,6228,6229,7,4,0,0,6229,6230,7,7,0,0,6230,6231,7,12,0,0,6231, + 6232,7,6,0,0,6232,6233,7,15,0,0,6233,6234,7,18,0,0,6234,6235,7,15, + 0,0,6235,6236,7,7,0,0,6236,6237,7,4,0,0,6237,896,1,0,0,0,6238,6239, + 7,15,0,0,6239,6240,7,22,0,0,6240,6241,7,12,0,0,6241,6242,7,19,0, + 0,6242,6243,7,8,0,0,6243,6244,7,7,0,0,6244,6245,5,95,0,0,6245,6246, + 7,11,0,0,6246,6247,7,7,0,0,6247,6248,7,8,0,0,6248,6249,7,24,0,0, + 6249,6250,7,7,0,0,6250,6251,7,8,0,0,6251,6252,5,95,0,0,6252,6253, + 7,15,0,0,6253,6254,7,4,0,0,6254,6255,7,11,0,0,6255,898,1,0,0,0,6256, + 6257,7,15,0,0,6257,6258,7,23,0,0,6258,6259,7,25,0,0,6259,6260,7, + 19,0,0,6260,6261,7,8,0,0,6261,6262,7,6,0,0,6262,900,1,0,0,0,6263, + 6264,7,15,0,0,6264,6265,7,12,0,0,6265,6266,7,14,0,0,6266,6267,7, + 8,0,0,6267,6268,7,7,0,0,6268,6269,7,23,0,0,6269,6270,7,7,0,0,6270, + 6271,7,12,0,0,6271,6272,7,6,0,0,6272,902,1,0,0,0,6273,6274,7,15, + 0,0,6274,6275,7,12,0,0,6275,6276,7,4,0,0,6276,6277,7,7,0,0,6277, + 6278,7,26,0,0,6278,6279,7,7,0,0,6279,6280,7,11,0,0,6280,904,1,0, + 0,0,6281,6282,7,15,0,0,6282,6283,7,12,0,0,6283,6284,7,15,0,0,6284, + 6285,7,6,0,0,6285,6286,7,15,0,0,6286,6287,7,3,0,0,6287,6288,7,5, + 0,0,6288,6289,5,95,0,0,6289,6290,7,11,0,0,6290,6291,7,15,0,0,6291, + 6292,7,13,0,0,6292,6293,7,7,0,0,6293,906,1,0,0,0,6294,6295,7,15, + 0,0,6295,6296,7,12,0,0,6296,6297,7,25,0,0,6297,6298,7,5,0,0,6298, + 6299,7,3,0,0,6299,6300,7,14,0,0,6300,6301,7,7,0,0,6301,908,1,0,0, + 0,6302,6303,7,15,0,0,6303,6304,7,12,0,0,6304,6305,7,11,0,0,6305, + 6306,7,7,0,0,6306,6307,7,8,0,0,6307,6308,7,6,0,0,6308,6309,5,95, + 0,0,6309,6310,7,23,0,0,6310,6311,7,7,0,0,6311,6312,7,6,0,0,6312, + 6313,7,20,0,0,6313,6314,7,19,0,0,6314,6315,7,4,0,0,6315,910,1,0, + 0,0,6316,6317,7,15,0,0,6317,6318,7,12,0,0,6318,6319,7,11,0,0,6319, + 6320,7,6,0,0,6320,6321,7,3,0,0,6321,6322,7,5,0,0,6322,6323,7,5,0, + 0,6323,912,1,0,0,0,6324,6325,7,15,0,0,6325,6326,7,12,0,0,6326,6327, + 7,11,0,0,6327,6328,7,6,0,0,6328,6329,7,3,0,0,6329,6330,7,12,0,0, + 6330,6331,7,14,0,0,6331,6332,7,7,0,0,6332,914,1,0,0,0,6333,6334, + 7,15,0,0,6334,6335,7,12,0,0,6335,6336,7,11,0,0,6336,6337,7,6,0,0, + 6337,6338,7,3,0,0,6338,6339,7,12,0,0,6339,6340,7,6,0,0,6340,916, + 1,0,0,0,6341,6342,7,15,0,0,6342,6343,7,12,0,0,6343,6344,7,24,0,0, + 6344,6345,7,15,0,0,6345,6346,7,11,0,0,6346,6347,7,15,0,0,6347,6348, + 7,16,0,0,6348,6349,7,5,0,0,6349,6350,7,7,0,0,6350,918,1,0,0,0,6351, + 6352,7,15,0,0,6352,6353,7,12,0,0,6353,6354,7,24,0,0,6354,6355,7, + 19,0,0,6355,6356,7,21,0,0,6356,6357,7,7,0,0,6357,6358,7,8,0,0,6358, + 920,1,0,0,0,6359,6360,7,15,0,0,6360,6361,7,19,0,0,6361,922,1,0,0, + 0,6362,6363,7,15,0,0,6363,6364,7,19,0,0,6364,6365,5,95,0,0,6365, + 6366,7,6,0,0,6366,6367,7,20,0,0,6367,6368,7,8,0,0,6368,6369,7,7, + 0,0,6369,6370,7,3,0,0,6370,6371,7,4,0,0,6371,924,1,0,0,0,6372,6373, + 7,15,0,0,6373,6374,7,25,0,0,6374,6375,7,14,0,0,6375,926,1,0,0,0, + 6376,6377,7,15,0,0,6377,6378,7,11,0,0,6378,6379,7,19,0,0,6379,6380, + 7,5,0,0,6380,6381,7,3,0,0,6381,6382,7,6,0,0,6382,6383,7,15,0,0,6383, + 6384,7,19,0,0,6384,6385,7,12,0,0,6385,928,1,0,0,0,6386,6387,7,15, + 0,0,6387,6388,7,11,0,0,6388,6389,7,11,0,0,6389,6390,7,17,0,0,6390, + 6391,7,7,0,0,6391,6392,7,8,0,0,6392,930,1,0,0,0,6393,6394,7,27,0, + 0,6394,6395,7,11,0,0,6395,6396,7,19,0,0,6396,6397,7,12,0,0,6397, + 932,1,0,0,0,6398,6399,7,21,0,0,6399,6400,7,7,0,0,6400,6401,7,10, + 0,0,6401,6402,5,95,0,0,6402,6403,7,16,0,0,6403,6404,7,5,0,0,6404, + 6405,7,19,0,0,6405,6406,7,14,0,0,6406,6407,7,21,0,0,6407,6408,5, + 95,0,0,6408,6409,7,11,0,0,6409,6410,7,15,0,0,6410,6411,7,13,0,0, + 6411,6412,7,7,0,0,6412,934,1,0,0,0,6413,6414,7,5,0,0,6414,6415,7, + 3,0,0,6415,6416,7,12,0,0,6416,6417,7,22,0,0,6417,6418,7,17,0,0,6418, + 6419,7,3,0,0,6419,6420,7,22,0,0,6420,6421,7,7,0,0,6421,936,1,0,0, + 0,6422,6423,7,5,0,0,6423,6424,7,3,0,0,6424,6425,7,11,0,0,6425,6426, + 7,6,0,0,6426,938,1,0,0,0,6427,6428,7,5,0,0,6428,6429,7,7,0,0,6429, + 6430,7,3,0,0,6430,6431,7,24,0,0,6431,6432,7,7,0,0,6432,6433,7,11, + 0,0,6433,940,1,0,0,0,6434,6435,7,5,0,0,6435,6436,7,7,0,0,6436,6437, + 7,11,0,0,6437,6438,7,11,0,0,6438,942,1,0,0,0,6439,6440,7,5,0,0,6440, + 6441,7,7,0,0,6441,6442,7,24,0,0,6442,6443,7,7,0,0,6443,6444,7,5, + 0,0,6444,944,1,0,0,0,6445,6446,7,5,0,0,6446,6447,7,15,0,0,6447,6448, + 7,11,0,0,6448,6449,7,6,0,0,6449,946,1,0,0,0,6450,6451,7,5,0,0,6451, + 6452,7,19,0,0,6452,6453,7,14,0,0,6453,6454,7,3,0,0,6454,6455,7,5, + 0,0,6455,948,1,0,0,0,6456,6457,7,5,0,0,6457,6458,7,19,0,0,6458,6459, + 7,22,0,0,6459,6460,7,18,0,0,6460,6461,7,15,0,0,6461,6462,7,5,0,0, + 6462,6463,7,7,0,0,6463,950,1,0,0,0,6464,6465,7,5,0,0,6465,6466,7, + 19,0,0,6466,6467,7,22,0,0,6467,6468,7,11,0,0,6468,952,1,0,0,0,6469, + 6470,7,23,0,0,6470,6471,7,3,0,0,6471,6472,7,11,0,0,6472,6473,7,6, + 0,0,6473,6474,7,7,0,0,6474,6475,7,8,0,0,6475,954,1,0,0,0,6476,6477, + 7,23,0,0,6477,6478,7,3,0,0,6478,6479,7,11,0,0,6479,6480,7,6,0,0, + 6480,6481,7,7,0,0,6481,6482,7,8,0,0,6482,6483,5,95,0,0,6483,6484, + 7,3,0,0,6484,6485,7,17,0,0,6485,6486,7,6,0,0,6486,6487,7,19,0,0, + 6487,6488,5,95,0,0,6488,6489,7,25,0,0,6489,6490,7,19,0,0,6490,6491, + 7,11,0,0,6491,6492,7,15,0,0,6492,6493,7,6,0,0,6493,6494,7,15,0,0, + 6494,6495,7,19,0,0,6495,6496,7,12,0,0,6496,956,1,0,0,0,6497,6498, + 7,23,0,0,6498,6499,7,3,0,0,6499,6500,7,11,0,0,6500,6501,7,6,0,0, + 6501,6502,7,7,0,0,6502,6503,7,8,0,0,6503,6504,5,95,0,0,6504,6505, + 7,14,0,0,6505,6506,7,19,0,0,6506,6507,7,12,0,0,6507,6508,7,12,0, + 0,6508,6509,7,7,0,0,6509,6510,7,14,0,0,6510,6511,7,6,0,0,6511,6512, + 5,95,0,0,6512,6513,7,8,0,0,6513,6514,7,7,0,0,6514,6515,7,6,0,0,6515, + 6516,7,8,0,0,6516,6517,7,10,0,0,6517,958,1,0,0,0,6518,6519,7,23, + 0,0,6519,6520,7,3,0,0,6520,6521,7,11,0,0,6521,6522,7,6,0,0,6522, + 6523,7,7,0,0,6523,6524,7,8,0,0,6524,6525,5,95,0,0,6525,6526,7,4, + 0,0,6526,6527,7,7,0,0,6527,6528,7,5,0,0,6528,6529,7,3,0,0,6529,6530, + 7,10,0,0,6530,960,1,0,0,0,6531,6532,7,23,0,0,6532,6533,7,3,0,0,6533, + 6534,7,11,0,0,6534,6535,7,6,0,0,6535,6536,7,7,0,0,6536,6537,7,8, + 0,0,6537,6538,5,95,0,0,6538,6539,7,20,0,0,6539,6540,7,7,0,0,6540, + 6541,7,3,0,0,6541,6542,7,8,0,0,6542,6543,7,6,0,0,6543,6544,7,16, + 0,0,6544,6545,7,7,0,0,6545,6546,7,3,0,0,6546,6547,7,6,0,0,6547,6548, + 5,95,0,0,6548,6549,7,25,0,0,6549,6550,7,7,0,0,6550,6551,7,8,0,0, + 6551,6552,7,15,0,0,6552,6553,7,19,0,0,6553,6554,7,4,0,0,6554,962, + 1,0,0,0,6555,6556,7,23,0,0,6556,6557,7,3,0,0,6557,6558,7,11,0,0, + 6558,6559,7,6,0,0,6559,6560,7,7,0,0,6560,6561,7,8,0,0,6561,6562, + 5,95,0,0,6562,6563,7,20,0,0,6563,6564,7,19,0,0,6564,6565,7,11,0, + 0,6565,6566,7,6,0,0,6566,964,1,0,0,0,6567,6568,7,23,0,0,6568,6569, + 7,3,0,0,6569,6570,7,11,0,0,6570,6571,7,6,0,0,6571,6572,7,7,0,0,6572, + 6573,7,8,0,0,6573,6574,5,95,0,0,6574,6575,7,5,0,0,6575,6576,7,19, + 0,0,6576,6577,7,22,0,0,6577,6578,5,95,0,0,6578,6579,7,18,0,0,6579, + 6580,7,15,0,0,6580,6581,7,5,0,0,6581,6582,7,7,0,0,6582,966,1,0,0, + 0,6583,6584,7,23,0,0,6584,6585,7,3,0,0,6585,6586,7,11,0,0,6586,6587, + 7,6,0,0,6587,6588,7,7,0,0,6588,6589,7,8,0,0,6589,6590,5,95,0,0,6590, + 6591,7,5,0,0,6591,6592,7,19,0,0,6592,6593,7,22,0,0,6593,6594,5,95, + 0,0,6594,6595,7,25,0,0,6595,6596,7,19,0,0,6596,6597,7,11,0,0,6597, + 968,1,0,0,0,6598,6599,7,23,0,0,6599,6600,7,3,0,0,6600,6601,7,11, + 0,0,6601,6602,7,6,0,0,6602,6603,7,7,0,0,6603,6604,7,8,0,0,6604,6605, + 5,95,0,0,6605,6606,7,25,0,0,6606,6607,7,3,0,0,6607,6608,7,11,0,0, + 6608,6609,7,11,0,0,6609,6610,7,9,0,0,6610,6611,7,19,0,0,6611,6612, + 7,8,0,0,6612,6613,7,4,0,0,6613,970,1,0,0,0,6614,6615,7,23,0,0,6615, + 6616,7,3,0,0,6616,6617,7,11,0,0,6617,6618,7,6,0,0,6618,6619,7,7, + 0,0,6619,6620,7,8,0,0,6620,6621,5,95,0,0,6621,6622,7,25,0,0,6622, + 6623,7,19,0,0,6623,6624,7,8,0,0,6624,6625,7,6,0,0,6625,972,1,0,0, + 0,6626,6627,7,23,0,0,6627,6628,7,3,0,0,6628,6629,7,11,0,0,6629,6630, + 7,6,0,0,6630,6631,7,7,0,0,6631,6632,7,8,0,0,6632,6633,5,95,0,0,6633, + 6634,7,8,0,0,6634,6635,7,7,0,0,6635,6636,7,6,0,0,6636,6637,7,8,0, + 0,6637,6638,7,10,0,0,6638,6639,5,95,0,0,6639,6640,7,14,0,0,6640, + 6641,7,19,0,0,6641,6642,7,17,0,0,6642,6643,7,12,0,0,6643,6644,7, + 6,0,0,6644,974,1,0,0,0,6645,6646,7,23,0,0,6646,6647,7,3,0,0,6647, + 6648,7,11,0,0,6648,6649,7,6,0,0,6649,6650,7,7,0,0,6650,6651,7,8, + 0,0,6651,6652,5,95,0,0,6652,6653,7,11,0,0,6653,6654,7,11,0,0,6654, + 6655,7,5,0,0,6655,976,1,0,0,0,6656,6657,7,23,0,0,6657,6658,7,3,0, + 0,6658,6659,7,11,0,0,6659,6660,7,6,0,0,6660,6661,7,7,0,0,6661,6662, + 7,8,0,0,6662,6663,5,95,0,0,6663,6664,7,11,0,0,6664,6665,7,11,0,0, + 6665,6666,7,5,0,0,6666,6667,5,95,0,0,6667,6668,7,14,0,0,6668,6669, + 7,3,0,0,6669,978,1,0,0,0,6670,6671,7,23,0,0,6671,6672,7,3,0,0,6672, + 6673,7,11,0,0,6673,6674,7,6,0,0,6674,6675,7,7,0,0,6675,6676,7,8, + 0,0,6676,6677,5,95,0,0,6677,6678,7,11,0,0,6678,6679,7,11,0,0,6679, + 6680,7,5,0,0,6680,6681,5,95,0,0,6681,6682,7,14,0,0,6682,6683,7,3, + 0,0,6683,6684,7,25,0,0,6684,6685,7,3,0,0,6685,6686,7,6,0,0,6686, + 6687,7,20,0,0,6687,980,1,0,0,0,6688,6689,7,23,0,0,6689,6690,7,3, + 0,0,6690,6691,7,11,0,0,6691,6692,7,6,0,0,6692,6693,7,7,0,0,6693, + 6694,7,8,0,0,6694,6695,5,95,0,0,6695,6696,7,11,0,0,6696,6697,7,11, + 0,0,6697,6698,7,5,0,0,6698,6699,5,95,0,0,6699,6700,7,14,0,0,6700, + 6701,7,7,0,0,6701,6702,7,8,0,0,6702,6703,7,6,0,0,6703,982,1,0,0, + 0,6704,6705,7,23,0,0,6705,6706,7,3,0,0,6706,6707,7,11,0,0,6707,6708, + 7,6,0,0,6708,6709,7,7,0,0,6709,6710,7,8,0,0,6710,6711,5,95,0,0,6711, + 6712,7,11,0,0,6712,6713,7,11,0,0,6713,6714,7,5,0,0,6714,6715,5,95, + 0,0,6715,6716,7,14,0,0,6716,6717,7,15,0,0,6717,6718,7,25,0,0,6718, + 6719,7,20,0,0,6719,6720,7,7,0,0,6720,6721,7,8,0,0,6721,984,1,0,0, + 0,6722,6723,7,23,0,0,6723,6724,7,3,0,0,6724,6725,7,11,0,0,6725,6726, + 7,6,0,0,6726,6727,7,7,0,0,6727,6728,7,8,0,0,6728,6729,5,95,0,0,6729, + 6730,7,11,0,0,6730,6731,7,11,0,0,6731,6732,7,5,0,0,6732,6733,5,95, + 0,0,6733,6734,7,14,0,0,6734,6735,7,8,0,0,6735,6736,7,5,0,0,6736, + 986,1,0,0,0,6737,6738,7,23,0,0,6738,6739,7,3,0,0,6739,6740,7,11, + 0,0,6740,6741,7,6,0,0,6741,6742,7,7,0,0,6742,6743,7,8,0,0,6743,6744, + 5,95,0,0,6744,6745,7,11,0,0,6745,6746,7,11,0,0,6746,6747,7,5,0,0, + 6747,6748,5,95,0,0,6748,6749,7,14,0,0,6749,6750,7,8,0,0,6750,6751, + 7,5,0,0,6751,6752,7,25,0,0,6752,6753,7,3,0,0,6753,6754,7,6,0,0,6754, + 6755,7,20,0,0,6755,988,1,0,0,0,6756,6757,7,23,0,0,6757,6758,7,3, + 0,0,6758,6759,7,11,0,0,6759,6760,7,6,0,0,6760,6761,7,7,0,0,6761, + 6762,7,8,0,0,6762,6763,5,95,0,0,6763,6764,7,11,0,0,6764,6765,7,11, + 0,0,6765,6766,7,5,0,0,6766,6767,5,95,0,0,6767,6768,7,21,0,0,6768, + 6769,7,7,0,0,6769,6770,7,10,0,0,6770,990,1,0,0,0,6771,6772,7,23, + 0,0,6772,6773,7,3,0,0,6773,6774,7,11,0,0,6774,6775,7,6,0,0,6775, + 6776,7,7,0,0,6776,6777,7,8,0,0,6777,6778,5,95,0,0,6778,6779,7,6, + 0,0,6779,6780,7,5,0,0,6780,6781,7,11,0,0,6781,6782,5,95,0,0,6782, + 6783,7,24,0,0,6783,6784,7,7,0,0,6784,6785,7,8,0,0,6785,6786,7,11, + 0,0,6786,6787,7,15,0,0,6787,6788,7,19,0,0,6788,6789,7,12,0,0,6789, + 992,1,0,0,0,6790,6791,7,23,0,0,6791,6792,7,3,0,0,6792,6793,7,11, + 0,0,6793,6794,7,6,0,0,6794,6795,7,7,0,0,6795,6796,7,8,0,0,6796,6797, + 5,95,0,0,6797,6798,7,17,0,0,6798,6799,7,11,0,0,6799,6800,7,7,0,0, + 6800,6801,7,8,0,0,6801,994,1,0,0,0,6802,6803,7,23,0,0,6803,6804, + 7,3,0,0,6804,6805,7,26,0,0,6805,6806,5,95,0,0,6806,6807,7,14,0,0, + 6807,6808,7,19,0,0,6808,6809,7,12,0,0,6809,6810,7,12,0,0,6810,6811, + 7,7,0,0,6811,6812,7,14,0,0,6812,6813,7,6,0,0,6813,6814,7,15,0,0, + 6814,6815,7,19,0,0,6815,6816,7,12,0,0,6816,6817,7,11,0,0,6817,6818, + 5,95,0,0,6818,6819,7,25,0,0,6819,6820,7,7,0,0,6820,6821,7,8,0,0, + 6821,6822,5,95,0,0,6822,6823,7,20,0,0,6823,6824,7,19,0,0,6824,6825, + 7,17,0,0,6825,6826,7,8,0,0,6826,996,1,0,0,0,6827,6828,7,23,0,0,6828, + 6829,7,3,0,0,6829,6830,7,26,0,0,6830,6831,5,95,0,0,6831,6832,7,28, + 0,0,6832,6833,7,17,0,0,6833,6834,7,7,0,0,6834,6835,7,8,0,0,6835, + 6836,7,15,0,0,6836,6837,7,7,0,0,6837,6838,7,11,0,0,6838,6839,5,95, + 0,0,6839,6840,7,25,0,0,6840,6841,7,7,0,0,6841,6842,7,8,0,0,6842, + 6843,5,95,0,0,6843,6844,7,20,0,0,6844,6845,7,19,0,0,6845,6846,7, + 17,0,0,6846,6847,7,8,0,0,6847,998,1,0,0,0,6848,6849,7,23,0,0,6849, + 6850,7,3,0,0,6850,6851,7,26,0,0,6851,6852,5,95,0,0,6852,6853,7,8, + 0,0,6853,6854,7,19,0,0,6854,6855,7,9,0,0,6855,6856,7,11,0,0,6856, + 1000,1,0,0,0,6857,6858,7,23,0,0,6858,6859,7,3,0,0,6859,6860,7,26, + 0,0,6860,6861,5,95,0,0,6861,6862,7,11,0,0,6862,6863,7,15,0,0,6863, + 6864,7,13,0,0,6864,6865,7,7,0,0,6865,1002,1,0,0,0,6866,6867,7,23, + 0,0,6867,6868,7,3,0,0,6868,6869,7,26,0,0,6869,6870,5,95,0,0,6870, + 6871,7,17,0,0,6871,6872,7,25,0,0,6872,6873,7,4,0,0,6873,6874,7,3, + 0,0,6874,6875,7,6,0,0,6875,6876,7,7,0,0,6876,6877,7,11,0,0,6877, + 6878,5,95,0,0,6878,6879,7,25,0,0,6879,6880,7,7,0,0,6880,6881,7,8, + 0,0,6881,6882,5,95,0,0,6882,6883,7,20,0,0,6883,6884,7,19,0,0,6884, + 6885,7,17,0,0,6885,6886,7,8,0,0,6886,1004,1,0,0,0,6887,6888,7,23, + 0,0,6888,6889,7,3,0,0,6889,6890,7,26,0,0,6890,6891,5,95,0,0,6891, + 6892,7,17,0,0,6892,6893,7,11,0,0,6893,6894,7,7,0,0,6894,6895,7,8, + 0,0,6895,6896,5,95,0,0,6896,6897,7,14,0,0,6897,6898,7,19,0,0,6898, + 6899,7,12,0,0,6899,6900,7,12,0,0,6900,6901,7,7,0,0,6901,6902,7,14, + 0,0,6902,6903,7,6,0,0,6903,6904,7,15,0,0,6904,6905,7,19,0,0,6905, + 6906,7,12,0,0,6906,6907,7,11,0,0,6907,1006,1,0,0,0,6908,6909,7,23, + 0,0,6909,6910,7,7,0,0,6910,6911,7,4,0,0,6911,6912,7,15,0,0,6912, + 6913,7,17,0,0,6913,6914,7,23,0,0,6914,1008,1,0,0,0,6915,6916,7,23, + 0,0,6916,6917,7,7,0,0,6917,6918,7,23,0,0,6918,6919,7,16,0,0,6919, + 6920,7,7,0,0,6920,6921,7,8,0,0,6921,1010,1,0,0,0,6922,6923,7,23, + 0,0,6923,6924,7,7,0,0,6924,6925,7,8,0,0,6925,6926,7,22,0,0,6926, + 6927,7,7,0,0,6927,1012,1,0,0,0,6928,6929,7,23,0,0,6929,6930,7,7, + 0,0,6930,6931,7,11,0,0,6931,6932,7,11,0,0,6932,6933,7,3,0,0,6933, + 6934,7,22,0,0,6934,6935,7,7,0,0,6935,6936,5,95,0,0,6936,6937,7,6, + 0,0,6937,6938,7,7,0,0,6938,6939,7,26,0,0,6939,6940,7,6,0,0,6940, + 1014,1,0,0,0,6941,6942,7,23,0,0,6942,6943,7,15,0,0,6943,6944,7,4, + 0,0,6944,1016,1,0,0,0,6945,6946,7,23,0,0,6946,6947,7,15,0,0,6947, + 6948,7,22,0,0,6948,6949,7,8,0,0,6949,6950,7,3,0,0,6950,6951,7,6, + 0,0,6951,6952,7,7,0,0,6952,1018,1,0,0,0,6953,6954,7,23,0,0,6954, + 6955,7,15,0,0,6955,6956,7,12,0,0,6956,6957,5,95,0,0,6957,6958,7, + 8,0,0,6958,6959,7,19,0,0,6959,6960,7,9,0,0,6960,6961,7,11,0,0,6961, + 1020,1,0,0,0,6962,6963,7,23,0,0,6963,6964,7,19,0,0,6964,6965,7,4, + 0,0,6965,6966,7,7,0,0,6966,1022,1,0,0,0,6967,6968,7,23,0,0,6968, + 6969,7,19,0,0,6969,6970,7,4,0,0,6970,6971,7,15,0,0,6971,6972,7,18, + 0,0,6972,6973,7,10,0,0,6973,1024,1,0,0,0,6974,6975,7,23,0,0,6975, + 6976,7,17,0,0,6976,6977,7,6,0,0,6977,6978,7,7,0,0,6978,6979,7,26, + 0,0,6979,1026,1,0,0,0,6980,6981,7,23,0,0,6981,6982,7,10,0,0,6982, + 6983,7,11,0,0,6983,6984,7,28,0,0,6984,6985,7,5,0,0,6985,1028,1,0, + 0,0,6986,6987,7,23,0,0,6987,6988,7,10,0,0,6988,6989,7,11,0,0,6989, + 6990,7,28,0,0,6990,6991,7,5,0,0,6991,6992,5,95,0,0,6992,6993,7,7, + 0,0,6993,6994,7,8,0,0,6994,6995,7,8,0,0,6995,6996,7,12,0,0,6996, + 6997,7,19,0,0,6997,1030,1,0,0,0,6998,6999,7,12,0,0,6999,7000,7,3, + 0,0,7000,7001,7,23,0,0,7001,7002,7,7,0,0,7002,1032,1,0,0,0,7003, + 7004,7,12,0,0,7004,7005,7,3,0,0,7005,7006,7,23,0,0,7006,7007,7,7, + 0,0,7007,7008,7,11,0,0,7008,1034,1,0,0,0,7009,7010,7,12,0,0,7010, + 7011,7,14,0,0,7011,7012,7,20,0,0,7012,7013,7,3,0,0,7013,7014,7,8, + 0,0,7014,1036,1,0,0,0,7015,7016,7,12,0,0,7016,7017,7,7,0,0,7017, + 7018,7,24,0,0,7018,7019,7,7,0,0,7019,7020,7,8,0,0,7020,1038,1,0, + 0,0,7021,7022,7,12,0,0,7022,7023,7,7,0,0,7023,7024,7,26,0,0,7024, + 7025,7,6,0,0,7025,1040,1,0,0,0,7026,7027,7,12,0,0,7027,7028,7,19, + 0,0,7028,1042,1,0,0,0,7029,7030,7,12,0,0,7030,7031,7,19,0,0,7031, + 7032,7,14,0,0,7032,7033,7,3,0,0,7033,7034,7,14,0,0,7034,7035,7,20, + 0,0,7035,7036,7,7,0,0,7036,1044,1,0,0,0,7037,7038,7,12,0,0,7038, + 7039,7,19,0,0,7039,7040,7,14,0,0,7040,7041,7,19,0,0,7041,7042,7, + 25,0,0,7042,7043,7,10,0,0,7043,1046,1,0,0,0,7044,7045,7,12,0,0,7045, + 7046,7,19,0,0,7046,7047,7,14,0,0,7047,7048,7,10,0,0,7048,7049,7, + 14,0,0,7049,7050,7,5,0,0,7050,7051,7,7,0,0,7051,1048,1,0,0,0,7052, + 7053,7,12,0,0,7053,7054,7,19,0,0,7054,7055,7,23,0,0,7055,7056,7, + 3,0,0,7056,7057,7,26,0,0,7057,7058,7,24,0,0,7058,7059,7,3,0,0,7059, + 7060,7,5,0,0,7060,7061,7,17,0,0,7061,7062,7,7,0,0,7062,1050,1,0, + 0,0,7063,7064,7,12,0,0,7064,7065,7,19,0,0,7065,7066,7,23,0,0,7066, + 7067,7,15,0,0,7067,7068,7,12,0,0,7068,7069,7,24,0,0,7069,7070,7, + 3,0,0,7070,7071,7,5,0,0,7071,7072,7,17,0,0,7072,7073,7,7,0,0,7073, + 1052,1,0,0,0,7074,7075,7,12,0,0,7075,7076,7,19,0,0,7076,7077,7,9, + 0,0,7077,7078,7,3,0,0,7078,7079,7,15,0,0,7079,7080,7,6,0,0,7080, + 1054,1,0,0,0,7081,7082,7,12,0,0,7082,7083,7,19,0,0,7083,7084,7,4, + 0,0,7084,7085,7,7,0,0,7085,7086,7,22,0,0,7086,7087,7,8,0,0,7087, + 7088,7,19,0,0,7088,7089,7,17,0,0,7089,7090,7,25,0,0,7090,1056,1, + 0,0,0,7091,7092,7,12,0,0,7092,7093,7,19,0,0,7093,7094,7,12,0,0,7094, + 7095,7,7,0,0,7095,1058,1,0,0,0,7096,7097,7,19,0,0,7097,7098,7,4, + 0,0,7098,7099,7,16,0,0,7099,7100,7,14,0,0,7100,1060,1,0,0,0,7101, + 7102,7,19,0,0,7102,7103,7,18,0,0,7103,7104,7,18,0,0,7104,7105,7, + 5,0,0,7105,7106,7,15,0,0,7106,7107,7,12,0,0,7107,7108,7,7,0,0,7108, + 1062,1,0,0,0,7109,7110,7,19,0,0,7110,7111,7,18,0,0,7111,7112,7,18, + 0,0,7112,7113,7,11,0,0,7113,7114,7,7,0,0,7114,7115,7,6,0,0,7115, + 1064,1,0,0,0,7116,7117,7,19,0,0,7117,7118,7,18,0,0,7118,1066,1,0, + 0,0,7119,7120,7,19,0,0,7120,7121,7,27,0,0,7121,1068,1,0,0,0,7122, + 7123,7,19,0,0,7123,7124,7,5,0,0,7124,7125,7,4,0,0,7125,7126,5,95, + 0,0,7126,7127,7,25,0,0,7127,7128,7,3,0,0,7128,7129,7,11,0,0,7129, + 7130,7,11,0,0,7130,7131,7,9,0,0,7131,7132,7,19,0,0,7132,7133,7,8, + 0,0,7133,7134,7,4,0,0,7134,1070,1,0,0,0,7135,7136,7,19,0,0,7136, + 7137,7,12,0,0,7137,7138,7,7,0,0,7138,1072,1,0,0,0,7139,7140,7,19, + 0,0,7140,7141,7,12,0,0,7141,7142,7,5,0,0,7142,7143,7,15,0,0,7143, + 7144,7,12,0,0,7144,7145,7,7,0,0,7145,1074,1,0,0,0,7146,7147,7,19, + 0,0,7147,7148,7,12,0,0,7148,7149,7,5,0,0,7149,7150,7,10,0,0,7150, + 1076,1,0,0,0,7151,7152,7,19,0,0,7152,7153,7,25,0,0,7153,7154,7,7, + 0,0,7154,7155,7,12,0,0,7155,1078,1,0,0,0,7156,7157,7,19,0,0,7157, + 7158,7,25,0,0,7158,7159,7,6,0,0,7159,7160,7,15,0,0,7160,7161,7,23, + 0,0,7161,7162,7,15,0,0,7162,7163,7,13,0,0,7163,7164,7,7,0,0,7164, + 7165,7,8,0,0,7165,7166,5,95,0,0,7166,7167,7,14,0,0,7167,7168,7,19, + 0,0,7168,7169,7,11,0,0,7169,7170,7,6,0,0,7170,7171,7,11,0,0,7171, + 1080,1,0,0,0,7172,7173,7,19,0,0,7173,7174,7,25,0,0,7174,7175,7,6, + 0,0,7175,7176,7,15,0,0,7176,7177,7,19,0,0,7177,7178,7,12,0,0,7178, + 7179,7,11,0,0,7179,1082,1,0,0,0,7180,7181,7,19,0,0,7181,7182,7,9, + 0,0,7182,7183,7,12,0,0,7183,7184,7,7,0,0,7184,7185,7,8,0,0,7185, + 1084,1,0,0,0,7186,7187,7,25,0,0,7187,7188,7,3,0,0,7188,7189,7,14, + 0,0,7189,7190,7,21,0,0,7190,7191,5,95,0,0,7191,7192,7,21,0,0,7192, + 7193,7,7,0,0,7193,7194,7,10,0,0,7194,7195,7,11,0,0,7195,1086,1,0, + 0,0,7196,7197,7,25,0,0,7197,7198,7,3,0,0,7198,7199,7,22,0,0,7199, + 7200,7,7,0,0,7200,1088,1,0,0,0,7201,7202,7,25,0,0,7202,7203,7,3, + 0,0,7203,7204,7,22,0,0,7204,7205,7,7,0,0,7205,7206,5,95,0,0,7206, + 7207,7,14,0,0,7207,7208,7,19,0,0,7208,7209,7,23,0,0,7209,7210,7, + 25,0,0,7210,7211,7,8,0,0,7211,7212,7,7,0,0,7212,7213,7,11,0,0,7213, + 7214,7,11,0,0,7214,7215,7,7,0,0,7215,7216,7,4,0,0,7216,1090,1,0, + 0,0,7217,7218,7,25,0,0,7218,7219,7,3,0,0,7219,7220,7,22,0,0,7220, + 7221,7,7,0,0,7221,7222,5,95,0,0,7222,7223,7,14,0,0,7223,7224,7,19, + 0,0,7224,7225,7,23,0,0,7225,7226,7,25,0,0,7226,7227,7,8,0,0,7227, + 7228,7,7,0,0,7228,7229,7,11,0,0,7229,7230,7,11,0,0,7230,7231,7,15, + 0,0,7231,7232,7,19,0,0,7232,7233,7,12,0,0,7233,7234,5,95,0,0,7234, + 7235,7,5,0,0,7235,7236,7,7,0,0,7236,7237,7,24,0,0,7237,7238,7,7, + 0,0,7238,7239,7,5,0,0,7239,1092,1,0,0,0,7240,7241,7,25,0,0,7241, + 7242,7,3,0,0,7242,7243,7,8,0,0,7243,7244,7,11,0,0,7244,7245,7,7, + 0,0,7245,7246,7,8,0,0,7246,1094,1,0,0,0,7247,7248,7,25,0,0,7248, + 7249,7,3,0,0,7249,7250,7,8,0,0,7250,7251,7,6,0,0,7251,7252,7,15, + 0,0,7252,7253,7,3,0,0,7253,7254,7,5,0,0,7254,1096,1,0,0,0,7255,7256, + 7,25,0,0,7256,7257,7,3,0,0,7257,7258,7,8,0,0,7258,7259,7,6,0,0,7259, + 7260,7,15,0,0,7260,7261,7,6,0,0,7261,7262,7,15,0,0,7262,7263,7,19, + 0,0,7263,7264,7,12,0,0,7264,7265,7,15,0,0,7265,7266,7,12,0,0,7266, + 7267,7,22,0,0,7267,1098,1,0,0,0,7268,7269,7,25,0,0,7269,7270,7,3, + 0,0,7270,7271,7,8,0,0,7271,7272,7,6,0,0,7272,7273,7,15,0,0,7273, + 7274,7,6,0,0,7274,7275,7,15,0,0,7275,7276,7,19,0,0,7276,7277,7,12, + 0,0,7277,7278,7,11,0,0,7278,1100,1,0,0,0,7279,7280,7,25,0,0,7280, + 7281,7,3,0,0,7281,7282,7,11,0,0,7282,7283,7,11,0,0,7283,7284,7,9, + 0,0,7284,7285,7,19,0,0,7285,7286,7,8,0,0,7286,7287,7,4,0,0,7287, + 1102,1,0,0,0,7288,7289,7,25,0,0,7289,7290,7,3,0,0,7290,7291,7,11, + 0,0,7291,7292,7,11,0,0,7292,7293,7,9,0,0,7293,7294,7,19,0,0,7294, + 7295,7,8,0,0,7295,7296,7,4,0,0,7296,7297,5,95,0,0,7297,7298,7,5, + 0,0,7298,7299,7,19,0,0,7299,7300,7,14,0,0,7300,7301,7,21,0,0,7301, + 7302,5,95,0,0,7302,7303,7,6,0,0,7303,7304,7,15,0,0,7304,7305,7,23, + 0,0,7305,7306,7,7,0,0,7306,1104,1,0,0,0,7307,7308,7,25,0,0,7308, + 7309,7,20,0,0,7309,7310,7,3,0,0,7310,7311,7,11,0,0,7311,7312,7,7, + 0,0,7312,1106,1,0,0,0,7313,7314,7,25,0,0,7314,7315,7,5,0,0,7315, + 7316,7,17,0,0,7316,7317,7,22,0,0,7317,7318,7,15,0,0,7318,7319,7, + 12,0,0,7319,1108,1,0,0,0,7320,7321,7,25,0,0,7321,7322,7,5,0,0,7322, + 7323,7,17,0,0,7323,7324,7,22,0,0,7324,7325,7,15,0,0,7325,7326,7, + 12,0,0,7326,7327,5,95,0,0,7327,7328,7,4,0,0,7328,7329,7,15,0,0,7329, + 7330,7,8,0,0,7330,1110,1,0,0,0,7331,7332,7,25,0,0,7332,7333,7,5, + 0,0,7333,7334,7,17,0,0,7334,7335,7,22,0,0,7335,7336,7,15,0,0,7336, + 7337,7,12,0,0,7337,7338,7,11,0,0,7338,1112,1,0,0,0,7339,7340,7,25, + 0,0,7340,7341,7,19,0,0,7341,7342,7,8,0,0,7342,7343,7,6,0,0,7343, + 1114,1,0,0,0,7344,7345,7,25,0,0,7345,7346,7,8,0,0,7346,7347,7,7, + 0,0,7347,7348,7,14,0,0,7348,7349,7,7,0,0,7349,7350,7,4,0,0,7350, + 7351,7,7,0,0,7351,7352,7,11,0,0,7352,1116,1,0,0,0,7353,7354,7,25, + 0,0,7354,7355,7,8,0,0,7355,7356,7,7,0,0,7356,7357,7,14,0,0,7357, + 7358,7,7,0,0,7358,7359,7,4,0,0,7359,7360,7,15,0,0,7360,7361,7,12, + 0,0,7361,7362,7,22,0,0,7362,1118,1,0,0,0,7363,7364,7,25,0,0,7364, + 7365,7,8,0,0,7365,7366,7,7,0,0,7366,7367,7,25,0,0,7367,7368,7,3, + 0,0,7368,7369,7,8,0,0,7369,7370,7,7,0,0,7370,1120,1,0,0,0,7371,7372, + 7,25,0,0,7372,7373,7,8,0,0,7373,7374,7,7,0,0,7374,7375,7,11,0,0, + 7375,7376,7,7,0,0,7376,7377,7,8,0,0,7377,7378,7,24,0,0,7378,7379, + 7,7,0,0,7379,1122,1,0,0,0,7380,7381,7,25,0,0,7381,7382,7,8,0,0,7382, + 7383,7,7,0,0,7383,7384,7,24,0,0,7384,1124,1,0,0,0,7385,7386,7,25, + 0,0,7386,7387,7,8,0,0,7387,7388,7,19,0,0,7388,7389,7,14,0,0,7389, + 7390,7,7,0,0,7390,7391,7,11,0,0,7391,7392,7,11,0,0,7392,7393,7,5, + 0,0,7393,7394,7,15,0,0,7394,7395,7,11,0,0,7395,7396,7,6,0,0,7396, + 1126,1,0,0,0,7397,7398,7,25,0,0,7398,7399,7,8,0,0,7399,7400,7,19, + 0,0,7400,7401,7,18,0,0,7401,7402,7,15,0,0,7402,7403,7,5,0,0,7403, + 7404,7,7,0,0,7404,1128,1,0,0,0,7405,7406,7,25,0,0,7406,7407,7,8, + 0,0,7407,7408,7,19,0,0,7408,7409,7,18,0,0,7409,7410,7,15,0,0,7410, + 7411,7,5,0,0,7411,7412,7,7,0,0,7412,7413,7,11,0,0,7413,1130,1,0, + 0,0,7414,7415,7,25,0,0,7415,7416,7,8,0,0,7416,7417,7,19,0,0,7417, + 7418,7,26,0,0,7418,7419,7,10,0,0,7419,1132,1,0,0,0,7420,7421,7,28, + 0,0,7421,7422,7,17,0,0,7422,7423,7,7,0,0,7423,7424,7,8,0,0,7424, + 7425,7,10,0,0,7425,1134,1,0,0,0,7426,7427,7,28,0,0,7427,7428,7,17, + 0,0,7428,7429,7,15,0,0,7429,7430,7,14,0,0,7430,7431,7,21,0,0,7431, + 1136,1,0,0,0,7432,7433,7,8,0,0,7433,7434,7,7,0,0,7434,7435,7,16, + 0,0,7435,7436,7,17,0,0,7436,7437,7,15,0,0,7437,7438,7,5,0,0,7438, + 7439,7,4,0,0,7439,1138,1,0,0,0,7440,7441,7,8,0,0,7441,7442,7,7,0, + 0,7442,7443,7,14,0,0,7443,7444,7,19,0,0,7444,7445,7,24,0,0,7445, + 7446,7,7,0,0,7446,7447,7,8,0,0,7447,1140,1,0,0,0,7448,7449,7,8,0, + 0,7449,7450,7,7,0,0,7450,7451,7,14,0,0,7451,7452,7,17,0,0,7452,7453, + 7,8,0,0,7453,7454,7,11,0,0,7454,7455,7,15,0,0,7455,7456,7,24,0,0, + 7456,7457,7,7,0,0,7457,1142,1,0,0,0,7458,7459,7,8,0,0,7459,7460, + 7,7,0,0,7460,7461,7,4,0,0,7461,7462,7,19,0,0,7462,7463,5,95,0,0, + 7463,7464,7,16,0,0,7464,7465,7,17,0,0,7465,7466,7,18,0,0,7466,7467, + 7,18,0,0,7467,7468,7,7,0,0,7468,7469,7,8,0,0,7469,7470,5,95,0,0, + 7470,7471,7,11,0,0,7471,7472,7,15,0,0,7472,7473,7,13,0,0,7473,7474, + 7,7,0,0,7474,1144,1,0,0,0,7475,7476,7,8,0,0,7476,7477,7,7,0,0,7477, + 7478,7,4,0,0,7478,7479,7,17,0,0,7479,7480,7,12,0,0,7480,7481,7,4, + 0,0,7481,7482,7,3,0,0,7482,7483,7,12,0,0,7483,7484,7,6,0,0,7484, + 1146,1,0,0,0,7485,7486,7,8,0,0,7486,7487,7,7,0,0,7487,7488,7,5,0, + 0,7488,7489,7,3,0,0,7489,7490,7,10,0,0,7490,1148,1,0,0,0,7491,7492, + 7,8,0,0,7492,7493,7,7,0,0,7493,7494,7,5,0,0,7494,7495,7,3,0,0,7495, + 7496,7,10,0,0,7496,7497,5,95,0,0,7497,7498,7,5,0,0,7498,7499,7,19, + 0,0,7499,7500,7,22,0,0,7500,7501,5,95,0,0,7501,7502,7,18,0,0,7502, + 7503,7,15,0,0,7503,7504,7,5,0,0,7504,7505,7,7,0,0,7505,1150,1,0, + 0,0,7506,7507,7,8,0,0,7507,7508,7,7,0,0,7508,7509,7,5,0,0,7509,7510, + 7,3,0,0,7510,7511,7,10,0,0,7511,7512,5,95,0,0,7512,7513,7,5,0,0, + 7513,7514,7,19,0,0,7514,7515,7,22,0,0,7515,7516,5,95,0,0,7516,7517, + 7,25,0,0,7517,7518,7,19,0,0,7518,7519,7,11,0,0,7519,1152,1,0,0,0, + 7520,7521,7,8,0,0,7521,7522,7,7,0,0,7522,7523,7,5,0,0,7523,7524, + 7,3,0,0,7524,7525,7,10,0,0,7525,7526,7,5,0,0,7526,7527,7,19,0,0, + 7527,7528,7,22,0,0,7528,1154,1,0,0,0,7529,7530,7,8,0,0,7530,7531, + 7,7,0,0,7531,7532,7,23,0,0,7532,7533,7,19,0,0,7533,7534,7,24,0,0, + 7534,7535,7,7,0,0,7535,1156,1,0,0,0,7536,7537,7,8,0,0,7537,7538, + 7,7,0,0,7538,7539,7,19,0,0,7539,7540,7,8,0,0,7540,7541,7,22,0,0, + 7541,7542,7,3,0,0,7542,7543,7,12,0,0,7543,7544,7,15,0,0,7544,7545, + 7,13,0,0,7545,7546,7,7,0,0,7546,1158,1,0,0,0,7547,7548,7,8,0,0,7548, + 7549,7,7,0,0,7549,7550,7,25,0,0,7550,7551,7,3,0,0,7551,7552,7,15, + 0,0,7552,7553,7,8,0,0,7553,1160,1,0,0,0,7554,7555,7,8,0,0,7555,7556, + 7,7,0,0,7556,7557,7,25,0,0,7557,7558,7,5,0,0,7558,7559,7,15,0,0, + 7559,7560,7,14,0,0,7560,7561,7,3,0,0,7561,7562,7,6,0,0,7562,7563, + 7,7,0,0,7563,7564,5,95,0,0,7564,7565,7,4,0,0,7565,7566,7,19,0,0, + 7566,7567,5,95,0,0,7567,7568,7,4,0,0,7568,7569,7,16,0,0,7569,1162, + 1,0,0,0,7570,7571,7,8,0,0,7571,7572,7,7,0,0,7572,7573,7,25,0,0,7573, + 7574,7,5,0,0,7574,7575,7,15,0,0,7575,7576,7,14,0,0,7576,7577,7,3, + 0,0,7577,7578,7,6,0,0,7578,7579,7,7,0,0,7579,7580,5,95,0,0,7580, + 7581,7,4,0,0,7581,7582,7,19,0,0,7582,7583,5,95,0,0,7583,7584,7,6, + 0,0,7584,7585,7,3,0,0,7585,7586,7,16,0,0,7586,7587,7,5,0,0,7587, + 7588,7,7,0,0,7588,1164,1,0,0,0,7589,7590,7,8,0,0,7590,7591,7,7,0, + 0,7591,7592,7,25,0,0,7592,7593,7,5,0,0,7593,7594,7,15,0,0,7594,7595, + 7,14,0,0,7595,7596,7,3,0,0,7596,7597,7,6,0,0,7597,7598,7,7,0,0,7598, + 7599,5,95,0,0,7599,7600,7,15,0,0,7600,7601,7,22,0,0,7601,7602,7, + 12,0,0,7602,7603,7,19,0,0,7603,7604,7,8,0,0,7604,7605,7,7,0,0,7605, + 7606,5,95,0,0,7606,7607,7,4,0,0,7607,7608,7,16,0,0,7608,1166,1,0, + 0,0,7609,7610,7,8,0,0,7610,7611,7,7,0,0,7611,7612,7,25,0,0,7612, + 7613,7,5,0,0,7613,7614,7,15,0,0,7614,7615,7,14,0,0,7615,7616,7,3, + 0,0,7616,7617,7,6,0,0,7617,7618,7,7,0,0,7618,7619,5,95,0,0,7619, + 7620,7,15,0,0,7620,7621,7,22,0,0,7621,7622,7,12,0,0,7622,7623,7, + 19,0,0,7623,7624,7,8,0,0,7624,7625,7,7,0,0,7625,7626,5,95,0,0,7626, + 7627,7,6,0,0,7627,7628,7,3,0,0,7628,7629,7,16,0,0,7629,7630,7,5, + 0,0,7630,7631,7,7,0,0,7631,1168,1,0,0,0,7632,7633,7,8,0,0,7633,7634, + 7,7,0,0,7634,7635,7,25,0,0,7635,7636,7,5,0,0,7636,7637,7,15,0,0, + 7637,7638,7,14,0,0,7638,7639,7,3,0,0,7639,7640,7,6,0,0,7640,7641, + 7,7,0,0,7641,7642,5,95,0,0,7642,7643,7,8,0,0,7643,7644,7,7,0,0,7644, + 7645,7,9,0,0,7645,7646,7,8,0,0,7646,7647,7,15,0,0,7647,7648,7,6, + 0,0,7648,7649,7,7,0,0,7649,7650,5,95,0,0,7650,7651,7,4,0,0,7651, + 7652,7,16,0,0,7652,1170,1,0,0,0,7653,7654,7,8,0,0,7654,7655,7,7, + 0,0,7655,7656,7,25,0,0,7656,7657,7,5,0,0,7657,7658,7,15,0,0,7658, + 7659,7,14,0,0,7659,7660,7,3,0,0,7660,7661,7,6,0,0,7661,7662,7,7, + 0,0,7662,7663,5,95,0,0,7663,7664,7,9,0,0,7664,7665,7,15,0,0,7665, + 7666,7,5,0,0,7666,7667,7,4,0,0,7667,7668,5,95,0,0,7668,7669,7,4, + 0,0,7669,7670,7,19,0,0,7670,7671,5,95,0,0,7671,7672,7,6,0,0,7672, + 7673,7,3,0,0,7673,7674,7,16,0,0,7674,7675,7,5,0,0,7675,7676,7,7, + 0,0,7676,1172,1,0,0,0,7677,7678,7,8,0,0,7678,7679,7,7,0,0,7679,7680, + 7,25,0,0,7680,7681,7,5,0,0,7681,7682,7,15,0,0,7682,7683,7,14,0,0, + 7683,7684,7,3,0,0,7684,7685,7,6,0,0,7685,7686,7,7,0,0,7686,7687, + 5,95,0,0,7687,7688,7,9,0,0,7688,7689,7,15,0,0,7689,7690,7,5,0,0, + 7690,7691,7,4,0,0,7691,7692,5,95,0,0,7692,7693,7,15,0,0,7693,7694, + 7,22,0,0,7694,7695,7,12,0,0,7695,7696,7,19,0,0,7696,7697,7,8,0,0, + 7697,7698,7,7,0,0,7698,7699,5,95,0,0,7699,7700,7,6,0,0,7700,7701, + 7,3,0,0,7701,7702,7,16,0,0,7702,7703,7,5,0,0,7703,7704,7,7,0,0,7704, + 1174,1,0,0,0,7705,7706,7,8,0,0,7706,7707,7,7,0,0,7707,7708,7,25, + 0,0,7708,7709,7,5,0,0,7709,7710,7,15,0,0,7710,7711,7,14,0,0,7711, + 7712,7,3,0,0,7712,7713,7,6,0,0,7713,7714,7,15,0,0,7714,7715,7,19, + 0,0,7715,7716,7,12,0,0,7716,1176,1,0,0,0,7717,7718,7,8,0,0,7718, + 7719,7,7,0,0,7719,7720,7,11,0,0,7720,7721,7,7,0,0,7721,7722,7,6, + 0,0,7722,1178,1,0,0,0,7723,7724,7,8,0,0,7724,7725,7,7,0,0,7725,7726, + 7,11,0,0,7726,7727,7,6,0,0,7727,7728,7,3,0,0,7728,7729,7,8,0,0,7729, + 7730,7,6,0,0,7730,1180,1,0,0,0,7731,7732,7,8,0,0,7732,7733,7,7,0, + 0,7733,7734,7,11,0,0,7734,7735,7,17,0,0,7735,7736,7,23,0,0,7736, + 7737,7,7,0,0,7737,1182,1,0,0,0,7738,7739,7,8,0,0,7739,7740,7,7,0, + 0,7740,7741,7,6,0,0,7741,7742,7,17,0,0,7742,7743,7,8,0,0,7743,7744, + 7,12,0,0,7744,7745,7,7,0,0,7745,7746,7,4,0,0,7746,7747,5,95,0,0, + 7747,7748,7,11,0,0,7748,7749,7,28,0,0,7749,7750,7,5,0,0,7750,7751, + 7,11,0,0,7751,7752,7,6,0,0,7752,7753,7,3,0,0,7753,7754,7,6,0,0,7754, + 7755,7,7,0,0,7755,1184,1,0,0,0,7756,7757,7,8,0,0,7757,7758,7,7,0, + 0,7758,7759,7,6,0,0,7759,7760,7,17,0,0,7760,7761,7,8,0,0,7761,7762, + 7,12,0,0,7762,7763,7,15,0,0,7763,7764,7,12,0,0,7764,7765,7,22,0, + 0,7765,1186,1,0,0,0,7766,7767,7,8,0,0,7767,7768,7,7,0,0,7768,7769, + 7,6,0,0,7769,7770,7,17,0,0,7770,7771,7,8,0,0,7771,7772,7,12,0,0, + 7772,7773,7,11,0,0,7773,1188,1,0,0,0,7774,7775,7,8,0,0,7775,7776, + 7,7,0,0,7776,7777,7,17,0,0,7777,7778,7,11,0,0,7778,7779,7,7,0,0, + 7779,1190,1,0,0,0,7780,7781,7,8,0,0,7781,7782,7,19,0,0,7782,7783, + 7,5,0,0,7783,7784,7,7,0,0,7784,1192,1,0,0,0,7785,7786,7,8,0,0,7786, + 7787,7,19,0,0,7787,7788,7,5,0,0,7788,7789,7,5,0,0,7789,7790,7,16, + 0,0,7790,7791,7,3,0,0,7791,7792,7,14,0,0,7792,7793,7,21,0,0,7793, + 1194,1,0,0,0,7794,7795,7,8,0,0,7795,7796,7,19,0,0,7796,7797,7,5, + 0,0,7797,7798,7,5,0,0,7798,7799,7,17,0,0,7799,7800,7,25,0,0,7800, + 1196,1,0,0,0,7801,7802,7,8,0,0,7802,7803,7,19,0,0,7803,7804,7,6, + 0,0,7804,7805,7,3,0,0,7805,7806,7,6,0,0,7806,7807,7,7,0,0,7807,1198, + 1,0,0,0,7808,7809,7,8,0,0,7809,7810,7,19,0,0,7810,7811,7,9,0,0,7811, + 1200,1,0,0,0,7812,7813,7,8,0,0,7813,7814,7,19,0,0,7814,7815,7,9, + 0,0,7815,7816,7,11,0,0,7816,1202,1,0,0,0,7817,7818,7,8,0,0,7818, + 7819,7,19,0,0,7819,7820,7,9,0,0,7820,7821,5,95,0,0,7821,7822,7,18, + 0,0,7822,7823,7,19,0,0,7823,7824,7,8,0,0,7824,7825,7,23,0,0,7825, + 7826,7,3,0,0,7826,7827,7,6,0,0,7827,1204,1,0,0,0,7828,7829,7,8,0, + 0,7829,7830,7,6,0,0,7830,7831,7,8,0,0,7831,7832,7,7,0,0,7832,7833, + 7,7,0,0,7833,1206,1,0,0,0,7834,7835,7,11,0,0,7835,7836,7,3,0,0,7836, + 7837,7,24,0,0,7837,7838,7,7,0,0,7838,7839,7,25,0,0,7839,7840,7,19, + 0,0,7840,7841,7,15,0,0,7841,7842,7,12,0,0,7842,7843,7,6,0,0,7843, + 1208,1,0,0,0,7844,7845,7,11,0,0,7845,7846,7,14,0,0,7846,7847,7,20, + 0,0,7847,7848,7,7,0,0,7848,7849,7,4,0,0,7849,7850,7,17,0,0,7850, + 7851,7,5,0,0,7851,7852,7,7,0,0,7852,1210,1,0,0,0,7853,7854,7,11, + 0,0,7854,7855,7,7,0,0,7855,7856,7,14,0,0,7856,7857,7,17,0,0,7857, + 7858,7,8,0,0,7858,7859,7,15,0,0,7859,7860,7,6,0,0,7860,7861,7,10, + 0,0,7861,1212,1,0,0,0,7862,7863,7,11,0,0,7863,7864,7,7,0,0,7864, + 7865,7,28,0,0,7865,7866,7,17,0,0,7866,7867,7,7,0,0,7867,7868,7,12, + 0,0,7868,7869,7,14,0,0,7869,7870,7,7,0,0,7870,1214,1,0,0,0,7871, + 7872,7,11,0,0,7872,7873,7,7,0,0,7873,7874,7,8,0,0,7874,7875,7,24, + 0,0,7875,7876,7,7,0,0,7876,7877,7,8,0,0,7877,1216,1,0,0,0,7878,7879, + 7,11,0,0,7879,7880,7,7,0,0,7880,7881,7,11,0,0,7881,7882,7,11,0,0, + 7882,7883,7,15,0,0,7883,7884,7,19,0,0,7884,7885,7,12,0,0,7885,1218, + 1,0,0,0,7886,7887,7,11,0,0,7887,7888,7,20,0,0,7888,7889,7,3,0,0, + 7889,7890,7,8,0,0,7890,7891,7,7,0,0,7891,1220,1,0,0,0,7892,7893, + 7,11,0,0,7893,7894,7,20,0,0,7894,7895,7,3,0,0,7895,7896,7,8,0,0, + 7896,7897,7,7,0,0,7897,7898,7,4,0,0,7898,1222,1,0,0,0,7899,7900, + 7,11,0,0,7900,7901,7,15,0,0,7901,7902,7,22,0,0,7902,7903,7,12,0, + 0,7903,7904,7,7,0,0,7904,7905,7,4,0,0,7905,1224,1,0,0,0,7906,7907, + 7,11,0,0,7907,7908,7,15,0,0,7908,7909,7,23,0,0,7909,7910,7,25,0, + 0,7910,7911,7,5,0,0,7911,7912,7,7,0,0,7912,1226,1,0,0,0,7913,7914, + 7,11,0,0,7914,7915,7,5,0,0,7915,7916,7,3,0,0,7916,7917,7,24,0,0, + 7917,7918,7,7,0,0,7918,1228,1,0,0,0,7919,7920,7,11,0,0,7920,7921, + 7,5,0,0,7921,7922,7,19,0,0,7922,7923,7,9,0,0,7923,1230,1,0,0,0,7924, + 7925,7,11,0,0,7925,7926,7,12,0,0,7926,7927,7,3,0,0,7927,7928,7,25, + 0,0,7928,7929,7,11,0,0,7929,7930,7,20,0,0,7930,7931,7,19,0,0,7931, + 7932,7,6,0,0,7932,1232,1,0,0,0,7933,7934,7,11,0,0,7934,7935,7,19, + 0,0,7935,7936,7,14,0,0,7936,7937,7,21,0,0,7937,7938,7,7,0,0,7938, + 7939,7,6,0,0,7939,1234,1,0,0,0,7940,7941,7,11,0,0,7941,7942,7,19, + 0,0,7942,7943,7,23,0,0,7943,7944,7,7,0,0,7944,1236,1,0,0,0,7945, + 7946,7,11,0,0,7946,7947,7,19,0,0,7947,7948,7,12,0,0,7948,7949,7, + 3,0,0,7949,7950,7,23,0,0,7950,7951,7,7,0,0,7951,1238,1,0,0,0,7952, + 7953,7,11,0,0,7953,7954,7,19,0,0,7954,7955,7,17,0,0,7955,7956,7, + 12,0,0,7956,7957,7,4,0,0,7957,7958,7,11,0,0,7958,1240,1,0,0,0,7959, + 7960,7,11,0,0,7960,7961,7,19,0,0,7961,7962,7,17,0,0,7962,7963,7, + 8,0,0,7963,7964,7,14,0,0,7964,7965,7,7,0,0,7965,1242,1,0,0,0,7966, + 7967,7,11,0,0,7967,7968,7,28,0,0,7968,7969,7,5,0,0,7969,7970,5,95, + 0,0,7970,7971,7,3,0,0,7971,7972,7,18,0,0,7972,7973,7,6,0,0,7973, + 7974,7,7,0,0,7974,7975,7,8,0,0,7975,7976,5,95,0,0,7976,7977,7,22, + 0,0,7977,7978,7,6,0,0,7978,7979,7,15,0,0,7979,7980,7,4,0,0,7980, + 7981,7,11,0,0,7981,1244,1,0,0,0,7982,7983,7,11,0,0,7983,7984,7,28, + 0,0,7984,7985,7,5,0,0,7985,7986,5,95,0,0,7986,7987,7,3,0,0,7987, + 7988,7,18,0,0,7988,7989,7,6,0,0,7989,7990,7,7,0,0,7990,7991,7,8, + 0,0,7991,7992,5,95,0,0,7992,7993,7,23,0,0,7993,7994,7,6,0,0,7994, + 7995,7,11,0,0,7995,7996,5,95,0,0,7996,7997,7,22,0,0,7997,7998,7, + 3,0,0,7998,7999,7,25,0,0,7999,8000,7,11,0,0,8000,1246,1,0,0,0,8001, + 8002,7,11,0,0,8002,8003,7,28,0,0,8003,8004,7,5,0,0,8004,8005,5,95, + 0,0,8005,8006,7,16,0,0,8006,8007,7,7,0,0,8007,8008,7,18,0,0,8008, + 8009,7,19,0,0,8009,8010,7,8,0,0,8010,8011,7,7,0,0,8011,8012,5,95, + 0,0,8012,8013,7,22,0,0,8013,8014,7,6,0,0,8014,8015,7,15,0,0,8015, + 8016,7,4,0,0,8016,8017,7,11,0,0,8017,1248,1,0,0,0,8018,8019,7,11, + 0,0,8019,8020,7,28,0,0,8020,8021,7,5,0,0,8021,8022,5,95,0,0,8022, + 8023,7,16,0,0,8023,8024,7,17,0,0,8024,8025,7,18,0,0,8025,8026,7, + 18,0,0,8026,8027,7,7,0,0,8027,8028,7,8,0,0,8028,8029,5,95,0,0,8029, + 8030,7,8,0,0,8030,8031,7,7,0,0,8031,8032,7,11,0,0,8032,8033,7,17, + 0,0,8033,8034,7,5,0,0,8034,8035,7,6,0,0,8035,1250,1,0,0,0,8036,8037, + 7,11,0,0,8037,8038,7,28,0,0,8038,8039,7,5,0,0,8039,8040,5,95,0,0, + 8040,8041,7,14,0,0,8041,8042,7,3,0,0,8042,8043,7,14,0,0,8043,8044, + 7,20,0,0,8044,8045,7,7,0,0,8045,1252,1,0,0,0,8046,8047,7,11,0,0, + 8047,8048,7,28,0,0,8048,8049,7,5,0,0,8049,8050,5,95,0,0,8050,8051, + 7,12,0,0,8051,8052,7,19,0,0,8052,8053,5,95,0,0,8053,8054,7,14,0, + 0,8054,8055,7,3,0,0,8055,8056,7,14,0,0,8056,8057,7,20,0,0,8057,8058, + 7,7,0,0,8058,1254,1,0,0,0,8059,8060,7,11,0,0,8060,8061,7,28,0,0, + 8061,8062,7,5,0,0,8062,8063,5,95,0,0,8063,8064,7,6,0,0,8064,8065, + 7,20,0,0,8065,8066,7,8,0,0,8066,8067,7,7,0,0,8067,8068,7,3,0,0,8068, + 8069,7,4,0,0,8069,1256,1,0,0,0,8070,8071,7,11,0,0,8071,8072,7,6, + 0,0,8072,8073,7,3,0,0,8073,8074,7,8,0,0,8074,8075,7,6,0,0,8075,1258, + 1,0,0,0,8076,8077,7,11,0,0,8077,8078,7,6,0,0,8078,8079,7,3,0,0,8079, + 8080,7,8,0,0,8080,8081,7,6,0,0,8081,8082,7,11,0,0,8082,1260,1,0, + 0,0,8083,8084,7,11,0,0,8084,8085,7,6,0,0,8085,8086,7,3,0,0,8086, + 8087,7,6,0,0,8087,8088,7,11,0,0,8088,8089,5,95,0,0,8089,8090,7,3, + 0,0,8090,8091,7,17,0,0,8091,8092,7,6,0,0,8092,8093,7,19,0,0,8093, + 8094,5,95,0,0,8094,8095,7,8,0,0,8095,8096,7,7,0,0,8096,8097,7,14, + 0,0,8097,8098,7,3,0,0,8098,8099,7,5,0,0,8099,8100,7,14,0,0,8100, + 1262,1,0,0,0,8101,8102,7,11,0,0,8102,8103,7,6,0,0,8103,8104,7,3, + 0,0,8104,8105,7,6,0,0,8105,8106,7,11,0,0,8106,8107,5,95,0,0,8107, + 8108,7,25,0,0,8108,8109,7,7,0,0,8109,8110,7,8,0,0,8110,8111,7,11, + 0,0,8111,8112,7,15,0,0,8112,8113,7,11,0,0,8113,8114,7,6,0,0,8114, + 8115,7,7,0,0,8115,8116,7,12,0,0,8116,8117,7,6,0,0,8117,1264,1,0, + 0,0,8118,8119,7,11,0,0,8119,8120,7,6,0,0,8120,8121,7,3,0,0,8121, + 8122,7,6,0,0,8122,8123,7,11,0,0,8123,8124,5,95,0,0,8124,8125,7,11, + 0,0,8125,8126,7,3,0,0,8126,8127,7,23,0,0,8127,8128,7,25,0,0,8128, + 8129,7,5,0,0,8129,8130,7,7,0,0,8130,8131,5,95,0,0,8131,8132,7,25, + 0,0,8132,8133,7,3,0,0,8133,8134,7,22,0,0,8134,8135,7,7,0,0,8135, + 8136,7,11,0,0,8136,1266,1,0,0,0,8137,8138,7,11,0,0,8138,8139,7,6, + 0,0,8139,8140,7,3,0,0,8140,8141,7,6,0,0,8141,8142,7,17,0,0,8142, + 8143,7,11,0,0,8143,1268,1,0,0,0,8144,8145,7,11,0,0,8145,8146,7,6, + 0,0,8146,8147,7,19,0,0,8147,8148,7,25,0,0,8148,1270,1,0,0,0,8149, + 8150,7,11,0,0,8150,8151,7,6,0,0,8151,8152,7,19,0,0,8152,8153,7,8, + 0,0,8153,8154,7,3,0,0,8154,8155,7,22,0,0,8155,8156,7,7,0,0,8156, + 1272,1,0,0,0,8157,8158,7,11,0,0,8158,8159,7,6,0,0,8159,8160,7,19, + 0,0,8160,8161,7,8,0,0,8161,8162,7,7,0,0,8162,8163,7,4,0,0,8163,1274, + 1,0,0,0,8164,8165,7,11,0,0,8165,8166,7,6,0,0,8166,8167,7,8,0,0,8167, + 8168,7,15,0,0,8168,8169,7,12,0,0,8169,8170,7,22,0,0,8170,1276,1, + 0,0,0,8171,8172,7,11,0,0,8172,8173,7,17,0,0,8173,8174,7,16,0,0,8174, + 8175,7,14,0,0,8175,8176,7,5,0,0,8176,8177,7,3,0,0,8177,8178,7,11, + 0,0,8178,8179,7,11,0,0,8179,8180,5,95,0,0,8180,8181,7,19,0,0,8181, + 8182,7,8,0,0,8182,8183,7,15,0,0,8183,8184,7,22,0,0,8184,8185,7,15, + 0,0,8185,8186,7,12,0,0,8186,1278,1,0,0,0,8187,8188,7,11,0,0,8188, + 8189,7,17,0,0,8189,8190,7,16,0,0,8190,8191,7,27,0,0,8191,8192,7, + 7,0,0,8192,8193,7,14,0,0,8193,8194,7,6,0,0,8194,1280,1,0,0,0,8195, + 8196,7,11,0,0,8196,8197,7,17,0,0,8197,8198,7,16,0,0,8198,8199,7, + 25,0,0,8199,8200,7,3,0,0,8200,8201,7,8,0,0,8201,8202,7,6,0,0,8202, + 8203,7,15,0,0,8203,8204,7,6,0,0,8204,8205,7,15,0,0,8205,8206,7,19, + 0,0,8206,8207,7,12,0,0,8207,1282,1,0,0,0,8208,8209,7,11,0,0,8209, + 8210,7,17,0,0,8210,8211,7,16,0,0,8211,8212,7,25,0,0,8212,8213,7, + 3,0,0,8213,8214,7,8,0,0,8214,8215,7,6,0,0,8215,8216,7,15,0,0,8216, + 8217,7,6,0,0,8217,8218,7,15,0,0,8218,8219,7,19,0,0,8219,8220,7,12, + 0,0,8220,8221,7,11,0,0,8221,1284,1,0,0,0,8222,8223,7,11,0,0,8223, + 8224,7,17,0,0,8224,8225,7,11,0,0,8225,8226,7,25,0,0,8226,8227,7, + 7,0,0,8227,8228,7,12,0,0,8228,8229,7,4,0,0,8229,1286,1,0,0,0,8230, + 8231,7,11,0,0,8231,8232,7,9,0,0,8232,8233,7,3,0,0,8233,8234,7,25, + 0,0,8234,8235,7,11,0,0,8235,1288,1,0,0,0,8236,8237,7,11,0,0,8237, + 8238,7,9,0,0,8238,8239,7,15,0,0,8239,8240,7,6,0,0,8240,8241,7,14, + 0,0,8241,8242,7,20,0,0,8242,8243,7,7,0,0,8243,8244,7,11,0,0,8244, + 1290,1,0,0,0,8245,8246,7,6,0,0,8246,8247,7,3,0,0,8247,8248,7,16, + 0,0,8248,8249,7,5,0,0,8249,8250,7,7,0,0,8250,8251,5,95,0,0,8251, + 8252,7,12,0,0,8252,8253,7,3,0,0,8253,8254,7,23,0,0,8254,8255,7,7, + 0,0,8255,1292,1,0,0,0,8256,8257,7,6,0,0,8257,8258,7,3,0,0,8258,8259, + 7,16,0,0,8259,8260,7,5,0,0,8260,8261,7,7,0,0,8261,8262,7,11,0,0, + 8262,8263,7,25,0,0,8263,8264,7,3,0,0,8264,8265,7,14,0,0,8265,8266, + 7,7,0,0,8266,1294,1,0,0,0,8267,8268,7,6,0,0,8268,8269,7,3,0,0,8269, + 8270,7,16,0,0,8270,8271,7,5,0,0,8271,8272,7,7,0,0,8272,8273,5,95, + 0,0,8273,8274,7,6,0,0,8274,8275,7,10,0,0,8275,8276,7,25,0,0,8276, + 8277,7,7,0,0,8277,1296,1,0,0,0,8278,8279,7,6,0,0,8279,8280,7,7,0, + 0,8280,8281,7,23,0,0,8281,8282,7,25,0,0,8282,8283,7,19,0,0,8283, + 8284,7,8,0,0,8284,8285,7,3,0,0,8285,8286,7,8,0,0,8286,8287,7,10, + 0,0,8287,1298,1,0,0,0,8288,8289,7,6,0,0,8289,8290,7,7,0,0,8290,8291, + 7,23,0,0,8291,8292,7,25,0,0,8292,8293,7,6,0,0,8293,8294,7,3,0,0, + 8294,8295,7,16,0,0,8295,8296,7,5,0,0,8296,8297,7,7,0,0,8297,1300, + 1,0,0,0,8298,8299,7,6,0,0,8299,8300,7,20,0,0,8300,8301,7,3,0,0,8301, + 8302,7,12,0,0,8302,1302,1,0,0,0,8303,8304,7,6,0,0,8304,8305,7,8, + 0,0,8305,8306,7,3,0,0,8306,8307,7,4,0,0,8307,8308,7,15,0,0,8308, + 8309,7,6,0,0,8309,8310,7,15,0,0,8310,8311,7,19,0,0,8311,8312,7,12, + 0,0,8312,8313,7,3,0,0,8313,8314,7,5,0,0,8314,1304,1,0,0,0,8315,8316, + 7,6,0,0,8316,8317,7,8,0,0,8317,8318,7,3,0,0,8318,8319,7,12,0,0,8319, + 8320,7,11,0,0,8320,8321,7,3,0,0,8321,8322,7,14,0,0,8322,8323,7,6, + 0,0,8323,8324,7,15,0,0,8324,8325,7,19,0,0,8325,8326,7,12,0,0,8326, + 1306,1,0,0,0,8327,8328,7,6,0,0,8328,8329,7,8,0,0,8329,8330,7,3,0, + 0,8330,8331,7,12,0,0,8331,8332,7,11,0,0,8332,8333,7,3,0,0,8333,8334, + 7,14,0,0,8334,8335,7,6,0,0,8335,8336,7,15,0,0,8336,8337,7,19,0,0, + 8337,8338,7,12,0,0,8338,8339,7,3,0,0,8339,8340,7,5,0,0,8340,1308, + 1,0,0,0,8341,8342,7,6,0,0,8342,8343,7,8,0,0,8343,8344,7,15,0,0,8344, + 8345,7,22,0,0,8345,8346,7,22,0,0,8346,8347,7,7,0,0,8347,8348,7,8, + 0,0,8348,8349,7,11,0,0,8349,1310,1,0,0,0,8350,8351,7,6,0,0,8351, + 8352,7,8,0,0,8352,8353,7,17,0,0,8353,8354,7,12,0,0,8354,8355,7,14, + 0,0,8355,8356,7,3,0,0,8356,8357,7,6,0,0,8357,8358,7,7,0,0,8358,1312, + 1,0,0,0,8359,8360,7,17,0,0,8360,8361,7,12,0,0,8361,8362,7,16,0,0, + 8362,8363,7,19,0,0,8363,8364,7,17,0,0,8364,8365,7,12,0,0,8365,8366, + 7,4,0,0,8366,8367,7,7,0,0,8367,8368,7,4,0,0,8368,1314,1,0,0,0,8369, + 8370,7,17,0,0,8370,8371,7,12,0,0,8371,8372,7,4,0,0,8372,8373,7,7, + 0,0,8373,8374,7,18,0,0,8374,8375,7,15,0,0,8375,8376,7,12,0,0,8376, + 8377,7,7,0,0,8377,8378,7,4,0,0,8378,1316,1,0,0,0,8379,8380,7,17, + 0,0,8380,8381,7,12,0,0,8381,8382,7,4,0,0,8382,8383,7,19,0,0,8383, + 8384,7,18,0,0,8384,8385,7,15,0,0,8385,8386,7,5,0,0,8386,8387,7,7, + 0,0,8387,1318,1,0,0,0,8388,8389,7,17,0,0,8389,8390,7,12,0,0,8390, + 8391,7,4,0,0,8391,8392,7,19,0,0,8392,8393,5,95,0,0,8393,8394,7,16, + 0,0,8394,8395,7,17,0,0,8395,8396,7,18,0,0,8396,8397,7,18,0,0,8397, + 8398,7,7,0,0,8398,8399,7,8,0,0,8399,8400,5,95,0,0,8400,8401,7,11, + 0,0,8401,8402,7,15,0,0,8402,8403,7,13,0,0,8403,8404,7,7,0,0,8404, + 1320,1,0,0,0,8405,8406,7,17,0,0,8406,8407,7,12,0,0,8407,8408,7,15, + 0,0,8408,8409,7,12,0,0,8409,8410,7,11,0,0,8410,8411,7,6,0,0,8411, + 8412,7,3,0,0,8412,8413,7,5,0,0,8413,8414,7,5,0,0,8414,1322,1,0,0, + 0,8415,8416,7,17,0,0,8416,8417,7,12,0,0,8417,8418,7,21,0,0,8418, + 8419,7,12,0,0,8419,8420,7,19,0,0,8420,8421,7,9,0,0,8421,8422,7,12, + 0,0,8422,1324,1,0,0,0,8423,8424,7,17,0,0,8424,8425,7,12,0,0,8425, + 8426,7,6,0,0,8426,8427,7,15,0,0,8427,8428,7,5,0,0,8428,1326,1,0, + 0,0,8429,8430,7,17,0,0,8430,8431,7,25,0,0,8431,8432,7,22,0,0,8432, + 8433,7,8,0,0,8433,8434,7,3,0,0,8434,8435,7,4,0,0,8435,8436,7,7,0, + 0,8436,1328,1,0,0,0,8437,8438,7,17,0,0,8438,8439,7,11,0,0,8439,8440, + 7,7,0,0,8440,8441,7,8,0,0,8441,1330,1,0,0,0,8442,8443,7,17,0,0,8443, + 8444,7,11,0,0,8444,8445,7,7,0,0,8445,8446,5,95,0,0,8446,8447,7,18, + 0,0,8447,8448,7,8,0,0,8448,8449,7,23,0,0,8449,1332,1,0,0,0,8450, + 8451,7,17,0,0,8451,8452,7,11,0,0,8452,8453,7,7,0,0,8453,8454,7,8, + 0,0,8454,8455,5,95,0,0,8455,8456,7,8,0,0,8456,8457,7,7,0,0,8457, + 8458,7,11,0,0,8458,8459,7,19,0,0,8459,8460,7,17,0,0,8460,8461,7, + 8,0,0,8461,8462,7,14,0,0,8462,8463,7,7,0,0,8463,8464,7,11,0,0,8464, + 1334,1,0,0,0,8465,8466,7,24,0,0,8466,8467,7,3,0,0,8467,8468,7,5, + 0,0,8468,8469,7,15,0,0,8469,8470,7,4,0,0,8470,8471,7,3,0,0,8471, + 8472,7,6,0,0,8472,8473,7,15,0,0,8473,8474,7,19,0,0,8474,8475,7,12, + 0,0,8475,1336,1,0,0,0,8476,8477,7,24,0,0,8477,8478,7,3,0,0,8478, + 8479,7,5,0,0,8479,8480,7,17,0,0,8480,8481,7,7,0,0,8481,1338,1,0, + 0,0,8482,8483,7,24,0,0,8483,8484,7,3,0,0,8484,8485,7,8,0,0,8485, + 8486,7,15,0,0,8486,8487,7,3,0,0,8487,8488,7,16,0,0,8488,8489,7,5, + 0,0,8489,8490,7,7,0,0,8490,8491,7,11,0,0,8491,1340,1,0,0,0,8492, + 8493,7,24,0,0,8493,8494,7,15,0,0,8494,8495,7,7,0,0,8495,8496,7,9, + 0,0,8496,1342,1,0,0,0,8497,8498,7,24,0,0,8498,8499,7,15,0,0,8499, + 8500,7,8,0,0,8500,8501,7,6,0,0,8501,8502,7,17,0,0,8502,8503,7,3, + 0,0,8503,8504,7,5,0,0,8504,1344,1,0,0,0,8505,8506,7,24,0,0,8506, + 8507,7,15,0,0,8507,8508,7,11,0,0,8508,8509,7,15,0,0,8509,8510,7, + 16,0,0,8510,8511,7,5,0,0,8511,8512,7,7,0,0,8512,1346,1,0,0,0,8513, + 8514,7,9,0,0,8514,8515,7,3,0,0,8515,8516,7,15,0,0,8516,8517,7,6, + 0,0,8517,1348,1,0,0,0,8518,8519,7,9,0,0,8519,8520,7,3,0,0,8520,8521, + 7,8,0,0,8521,8522,7,12,0,0,8522,8523,7,15,0,0,8523,8524,7,12,0,0, + 8524,8525,7,22,0,0,8525,8526,7,11,0,0,8526,1350,1,0,0,0,8527,8528, + 7,9,0,0,8528,8529,7,15,0,0,8529,8530,7,12,0,0,8530,8531,7,4,0,0, + 8531,8532,7,19,0,0,8532,8533,7,9,0,0,8533,1352,1,0,0,0,8534,8535, + 7,9,0,0,8535,8536,7,15,0,0,8536,8537,7,6,0,0,8537,8538,7,20,0,0, + 8538,8539,7,19,0,0,8539,8540,7,17,0,0,8540,8541,7,6,0,0,8541,1354, + 1,0,0,0,8542,8543,7,9,0,0,8543,8544,7,19,0,0,8544,8545,7,8,0,0,8545, + 8546,7,21,0,0,8546,1356,1,0,0,0,8547,8548,7,9,0,0,8548,8549,7,8, + 0,0,8549,8550,7,3,0,0,8550,8551,7,25,0,0,8551,8552,7,25,0,0,8552, + 8553,7,7,0,0,8553,8554,7,8,0,0,8554,1358,1,0,0,0,8555,8556,7,26, + 0,0,8556,8557,5,53,0,0,8557,8558,5,48,0,0,8558,8559,5,57,0,0,8559, + 1360,1,0,0,0,8560,8561,7,26,0,0,8561,8562,7,3,0,0,8562,1362,1,0, + 0,0,8563,8564,7,26,0,0,8564,8565,7,23,0,0,8565,8566,7,5,0,0,8566, + 1364,1,0,0,0,8567,8568,7,10,0,0,8568,8569,7,7,0,0,8569,8570,7,11, + 0,0,8570,1366,1,0,0,0,8571,8572,7,7,0,0,8572,8573,7,17,0,0,8573, + 8574,7,8,0,0,8574,1368,1,0,0,0,8575,8576,7,17,0,0,8576,8577,7,11, + 0,0,8577,8578,7,3,0,0,8578,1370,1,0,0,0,8579,8580,7,27,0,0,8580, + 8581,7,15,0,0,8581,8582,7,11,0,0,8582,1372,1,0,0,0,8583,8584,7,15, + 0,0,8584,8585,7,11,0,0,8585,8586,7,19,0,0,8586,1374,1,0,0,0,8587, + 8588,7,15,0,0,8588,8589,7,12,0,0,8589,8590,7,6,0,0,8590,8591,7,7, + 0,0,8591,8592,7,8,0,0,8592,8593,7,12,0,0,8593,8594,7,3,0,0,8594, + 8595,7,5,0,0,8595,1376,1,0,0,0,8596,8597,7,28,0,0,8597,8598,7,17, + 0,0,8598,8599,7,3,0,0,8599,8600,7,8,0,0,8600,8601,7,6,0,0,8601,8602, + 7,7,0,0,8602,8603,7,8,0,0,8603,1378,1,0,0,0,8604,8605,7,23,0,0,8605, + 8606,7,19,0,0,8606,8607,7,12,0,0,8607,8608,7,6,0,0,8608,8609,7,20, + 0,0,8609,1380,1,0,0,0,8610,8611,7,4,0,0,8611,8612,7,3,0,0,8612,8613, + 7,10,0,0,8613,1382,1,0,0,0,8614,8615,7,20,0,0,8615,8616,7,19,0,0, + 8616,8617,7,17,0,0,8617,8618,7,8,0,0,8618,1384,1,0,0,0,8619,8620, + 7,23,0,0,8620,8621,7,15,0,0,8621,8622,7,12,0,0,8622,8623,7,17,0, + 0,8623,8624,7,6,0,0,8624,8625,7,7,0,0,8625,1386,1,0,0,0,8626,8627, + 7,9,0,0,8627,8628,7,7,0,0,8628,8629,7,7,0,0,8629,8630,7,21,0,0,8630, + 1388,1,0,0,0,8631,8632,7,11,0,0,8632,8633,7,7,0,0,8633,8634,7,14, + 0,0,8634,8635,7,19,0,0,8635,8636,7,12,0,0,8636,8637,7,4,0,0,8637, + 1390,1,0,0,0,8638,8639,7,23,0,0,8639,8640,7,15,0,0,8640,8641,7,14, + 0,0,8641,8642,7,8,0,0,8642,8643,7,19,0,0,8643,8644,7,11,0,0,8644, + 8645,7,7,0,0,8645,8646,7,14,0,0,8646,8647,7,19,0,0,8647,8648,7,12, + 0,0,8648,8649,7,4,0,0,8649,1392,1,0,0,0,8650,8651,7,3,0,0,8651,8652, + 7,4,0,0,8652,8653,7,23,0,0,8653,8654,7,15,0,0,8654,8655,7,12,0,0, + 8655,1394,1,0,0,0,8656,8657,7,3,0,0,8657,8658,7,25,0,0,8658,8659, + 7,25,0,0,8659,8660,7,5,0,0,8660,8661,7,15,0,0,8661,8662,7,14,0,0, + 8662,8663,7,3,0,0,8663,8664,7,6,0,0,8664,8665,7,15,0,0,8665,8666, + 7,19,0,0,8666,8667,7,12,0,0,8667,8668,5,95,0,0,8668,8669,7,25,0, + 0,8669,8670,7,3,0,0,8670,8671,7,11,0,0,8671,8672,7,11,0,0,8672,8673, + 7,9,0,0,8673,8674,7,19,0,0,8674,8675,7,8,0,0,8675,8676,7,4,0,0,8676, + 8677,5,95,0,0,8677,8678,7,3,0,0,8678,8679,7,4,0,0,8679,8680,7,23, + 0,0,8680,8681,7,15,0,0,8681,8682,7,12,0,0,8682,1396,1,0,0,0,8683, + 8684,7,3,0,0,8684,8685,7,17,0,0,8685,8686,7,4,0,0,8686,8687,7,15, + 0,0,8687,8688,7,6,0,0,8688,8689,5,95,0,0,8689,8690,7,3,0,0,8690, + 8691,7,16,0,0,8691,8692,7,19,0,0,8692,8693,7,8,0,0,8693,8694,7,6, + 0,0,8694,8695,5,95,0,0,8695,8696,7,7,0,0,8696,8697,7,26,0,0,8697, + 8698,7,7,0,0,8698,8699,7,23,0,0,8699,8700,7,25,0,0,8700,8701,7,6, + 0,0,8701,1398,1,0,0,0,8702,8703,7,3,0,0,8703,8704,7,17,0,0,8704, + 8705,7,4,0,0,8705,8706,7,15,0,0,8706,8707,7,6,0,0,8707,8708,5,95, + 0,0,8708,8709,7,3,0,0,8709,8710,7,4,0,0,8710,8711,7,23,0,0,8711, + 8712,7,15,0,0,8712,8713,7,12,0,0,8713,1400,1,0,0,0,8714,8715,7,3, + 0,0,8715,8716,7,17,0,0,8716,8717,7,6,0,0,8717,8718,7,20,0,0,8718, + 8719,7,7,0,0,8719,8720,7,12,0,0,8720,8721,7,6,0,0,8721,8722,7,15, + 0,0,8722,8723,7,14,0,0,8723,8724,7,3,0,0,8724,8725,7,6,0,0,8725, + 8726,7,15,0,0,8726,8727,7,19,0,0,8727,8728,7,12,0,0,8728,8729,5, + 95,0,0,8729,8730,7,25,0,0,8730,8731,7,19,0,0,8731,8732,7,5,0,0,8732, + 8733,7,15,0,0,8733,8734,7,14,0,0,8734,8735,7,10,0,0,8735,8736,5, + 95,0,0,8736,8737,7,3,0,0,8737,8738,7,4,0,0,8738,8739,7,23,0,0,8739, + 8740,7,15,0,0,8740,8741,7,12,0,0,8741,1402,1,0,0,0,8742,8743,7,16, + 0,0,8743,8744,7,3,0,0,8744,8745,7,14,0,0,8745,8746,7,21,0,0,8746, + 8747,7,17,0,0,8747,8748,7,25,0,0,8748,8749,5,95,0,0,8749,8750,7, + 3,0,0,8750,8751,7,4,0,0,8751,8752,7,23,0,0,8752,8753,7,15,0,0,8753, + 8754,7,12,0,0,8754,1404,1,0,0,0,8755,8756,7,16,0,0,8756,8757,7,15, + 0,0,8757,8758,7,12,0,0,8758,8759,7,5,0,0,8759,8760,7,19,0,0,8760, + 8761,7,22,0,0,8761,8762,5,95,0,0,8762,8763,7,3,0,0,8763,8764,7,4, + 0,0,8764,8765,7,23,0,0,8765,8766,7,15,0,0,8766,8767,7,12,0,0,8767, + 1406,1,0,0,0,8768,8769,7,16,0,0,8769,8770,7,15,0,0,8770,8771,7,12, + 0,0,8771,8772,7,5,0,0,8772,8773,7,19,0,0,8773,8774,7,22,0,0,8774, + 8775,5,95,0,0,8775,8776,7,7,0,0,8776,8777,7,12,0,0,8777,8778,7,14, + 0,0,8778,8779,7,8,0,0,8779,8780,7,10,0,0,8780,8781,7,25,0,0,8781, + 8782,7,6,0,0,8782,8783,7,15,0,0,8783,8784,7,19,0,0,8784,8785,7,12, + 0,0,8785,8786,5,95,0,0,8786,8787,7,3,0,0,8787,8788,7,4,0,0,8788, + 8789,7,23,0,0,8789,8790,7,15,0,0,8790,8791,7,12,0,0,8791,1408,1, + 0,0,0,8792,8793,7,14,0,0,8793,8794,7,5,0,0,8794,8795,7,19,0,0,8795, + 8796,7,12,0,0,8796,8797,7,7,0,0,8797,8798,5,95,0,0,8798,8799,7,3, + 0,0,8799,8800,7,4,0,0,8800,8801,7,23,0,0,8801,8802,7,15,0,0,8802, + 8803,7,12,0,0,8803,1410,1,0,0,0,8804,8805,7,14,0,0,8805,8806,7,19, + 0,0,8806,8807,7,12,0,0,8807,8808,7,12,0,0,8808,8809,7,7,0,0,8809, + 8810,7,14,0,0,8810,8811,7,6,0,0,8811,8812,7,15,0,0,8812,8813,7,19, + 0,0,8813,8814,7,12,0,0,8814,8815,5,95,0,0,8815,8816,7,3,0,0,8816, + 8817,7,4,0,0,8817,8818,7,23,0,0,8818,8819,7,15,0,0,8819,8820,7,12, + 0,0,8820,1412,1,0,0,0,8821,8822,7,7,0,0,8822,8823,7,12,0,0,8823, + 8824,7,14,0,0,8824,8825,7,8,0,0,8825,8826,7,10,0,0,8826,8827,7,25, + 0,0,8827,8828,7,6,0,0,8828,8829,7,15,0,0,8829,8830,7,19,0,0,8830, + 8831,7,12,0,0,8831,8832,5,95,0,0,8832,8833,7,21,0,0,8833,8834,7, + 7,0,0,8834,8835,7,10,0,0,8835,8836,5,95,0,0,8836,8837,7,3,0,0,8837, + 8838,7,4,0,0,8838,8839,7,23,0,0,8839,8840,7,15,0,0,8840,8841,7,12, + 0,0,8841,1414,1,0,0,0,8842,8843,7,7,0,0,8843,8844,7,26,0,0,8844, + 8845,7,7,0,0,8845,8846,7,14,0,0,8846,8847,7,17,0,0,8847,8848,7,6, + 0,0,8848,8849,7,7,0,0,8849,1416,1,0,0,0,8850,8851,7,18,0,0,8851, + 8852,7,15,0,0,8852,8853,7,5,0,0,8853,8854,7,7,0,0,8854,1418,1,0, + 0,0,8855,8856,7,18,0,0,8856,8857,7,15,0,0,8857,8858,7,8,0,0,8858, + 8859,7,7,0,0,8859,8860,7,9,0,0,8860,8861,7,3,0,0,8861,8862,7,5,0, + 0,8862,8863,7,5,0,0,8863,8864,5,95,0,0,8864,8865,7,3,0,0,8865,8866, + 7,4,0,0,8866,8867,7,23,0,0,8867,8868,7,15,0,0,8868,8869,7,12,0,0, + 8869,1420,1,0,0,0,8870,8871,7,18,0,0,8871,8872,7,15,0,0,8872,8873, + 7,8,0,0,8873,8874,7,7,0,0,8874,8875,7,9,0,0,8875,8876,7,3,0,0,8876, + 8877,7,5,0,0,8877,8878,7,5,0,0,8878,8879,5,95,0,0,8879,8880,7,7, + 0,0,8880,8881,7,26,0,0,8881,8882,7,7,0,0,8882,8883,7,23,0,0,8883, + 8884,7,25,0,0,8884,8885,7,6,0,0,8885,1422,1,0,0,0,8886,8887,7,18, + 0,0,8887,8888,7,15,0,0,8888,8889,7,8,0,0,8889,8890,7,7,0,0,8890, + 8891,7,9,0,0,8891,8892,7,3,0,0,8892,8893,7,5,0,0,8893,8894,7,5,0, + 0,8894,8895,5,95,0,0,8895,8896,7,17,0,0,8896,8897,7,11,0,0,8897, + 8898,7,7,0,0,8898,8899,7,8,0,0,8899,1424,1,0,0,0,8900,8901,7,18, + 0,0,8901,8902,7,5,0,0,8902,8903,7,17,0,0,8903,8904,7,11,0,0,8904, + 8905,7,20,0,0,8905,8906,5,95,0,0,8906,8907,7,19,0,0,8907,8908,7, + 25,0,0,8908,8909,7,6,0,0,8909,8910,7,15,0,0,8910,8911,7,23,0,0,8911, + 8912,7,15,0,0,8912,8913,7,13,0,0,8913,8914,7,7,0,0,8914,8915,7,8, + 0,0,8915,8916,5,95,0,0,8916,8917,7,14,0,0,8917,8918,7,19,0,0,8918, + 8919,7,11,0,0,8919,8920,7,6,0,0,8920,8921,7,11,0,0,8921,1426,1,0, + 0,0,8922,8923,7,18,0,0,8923,8924,7,5,0,0,8924,8925,7,17,0,0,8925, + 8926,7,11,0,0,8926,8927,7,20,0,0,8927,8928,5,95,0,0,8928,8929,7, + 11,0,0,8929,8930,7,6,0,0,8930,8931,7,3,0,0,8931,8932,7,6,0,0,8932, + 8933,7,17,0,0,8933,8934,7,11,0,0,8934,1428,1,0,0,0,8935,8936,7,18, + 0,0,8936,8937,7,5,0,0,8937,8938,7,17,0,0,8938,8939,7,11,0,0,8939, + 8940,7,20,0,0,8940,8941,5,95,0,0,8941,8942,7,6,0,0,8942,8943,7,3, + 0,0,8943,8944,7,16,0,0,8944,8945,7,5,0,0,8945,8946,7,7,0,0,8946, + 8947,7,11,0,0,8947,1430,1,0,0,0,8948,8949,7,18,0,0,8949,8950,7,5, + 0,0,8950,8951,7,17,0,0,8951,8952,7,11,0,0,8952,8953,7,20,0,0,8953, + 8954,5,95,0,0,8954,8955,7,17,0,0,8955,8956,7,11,0,0,8956,8957,7, + 7,0,0,8957,8958,7,8,0,0,8958,8959,5,95,0,0,8959,8960,7,8,0,0,8960, + 8961,7,7,0,0,8961,8962,7,11,0,0,8962,8963,7,19,0,0,8963,8964,7,17, + 0,0,8964,8965,7,8,0,0,8965,8966,7,14,0,0,8966,8967,7,7,0,0,8967, + 8968,7,11,0,0,8968,1432,1,0,0,0,8969,8970,7,22,0,0,8970,8971,7,8, + 0,0,8971,8972,7,19,0,0,8972,8973,7,17,0,0,8973,8974,7,25,0,0,8974, + 8975,5,95,0,0,8975,8976,7,8,0,0,8976,8977,7,7,0,0,8977,8978,7,25, + 0,0,8978,8979,7,5,0,0,8979,8980,7,15,0,0,8980,8981,7,14,0,0,8981, + 8982,7,3,0,0,8982,8983,7,6,0,0,8983,8984,7,15,0,0,8984,8985,7,19, + 0,0,8985,8986,7,12,0,0,8986,8987,5,95,0,0,8987,8988,7,3,0,0,8988, + 8989,7,4,0,0,8989,8990,7,23,0,0,8990,8991,7,15,0,0,8991,8992,7,12, + 0,0,8992,1434,1,0,0,0,8993,8994,7,15,0,0,8994,8995,7,12,0,0,8995, + 8996,7,12,0,0,8996,8997,7,19,0,0,8997,8998,7,4,0,0,8998,8999,7,16, + 0,0,8999,9000,5,95,0,0,9000,9001,7,8,0,0,9001,9002,7,7,0,0,9002, + 9003,7,4,0,0,9003,9004,7,19,0,0,9004,9005,5,95,0,0,9005,9006,7,5, + 0,0,9006,9007,7,19,0,0,9007,9008,7,22,0,0,9008,9009,5,95,0,0,9009, + 9010,7,3,0,0,9010,9011,7,8,0,0,9011,9012,7,14,0,0,9012,9013,7,20, + 0,0,9013,9014,7,15,0,0,9014,9015,7,24,0,0,9015,9016,7,7,0,0,9016, + 1436,1,0,0,0,9017,9018,7,15,0,0,9018,9019,7,12,0,0,9019,9020,7,12, + 0,0,9020,9021,7,19,0,0,9021,9022,7,4,0,0,9022,9023,7,16,0,0,9023, + 9024,5,95,0,0,9024,9025,7,8,0,0,9025,9026,7,7,0,0,9026,9027,7,4, + 0,0,9027,9028,7,19,0,0,9028,9029,5,95,0,0,9029,9030,7,5,0,0,9030, + 9031,7,19,0,0,9031,9032,7,22,0,0,9032,9033,5,95,0,0,9033,9034,7, + 7,0,0,9034,9035,7,12,0,0,9035,9036,7,3,0,0,9036,9037,7,16,0,0,9037, + 9038,7,5,0,0,9038,9039,7,7,0,0,9039,1438,1,0,0,0,9040,9041,7,15, + 0,0,9041,9042,7,12,0,0,9042,9043,7,24,0,0,9043,9044,7,19,0,0,9044, + 9045,7,21,0,0,9045,9046,7,7,0,0,9046,1440,1,0,0,0,9047,9048,7,5, + 0,0,9048,9049,7,3,0,0,9049,9050,7,23,0,0,9050,9051,7,16,0,0,9051, + 9052,7,4,0,0,9052,9053,7,3,0,0,9053,1442,1,0,0,0,9054,9055,7,12, + 0,0,9055,9056,7,4,0,0,9056,9057,7,16,0,0,9057,9058,5,95,0,0,9058, + 9059,7,11,0,0,9059,9060,7,6,0,0,9060,9061,7,19,0,0,9061,9062,7,8, + 0,0,9062,9063,7,7,0,0,9063,9064,7,4,0,0,9064,9065,5,95,0,0,9065, + 9066,7,17,0,0,9066,9067,7,11,0,0,9067,9068,7,7,0,0,9068,9069,7,8, + 0,0,9069,1444,1,0,0,0,9070,9071,7,25,0,0,9071,9072,7,3,0,0,9072, + 9073,7,11,0,0,9073,9074,7,11,0,0,9074,9075,7,9,0,0,9075,9076,7,19, + 0,0,9076,9077,7,8,0,0,9077,9078,7,4,0,0,9078,9079,7,5,0,0,9079,9080, + 7,7,0,0,9080,9081,7,11,0,0,9081,9082,7,11,0,0,9082,9083,5,95,0,0, + 9083,9084,7,17,0,0,9084,9085,7,11,0,0,9085,9086,7,7,0,0,9086,9087, + 7,8,0,0,9087,9088,5,95,0,0,9088,9089,7,3,0,0,9089,9090,7,4,0,0,9090, + 9091,7,23,0,0,9091,9092,7,15,0,0,9092,9093,7,12,0,0,9093,1446,1, + 0,0,0,9094,9095,7,25,0,0,9095,9096,7,7,0,0,9096,9097,7,8,0,0,9097, + 9098,7,11,0,0,9098,9099,7,15,0,0,9099,9100,7,11,0,0,9100,9101,7, + 6,0,0,9101,9102,5,95,0,0,9102,9103,7,8,0,0,9103,9104,7,19,0,0,9104, + 9105,5,95,0,0,9105,9106,7,24,0,0,9106,9107,7,3,0,0,9107,9108,7,8, + 0,0,9108,9109,7,15,0,0,9109,9110,7,3,0,0,9110,9111,7,16,0,0,9111, + 9112,7,5,0,0,9112,9113,7,7,0,0,9113,9114,7,11,0,0,9114,9115,5,95, + 0,0,9115,9116,7,3,0,0,9116,9117,7,4,0,0,9117,9118,7,23,0,0,9118, + 9119,7,15,0,0,9119,9120,7,12,0,0,9120,1448,1,0,0,0,9121,9122,7,25, + 0,0,9122,9123,7,8,0,0,9123,9124,7,15,0,0,9124,9125,7,24,0,0,9125, + 9126,7,15,0,0,9126,9127,7,5,0,0,9127,9128,7,7,0,0,9128,9129,7,22, + 0,0,9129,9130,7,7,0,0,9130,9131,7,11,0,0,9131,1450,1,0,0,0,9132, + 9133,7,25,0,0,9133,9134,7,8,0,0,9134,9135,7,19,0,0,9135,9136,7,14, + 0,0,9136,9137,7,7,0,0,9137,9138,7,11,0,0,9138,9139,7,11,0,0,9139, + 1452,1,0,0,0,9140,9141,7,8,0,0,9141,9142,7,7,0,0,9142,9143,7,5,0, + 0,9143,9144,7,19,0,0,9144,9145,7,3,0,0,9145,9146,7,4,0,0,9146,1454, + 1,0,0,0,9147,9148,7,8,0,0,9148,9149,7,7,0,0,9149,9150,7,25,0,0,9150, + 9151,7,5,0,0,9151,9152,7,15,0,0,9152,9153,7,14,0,0,9153,9154,7,3, + 0,0,9154,9155,7,6,0,0,9155,9156,7,15,0,0,9156,9157,7,19,0,0,9157, + 9158,7,12,0,0,9158,9159,5,95,0,0,9159,9160,7,3,0,0,9160,9161,7,25, + 0,0,9161,9162,7,25,0,0,9162,9163,7,5,0,0,9163,9164,7,15,0,0,9164, + 9165,7,7,0,0,9165,9166,7,8,0,0,9166,1456,1,0,0,0,9167,9168,7,8,0, + 0,9168,9169,7,7,0,0,9169,9170,7,25,0,0,9170,9171,7,5,0,0,9171,9172, + 7,15,0,0,9172,9173,7,14,0,0,9173,9174,7,3,0,0,9174,9175,7,6,0,0, + 9175,9176,7,15,0,0,9176,9177,7,19,0,0,9177,9178,7,12,0,0,9178,9179, + 5,95,0,0,9179,9180,7,11,0,0,9180,9181,7,5,0,0,9181,9182,7,3,0,0, + 9182,9183,7,24,0,0,9183,9184,7,7,0,0,9184,9185,5,95,0,0,9185,9186, + 7,3,0,0,9186,9187,7,4,0,0,9187,9188,7,23,0,0,9188,9189,7,15,0,0, + 9189,9190,7,12,0,0,9190,1458,1,0,0,0,9191,9192,7,8,0,0,9192,9193, + 7,7,0,0,9193,9194,7,11,0,0,9194,9195,7,19,0,0,9195,9196,7,17,0,0, + 9196,9197,7,8,0,0,9197,9198,7,14,0,0,9198,9199,7,7,0,0,9199,9200, + 5,95,0,0,9200,9201,7,22,0,0,9201,9202,7,8,0,0,9202,9203,7,19,0,0, + 9203,9204,7,17,0,0,9204,9205,7,25,0,0,9205,9206,5,95,0,0,9206,9207, + 7,3,0,0,9207,9208,7,4,0,0,9208,9209,7,23,0,0,9209,9210,7,15,0,0, + 9210,9211,7,12,0,0,9211,1460,1,0,0,0,9212,9213,7,8,0,0,9213,9214, + 7,7,0,0,9214,9215,7,11,0,0,9215,9216,7,19,0,0,9216,9217,7,17,0,0, + 9217,9218,7,8,0,0,9218,9219,7,14,0,0,9219,9220,7,7,0,0,9220,9221, + 5,95,0,0,9221,9222,7,22,0,0,9222,9223,7,8,0,0,9223,9224,7,19,0,0, + 9224,9225,7,17,0,0,9225,9226,7,25,0,0,9226,9227,5,95,0,0,9227,9228, + 7,17,0,0,9228,9229,7,11,0,0,9229,9230,7,7,0,0,9230,9231,7,8,0,0, + 9231,1462,1,0,0,0,9232,9233,7,8,0,0,9233,9234,7,19,0,0,9234,9235, + 7,5,0,0,9235,9236,7,7,0,0,9236,9237,5,95,0,0,9237,9238,7,3,0,0,9238, + 9239,7,4,0,0,9239,9240,7,23,0,0,9240,9241,7,15,0,0,9241,9242,7,12, + 0,0,9242,1464,1,0,0,0,9243,9244,7,8,0,0,9244,9245,7,19,0,0,9245, + 9246,7,17,0,0,9246,9247,7,6,0,0,9247,9248,7,15,0,0,9248,9249,7,12, + 0,0,9249,9250,7,7,0,0,9250,1466,1,0,0,0,9251,9252,7,11,0,0,9252, + 9253,5,51,0,0,9253,1468,1,0,0,0,9254,9255,7,11,0,0,9255,9256,7,7, + 0,0,9256,9257,7,8,0,0,9257,9258,7,24,0,0,9258,9259,7,15,0,0,9259, + 9260,7,14,0,0,9260,9261,7,7,0,0,9261,9262,5,95,0,0,9262,9263,7,14, + 0,0,9263,9264,7,19,0,0,9264,9265,7,12,0,0,9265,9266,7,12,0,0,9266, + 9267,7,7,0,0,9267,9268,7,14,0,0,9268,9269,7,6,0,0,9269,9270,7,15, + 0,0,9270,9271,7,19,0,0,9271,9272,7,12,0,0,9272,9273,5,95,0,0,9273, + 9274,7,3,0,0,9274,9275,7,4,0,0,9275,9276,7,23,0,0,9276,9277,7,15, + 0,0,9277,9278,7,12,0,0,9278,1470,1,0,0,0,9279,9281,3,2289,1144,0, + 9280,9279,1,0,0,0,9280,9281,1,0,0,0,9281,9282,1,0,0,0,9282,9283, + 7,11,0,0,9283,9284,7,7,0,0,9284,9285,7,11,0,0,9285,9286,7,11,0,0, + 9286,9287,7,15,0,0,9287,9288,7,19,0,0,9288,9289,7,12,0,0,9289,9290, + 5,95,0,0,9290,9291,7,24,0,0,9291,9292,7,3,0,0,9292,9293,7,8,0,0, + 9293,9294,7,15,0,0,9294,9295,7,3,0,0,9295,9296,7,16,0,0,9296,9297, + 7,5,0,0,9297,9298,7,7,0,0,9298,9299,7,11,0,0,9299,9300,5,95,0,0, + 9300,9301,7,3,0,0,9301,9302,7,4,0,0,9302,9303,7,23,0,0,9303,9304, + 7,15,0,0,9304,9305,7,12,0,0,9305,9307,1,0,0,0,9306,9308,3,2289,1144, + 0,9307,9306,1,0,0,0,9307,9308,1,0,0,0,9308,1472,1,0,0,0,9309,9310, + 7,11,0,0,9310,9311,7,7,0,0,9311,9312,7,6,0,0,9312,9313,5,95,0,0, + 9313,9314,7,17,0,0,9314,9315,7,11,0,0,9315,9316,7,7,0,0,9316,9317, + 7,8,0,0,9317,9318,5,95,0,0,9318,9319,7,15,0,0,9319,9320,7,4,0,0, + 9320,1474,1,0,0,0,9321,9322,7,11,0,0,9322,9323,7,20,0,0,9323,9324, + 7,19,0,0,9324,9325,7,9,0,0,9325,9326,5,95,0,0,9326,9327,7,8,0,0, + 9327,9328,7,19,0,0,9328,9329,7,17,0,0,9329,9330,7,6,0,0,9330,9331, + 7,15,0,0,9331,9332,7,12,0,0,9332,9333,7,7,0,0,9333,1476,1,0,0,0, + 9334,9335,7,11,0,0,9335,9336,7,20,0,0,9336,9337,7,17,0,0,9337,9338, + 7,6,0,0,9338,9339,7,4,0,0,9339,9340,7,19,0,0,9340,9341,7,9,0,0,9341, + 9342,7,12,0,0,9342,1478,1,0,0,0,9343,9344,7,11,0,0,9344,9345,7,17, + 0,0,9345,9346,7,25,0,0,9346,9347,7,7,0,0,9347,9348,7,8,0,0,9348, + 1480,1,0,0,0,9349,9350,7,11,0,0,9350,9351,7,10,0,0,9351,9352,7,11, + 0,0,9352,9353,7,6,0,0,9353,9354,7,7,0,0,9354,9355,7,23,0,0,9355, + 9356,5,95,0,0,9356,9357,7,24,0,0,9357,9358,7,3,0,0,9358,9359,7,8, + 0,0,9359,9360,7,15,0,0,9360,9361,7,3,0,0,9361,9362,7,16,0,0,9362, + 9363,7,5,0,0,9363,9364,7,7,0,0,9364,9365,7,11,0,0,9365,9366,5,95, + 0,0,9366,9367,7,3,0,0,9367,9368,7,4,0,0,9368,9369,7,23,0,0,9369, + 9370,7,15,0,0,9370,9371,7,12,0,0,9371,1482,1,0,0,0,9372,9373,7,6, + 0,0,9373,9374,7,3,0,0,9374,9375,7,16,0,0,9375,9376,7,5,0,0,9376, + 9377,7,7,0,0,9377,9378,7,11,0,0,9378,1484,1,0,0,0,9379,9380,7,6, + 0,0,9380,9381,7,3,0,0,9381,9382,7,16,0,0,9382,9383,7,5,0,0,9383, + 9384,7,7,0,0,9384,9385,5,95,0,0,9385,9386,7,7,0,0,9386,9387,7,12, + 0,0,9387,9388,7,14,0,0,9388,9389,7,8,0,0,9389,9390,7,10,0,0,9390, + 9391,7,25,0,0,9391,9392,7,6,0,0,9392,9393,7,15,0,0,9393,9394,7,19, + 0,0,9394,9395,7,12,0,0,9395,9396,5,95,0,0,9396,9397,7,3,0,0,9397, + 9398,7,4,0,0,9398,9399,7,23,0,0,9399,9400,7,15,0,0,9400,9401,7,12, + 0,0,9401,1486,1,0,0,0,9402,9403,7,24,0,0,9403,9404,7,7,0,0,9404, + 9405,7,8,0,0,9405,9406,7,11,0,0,9406,9407,7,15,0,0,9407,9408,7,19, + 0,0,9408,9409,7,12,0,0,9409,9410,5,95,0,0,9410,9411,7,6,0,0,9411, + 9412,7,19,0,0,9412,9413,7,21,0,0,9413,9414,7,7,0,0,9414,9415,7,12, + 0,0,9415,9416,5,95,0,0,9416,9417,7,3,0,0,9417,9418,7,4,0,0,9418, + 9419,7,23,0,0,9419,9420,7,15,0,0,9420,9421,7,12,0,0,9421,1488,1, + 0,0,0,9422,9423,7,26,0,0,9423,9424,7,3,0,0,9424,9425,5,95,0,0,9425, + 9426,7,8,0,0,9426,9427,7,7,0,0,9427,9428,7,14,0,0,9428,9429,7,19, + 0,0,9429,9430,7,24,0,0,9430,9431,7,7,0,0,9431,9432,7,8,0,0,9432, + 9433,5,95,0,0,9433,9434,7,3,0,0,9434,9435,7,4,0,0,9435,9436,7,23, + 0,0,9436,9437,7,15,0,0,9437,9438,7,12,0,0,9438,1490,1,0,0,0,9439, + 9440,7,3,0,0,9440,9441,7,8,0,0,9441,9442,7,23,0,0,9442,9443,7,11, + 0,0,9443,9444,7,14,0,0,9444,9445,7,15,0,0,9445,9446,7,15,0,0,9446, + 9447,5,56,0,0,9447,1492,1,0,0,0,9448,9449,7,3,0,0,9449,9450,7,11, + 0,0,9450,9451,7,14,0,0,9451,9452,7,15,0,0,9452,9453,7,15,0,0,9453, + 1494,1,0,0,0,9454,9455,7,16,0,0,9455,9456,7,15,0,0,9456,9457,7,22, + 0,0,9457,9458,5,53,0,0,9458,1496,1,0,0,0,9459,9460,7,14,0,0,9460, + 9461,7,25,0,0,9461,9462,5,49,0,0,9462,9463,5,50,0,0,9463,9464,5, + 53,0,0,9464,9465,5,48,0,0,9465,1498,1,0,0,0,9466,9467,7,14,0,0,9467, + 9468,7,25,0,0,9468,9469,5,49,0,0,9469,9470,5,50,0,0,9470,9471,5, + 53,0,0,9471,9472,5,49,0,0,9472,1500,1,0,0,0,9473,9474,7,14,0,0,9474, + 9475,7,25,0,0,9475,9476,5,49,0,0,9476,9477,5,50,0,0,9477,9478,5, + 53,0,0,9478,9479,5,54,0,0,9479,1502,1,0,0,0,9480,9481,7,14,0,0,9481, + 9482,7,25,0,0,9482,9483,5,49,0,0,9483,9484,5,50,0,0,9484,9485,5, + 53,0,0,9485,9486,5,55,0,0,9486,1504,1,0,0,0,9487,9488,7,14,0,0,9488, + 9489,7,25,0,0,9489,9490,5,56,0,0,9490,9491,5,53,0,0,9491,9492,5, + 48,0,0,9492,1506,1,0,0,0,9493,9494,7,14,0,0,9494,9495,7,25,0,0,9495, + 9496,5,56,0,0,9496,9497,5,53,0,0,9497,9498,5,50,0,0,9498,1508,1, + 0,0,0,9499,9500,7,14,0,0,9500,9501,7,25,0,0,9501,9502,5,56,0,0,9502, + 9503,5,54,0,0,9503,9504,5,54,0,0,9504,1510,1,0,0,0,9505,9506,7,14, + 0,0,9506,9507,7,25,0,0,9507,9508,5,57,0,0,9508,9509,5,51,0,0,9509, + 9510,5,50,0,0,9510,1512,1,0,0,0,9511,9512,7,4,0,0,9512,9513,7,7, + 0,0,9513,9514,7,14,0,0,9514,9515,5,56,0,0,9515,1514,1,0,0,0,9516, + 9517,7,7,0,0,9517,9518,7,17,0,0,9518,9519,7,14,0,0,9519,9520,7,27, + 0,0,9520,9521,7,25,0,0,9521,9522,7,23,0,0,9522,9523,7,11,0,0,9523, + 1516,1,0,0,0,9524,9525,7,7,0,0,9525,9526,7,17,0,0,9526,9527,7,14, + 0,0,9527,9528,7,21,0,0,9528,9529,7,8,0,0,9529,1518,1,0,0,0,9530, + 9531,7,22,0,0,9531,9532,7,16,0,0,9532,9533,5,49,0,0,9533,9534,5, + 56,0,0,9534,9535,5,48,0,0,9535,9536,5,51,0,0,9536,9537,5,48,0,0, + 9537,1520,1,0,0,0,9538,9539,7,22,0,0,9539,9540,7,16,0,0,9540,9541, + 5,50,0,0,9541,9542,5,51,0,0,9542,9543,5,49,0,0,9543,9544,5,50,0, + 0,9544,1522,1,0,0,0,9545,9546,7,22,0,0,9546,9547,7,16,0,0,9547,9548, + 7,21,0,0,9548,1524,1,0,0,0,9549,9550,7,22,0,0,9550,9551,7,7,0,0, + 9551,9552,7,19,0,0,9552,9553,7,11,0,0,9553,9554,7,6,0,0,9554,9555, + 7,4,0,0,9555,9556,5,56,0,0,9556,1526,1,0,0,0,9557,9558,7,22,0,0, + 9558,9559,7,8,0,0,9559,9560,7,7,0,0,9560,9561,7,7,0,0,9561,9562, + 7,21,0,0,9562,1528,1,0,0,0,9563,9564,7,20,0,0,9564,9565,7,7,0,0, + 9565,9566,7,16,0,0,9566,9567,7,8,0,0,9567,9568,7,7,0,0,9568,9569, + 7,9,0,0,9569,1530,1,0,0,0,9570,9571,7,20,0,0,9571,9572,7,25,0,0, + 9572,9573,5,56,0,0,9573,1532,1,0,0,0,9574,9575,7,21,0,0,9575,9576, + 7,7,0,0,9576,9577,7,10,0,0,9577,9578,7,16,0,0,9578,9579,7,14,0,0, + 9579,9580,7,11,0,0,9580,9581,5,50,0,0,9581,1534,1,0,0,0,9582,9583, + 7,21,0,0,9583,9584,7,19,0,0,9584,9585,7,15,0,0,9585,9586,5,56,0, + 0,9586,9587,7,8,0,0,9587,1536,1,0,0,0,9588,9589,7,21,0,0,9589,9590, + 7,19,0,0,9590,9591,7,15,0,0,9591,9592,5,56,0,0,9592,9593,7,17,0, + 0,9593,1538,1,0,0,0,9594,9595,7,5,0,0,9595,9596,7,3,0,0,9596,9597, + 7,6,0,0,9597,9598,7,15,0,0,9598,9599,7,12,0,0,9599,9600,5,49,0,0, + 9600,1540,1,0,0,0,9601,9602,7,5,0,0,9602,9603,7,3,0,0,9603,9604, + 7,6,0,0,9604,9605,7,15,0,0,9605,9606,7,12,0,0,9606,9607,5,50,0,0, + 9607,1542,1,0,0,0,9608,9609,7,5,0,0,9609,9610,7,3,0,0,9610,9611, + 7,6,0,0,9611,9612,7,15,0,0,9612,9613,7,12,0,0,9613,9614,5,53,0,0, + 9614,1544,1,0,0,0,9615,9616,7,5,0,0,9616,9617,7,3,0,0,9617,9618, + 7,6,0,0,9618,9619,7,15,0,0,9619,9620,7,12,0,0,9620,9621,5,55,0,0, + 9621,1546,1,0,0,0,9622,9623,7,23,0,0,9623,9624,7,3,0,0,9624,9625, + 7,14,0,0,9625,9626,7,14,0,0,9626,9627,7,7,0,0,9627,1548,1,0,0,0, + 9628,9629,7,23,0,0,9629,9630,7,3,0,0,9630,9631,7,14,0,0,9631,9632, + 7,8,0,0,9632,9633,7,19,0,0,9633,9634,7,23,0,0,9634,9635,7,3,0,0, + 9635,9636,7,12,0,0,9636,1550,1,0,0,0,9637,9638,7,11,0,0,9638,9639, + 7,27,0,0,9639,9640,7,15,0,0,9640,9641,7,11,0,0,9641,1552,1,0,0,0, + 9642,9643,7,11,0,0,9643,9644,7,9,0,0,9644,9645,7,7,0,0,9645,9646, + 5,55,0,0,9646,1554,1,0,0,0,9647,9648,7,6,0,0,9648,9649,7,15,0,0, + 9649,9650,7,11,0,0,9650,9651,5,54,0,0,9651,9652,5,50,0,0,9652,9653, + 5,48,0,0,9653,1556,1,0,0,0,9654,9655,7,17,0,0,9655,9656,7,14,0,0, + 9656,9657,7,11,0,0,9657,9658,5,50,0,0,9658,1558,1,0,0,0,9659,9660, + 7,17,0,0,9660,9661,7,27,0,0,9661,9662,7,15,0,0,9662,9663,7,11,0, + 0,9663,1560,1,0,0,0,9664,9665,7,17,0,0,9665,9666,7,6,0,0,9666,9667, + 7,18,0,0,9667,9668,5,49,0,0,9668,9669,5,54,0,0,9669,1562,1,0,0,0, + 9670,9671,7,17,0,0,9671,9672,7,6,0,0,9672,9673,7,18,0,0,9673,9674, + 5,49,0,0,9674,9675,5,54,0,0,9675,9676,7,5,0,0,9676,9677,7,7,0,0, + 9677,1564,1,0,0,0,9678,9679,7,17,0,0,9679,9680,7,6,0,0,9680,9681, + 7,18,0,0,9681,9682,5,51,0,0,9682,9683,5,50,0,0,9683,1566,1,0,0,0, + 9684,9685,7,17,0,0,9685,9686,7,6,0,0,9686,9687,7,18,0,0,9687,9688, + 5,56,0,0,9688,1568,1,0,0,0,9689,9690,7,17,0,0,9690,9691,7,6,0,0, + 9691,9692,7,18,0,0,9692,9693,5,56,0,0,9693,9694,7,23,0,0,9694,9695, + 7,16,0,0,9695,9696,5,51,0,0,9696,1570,1,0,0,0,9697,9698,7,17,0,0, + 9698,9699,7,6,0,0,9699,9700,7,18,0,0,9700,9701,5,56,0,0,9701,9702, + 7,23,0,0,9702,9703,7,16,0,0,9703,9704,5,52,0,0,9704,1572,1,0,0,0, + 9705,9706,7,3,0,0,9706,9707,7,8,0,0,9707,9708,7,14,0,0,9708,9709, + 7,20,0,0,9709,9710,7,15,0,0,9710,9711,7,24,0,0,9711,9712,7,7,0,0, + 9712,1574,1,0,0,0,9713,9714,7,16,0,0,9714,9715,7,5,0,0,9715,9716, + 7,3,0,0,9716,9717,7,14,0,0,9717,9718,7,21,0,0,9718,9719,7,20,0,0, + 9719,9720,7,19,0,0,9720,9721,7,5,0,0,9721,9722,7,7,0,0,9722,1576, + 1,0,0,0,9723,9724,7,14,0,0,9724,9725,7,11,0,0,9725,9726,7,24,0,0, + 9726,1578,1,0,0,0,9727,9728,7,18,0,0,9728,9729,7,7,0,0,9729,9730, + 7,4,0,0,9730,9731,7,7,0,0,9731,9732,7,8,0,0,9732,9733,7,3,0,0,9733, + 9734,7,6,0,0,9734,9735,7,7,0,0,9735,9736,7,4,0,0,9736,1580,1,0,0, + 0,9737,9738,7,15,0,0,9738,9739,7,12,0,0,9739,9740,7,12,0,0,9740, + 9741,7,19,0,0,9741,9742,7,4,0,0,9742,9743,7,16,0,0,9743,1582,1,0, + 0,0,9744,9745,7,23,0,0,9745,9746,7,7,0,0,9746,9747,7,23,0,0,9747, + 9748,7,19,0,0,9748,9749,7,8,0,0,9749,9750,7,10,0,0,9750,1584,1,0, + 0,0,9751,9752,7,23,0,0,9752,9753,7,8,0,0,9753,9754,7,22,0,0,9754, + 9755,5,95,0,0,9755,9756,7,23,0,0,9756,9757,7,10,0,0,9757,9758,7, + 15,0,0,9758,9759,7,11,0,0,9759,9760,7,3,0,0,9760,9761,7,23,0,0,9761, + 1586,1,0,0,0,9762,9763,7,23,0,0,9763,9764,7,10,0,0,9764,9765,7,15, + 0,0,9765,9766,7,11,0,0,9766,9767,7,3,0,0,9767,9768,7,23,0,0,9768, + 1588,1,0,0,0,9769,9770,7,12,0,0,9770,9771,7,4,0,0,9771,9772,7,16, + 0,0,9772,1590,1,0,0,0,9773,9774,7,12,0,0,9774,9775,7,4,0,0,9775, + 9776,7,16,0,0,9776,9777,7,14,0,0,9777,9778,7,5,0,0,9778,9779,7,17, + 0,0,9779,9780,7,11,0,0,9780,9781,7,6,0,0,9781,9782,7,7,0,0,9782, + 9783,7,8,0,0,9783,1592,1,0,0,0,9784,9785,7,25,0,0,9785,9786,7,7, + 0,0,9786,9787,7,8,0,0,9787,9788,7,18,0,0,9788,9789,7,19,0,0,9789, + 9790,7,8,0,0,9790,9791,7,23,0,0,9791,9792,7,3,0,0,9792,9793,7,12, + 0,0,9793,9794,7,14,0,0,9794,9795,7,7,0,0,9795,9796,5,95,0,0,9796, + 9797,7,11,0,0,9797,9798,7,14,0,0,9798,9799,7,20,0,0,9799,9800,7, + 7,0,0,9800,9801,7,23,0,0,9801,9802,7,3,0,0,9802,1594,1,0,0,0,9803, + 9804,7,6,0,0,9804,9805,7,19,0,0,9805,9806,7,21,0,0,9806,9807,7,17, + 0,0,9807,9808,7,4,0,0,9808,9809,7,16,0,0,9809,1596,1,0,0,0,9810, + 9811,7,8,0,0,9811,9812,7,7,0,0,9812,9813,7,25,0,0,9813,9814,7,7, + 0,0,9814,9815,7,3,0,0,9815,9816,7,6,0,0,9816,9817,7,3,0,0,9817,9818, + 7,16,0,0,9818,9819,7,5,0,0,9819,9820,7,7,0,0,9820,1598,1,0,0,0,9821, + 9822,7,14,0,0,9822,9823,7,19,0,0,9823,9824,7,23,0,0,9824,9825,7, + 23,0,0,9825,9826,7,15,0,0,9826,9827,7,6,0,0,9827,9828,7,6,0,0,9828, + 9829,7,7,0,0,9829,9830,7,4,0,0,9830,1600,1,0,0,0,9831,9832,7,17, + 0,0,9832,9833,7,12,0,0,9833,9834,7,14,0,0,9834,9835,7,19,0,0,9835, + 9836,7,23,0,0,9836,9837,7,23,0,0,9837,9838,7,15,0,0,9838,9839,7, + 6,0,0,9839,9840,7,6,0,0,9840,9841,7,7,0,0,9841,9842,7,4,0,0,9842, + 1602,1,0,0,0,9843,9844,7,11,0,0,9844,9845,7,7,0,0,9845,9846,7,8, + 0,0,9846,9847,7,15,0,0,9847,9848,7,3,0,0,9848,9849,7,5,0,0,9849, + 9850,7,15,0,0,9850,9851,7,13,0,0,9851,9852,7,3,0,0,9852,9853,7,16, + 0,0,9853,9854,7,5,0,0,9854,9855,7,7,0,0,9855,1604,1,0,0,0,9856,9857, + 7,22,0,0,9857,9858,7,7,0,0,9858,9859,7,19,0,0,9859,9860,7,23,0,0, + 9860,9861,7,7,0,0,9861,9862,7,6,0,0,9862,9863,7,8,0,0,9863,9864, + 7,10,0,0,9864,9865,7,14,0,0,9865,9866,7,19,0,0,9866,9867,7,5,0,0, + 9867,9868,7,5,0,0,9868,9869,7,7,0,0,9869,9870,7,14,0,0,9870,9871, + 7,6,0,0,9871,9872,7,15,0,0,9872,9873,7,19,0,0,9873,9874,7,12,0,0, + 9874,1606,1,0,0,0,9875,9876,7,22,0,0,9876,9877,7,7,0,0,9877,9878, + 7,19,0,0,9878,9879,7,23,0,0,9879,9880,7,14,0,0,9880,9881,7,19,0, + 0,9881,9882,7,5,0,0,9882,9883,7,5,0,0,9883,9884,7,7,0,0,9884,9885, + 7,14,0,0,9885,9886,7,6,0,0,9886,9887,7,15,0,0,9887,9888,7,19,0,0, + 9888,9889,7,12,0,0,9889,1608,1,0,0,0,9890,9891,7,22,0,0,9891,9892, + 7,7,0,0,9892,9893,7,19,0,0,9893,9894,7,23,0,0,9894,9895,7,7,0,0, + 9895,9896,7,6,0,0,9896,9897,7,8,0,0,9897,9898,7,10,0,0,9898,1610, + 1,0,0,0,9899,9900,7,5,0,0,9900,9901,7,15,0,0,9901,9902,7,12,0,0, + 9902,9903,7,7,0,0,9903,9904,7,11,0,0,9904,9905,7,6,0,0,9905,9906, + 7,8,0,0,9906,9907,7,15,0,0,9907,9908,7,12,0,0,9908,9909,7,22,0,0, + 9909,1612,1,0,0,0,9910,9911,7,23,0,0,9911,9912,7,17,0,0,9912,9913, + 7,5,0,0,9913,9914,7,6,0,0,9914,9915,7,15,0,0,9915,9916,7,5,0,0,9916, + 9917,7,15,0,0,9917,9918,7,12,0,0,9918,9919,7,7,0,0,9919,9920,7,11, + 0,0,9920,9921,7,6,0,0,9921,9922,7,8,0,0,9922,9923,7,15,0,0,9923, + 9924,7,12,0,0,9924,9925,7,22,0,0,9925,1614,1,0,0,0,9926,9927,7,23, + 0,0,9927,9928,7,17,0,0,9928,9929,7,5,0,0,9929,9930,7,6,0,0,9930, + 9931,7,15,0,0,9931,9932,7,25,0,0,9932,9933,7,19,0,0,9933,9934,7, + 15,0,0,9934,9935,7,12,0,0,9935,9936,7,6,0,0,9936,1616,1,0,0,0,9937, + 9938,7,23,0,0,9938,9939,7,17,0,0,9939,9940,7,5,0,0,9940,9941,7,6, + 0,0,9941,9942,7,15,0,0,9942,9943,7,25,0,0,9943,9944,7,19,0,0,9944, + 9945,7,5,0,0,9945,9946,7,10,0,0,9946,9947,7,22,0,0,9947,9948,7,19, + 0,0,9948,9949,7,12,0,0,9949,1618,1,0,0,0,9950,9951,7,25,0,0,9951, + 9952,7,19,0,0,9952,9953,7,15,0,0,9953,9954,7,12,0,0,9954,9955,7, + 6,0,0,9955,1620,1,0,0,0,9956,9957,7,25,0,0,9957,9958,7,19,0,0,9958, + 9959,7,5,0,0,9959,9960,7,10,0,0,9960,9961,7,22,0,0,9961,9962,7,19, + 0,0,9962,9963,7,12,0,0,9963,1622,1,0,0,0,9964,9965,7,3,0,0,9965, + 9966,7,16,0,0,9966,9967,7,11,0,0,9967,1624,1,0,0,0,9968,9969,7,3, + 0,0,9969,9970,7,14,0,0,9970,9971,7,19,0,0,9971,9972,7,11,0,0,9972, + 1626,1,0,0,0,9973,9974,7,3,0,0,9974,9975,7,4,0,0,9975,9976,7,4,0, + 0,9976,9977,7,4,0,0,9977,9978,7,3,0,0,9978,9979,7,6,0,0,9979,9980, + 7,7,0,0,9980,1628,1,0,0,0,9981,9982,7,3,0,0,9982,9983,7,4,0,0,9983, + 9984,7,4,0,0,9984,9985,7,6,0,0,9985,9986,7,15,0,0,9986,9987,7,23, + 0,0,9987,9988,7,7,0,0,9988,1630,1,0,0,0,9989,9990,7,3,0,0,9990,9991, + 7,7,0,0,9991,9992,7,11,0,0,9992,9993,5,95,0,0,9993,9994,7,4,0,0, + 9994,9995,7,7,0,0,9995,9996,7,14,0,0,9996,9997,7,8,0,0,9997,9998, + 7,10,0,0,9998,9999,7,25,0,0,9999,10000,7,6,0,0,10000,1632,1,0,0, + 0,10001,10002,7,3,0,0,10002,10003,7,7,0,0,10003,10004,7,11,0,0,10004, + 10005,5,95,0,0,10005,10006,7,7,0,0,10006,10007,7,12,0,0,10007,10008, + 7,14,0,0,10008,10009,7,8,0,0,10009,10010,7,10,0,0,10010,10011,7, + 25,0,0,10011,10012,7,6,0,0,10012,1634,1,0,0,0,10013,10014,7,3,0, + 0,10014,10015,7,8,0,0,10015,10016,7,7,0,0,10016,10017,7,3,0,0,10017, + 1636,1,0,0,0,10018,10019,7,3,0,0,10019,10020,7,11,0,0,10020,10021, + 7,16,0,0,10021,10022,7,15,0,0,10022,10023,7,12,0,0,10023,10024,7, + 3,0,0,10024,10025,7,8,0,0,10025,10026,7,10,0,0,10026,1638,1,0,0, + 0,10027,10028,7,3,0,0,10028,10029,7,11,0,0,10029,10030,7,15,0,0, + 10030,10031,7,12,0,0,10031,1640,1,0,0,0,10032,10033,7,3,0,0,10033, + 10034,7,11,0,0,10034,10035,7,6,0,0,10035,10036,7,7,0,0,10036,10037, + 7,26,0,0,10037,10038,7,6,0,0,10038,1642,1,0,0,0,10039,10040,7,3, + 0,0,10040,10041,7,11,0,0,10041,10042,7,9,0,0,10042,10043,7,21,0, + 0,10043,10044,7,16,0,0,10044,1644,1,0,0,0,10045,10046,7,3,0,0,10046, + 10047,7,11,0,0,10047,10048,7,9,0,0,10048,10049,7,21,0,0,10049,10050, + 7,6,0,0,10050,1646,1,0,0,0,10051,10052,7,3,0,0,10052,10053,7,11, + 0,0,10053,10054,7,10,0,0,10054,10055,7,23,0,0,10055,10056,7,23,0, + 0,10056,10057,7,7,0,0,10057,10058,7,6,0,0,10058,10059,7,8,0,0,10059, + 10060,7,15,0,0,10060,10061,7,14,0,0,10061,10062,5,95,0,0,10062,10063, + 7,4,0,0,10063,10064,7,7,0,0,10064,10065,7,14,0,0,10065,10066,7,8, + 0,0,10066,10067,7,10,0,0,10067,10068,7,25,0,0,10068,10069,7,6,0, + 0,10069,1648,1,0,0,0,10070,10071,7,3,0,0,10071,10072,7,11,0,0,10072, + 10073,7,10,0,0,10073,10074,7,23,0,0,10074,10075,7,23,0,0,10075,10076, + 7,7,0,0,10076,10077,7,6,0,0,10077,10078,7,8,0,0,10078,10079,7,15, + 0,0,10079,10080,7,14,0,0,10080,10081,5,95,0,0,10081,10082,7,4,0, + 0,10082,10083,7,7,0,0,10083,10084,7,8,0,0,10084,10085,7,15,0,0,10085, + 10086,7,24,0,0,10086,10087,7,7,0,0,10087,1650,1,0,0,0,10088,10089, + 7,3,0,0,10089,10090,7,11,0,0,10090,10091,7,10,0,0,10091,10092,7, + 23,0,0,10092,10093,7,23,0,0,10093,10094,7,7,0,0,10094,10095,7,6, + 0,0,10095,10096,7,8,0,0,10096,10097,7,15,0,0,10097,10098,7,14,0, + 0,10098,10099,5,95,0,0,10099,10100,7,7,0,0,10100,10101,7,12,0,0, + 10101,10102,7,14,0,0,10102,10103,7,8,0,0,10103,10104,7,10,0,0,10104, + 10105,7,25,0,0,10105,10106,7,6,0,0,10106,1652,1,0,0,0,10107,10108, + 7,3,0,0,10108,10109,7,11,0,0,10109,10110,7,10,0,0,10110,10111,7, + 23,0,0,10111,10112,7,23,0,0,10112,10113,7,7,0,0,10113,10114,7,6, + 0,0,10114,10115,7,8,0,0,10115,10116,7,15,0,0,10116,10117,7,14,0, + 0,10117,10118,5,95,0,0,10118,10119,7,11,0,0,10119,10120,7,15,0,0, + 10120,10121,7,22,0,0,10121,10122,7,12,0,0,10122,1654,1,0,0,0,10123, + 10124,7,3,0,0,10124,10125,7,11,0,0,10125,10126,7,10,0,0,10126,10127, + 7,23,0,0,10127,10128,7,23,0,0,10128,10129,7,7,0,0,10129,10130,7, + 6,0,0,10130,10131,7,8,0,0,10131,10132,7,15,0,0,10132,10133,7,14, + 0,0,10133,10134,5,95,0,0,10134,10135,7,24,0,0,10135,10136,7,7,0, + 0,10136,10137,7,8,0,0,10137,10138,7,15,0,0,10138,10139,7,18,0,0, + 10139,10140,7,10,0,0,10140,1656,1,0,0,0,10141,10142,7,3,0,0,10142, + 10143,7,6,0,0,10143,10144,7,3,0,0,10144,10145,7,12,0,0,10145,1658, + 1,0,0,0,10146,10147,7,3,0,0,10147,10148,7,6,0,0,10148,10149,7,3, + 0,0,10149,10150,7,12,0,0,10150,10151,5,50,0,0,10151,1660,1,0,0,0, + 10152,10153,7,16,0,0,10153,10154,7,7,0,0,10154,10155,7,12,0,0,10155, + 10156,7,14,0,0,10156,10157,7,20,0,0,10157,10158,7,23,0,0,10158,10159, + 7,3,0,0,10159,10160,7,8,0,0,10160,10161,7,21,0,0,10161,1662,1,0, + 0,0,10162,10163,7,16,0,0,10163,10164,7,15,0,0,10164,10165,7,12,0, + 0,10165,1664,1,0,0,0,10166,10167,7,16,0,0,10167,10168,7,15,0,0,10168, + 10169,7,6,0,0,10169,10170,5,95,0,0,10170,10171,7,14,0,0,10171,10172, + 7,19,0,0,10172,10173,7,17,0,0,10173,10174,7,12,0,0,10174,10175,7, + 6,0,0,10175,1666,1,0,0,0,10176,10177,7,16,0,0,10177,10178,7,15,0, + 0,10178,10179,7,6,0,0,10179,10180,5,95,0,0,10180,10181,7,5,0,0,10181, + 10182,7,7,0,0,10182,10183,7,12,0,0,10183,10184,7,22,0,0,10184,10185, + 7,6,0,0,10185,10186,7,20,0,0,10186,1668,1,0,0,0,10187,10188,7,16, + 0,0,10188,10189,7,17,0,0,10189,10190,7,18,0,0,10190,10191,7,18,0, + 0,10191,10192,7,7,0,0,10192,10193,7,8,0,0,10193,1670,1,0,0,0,10194, + 10195,7,14,0,0,10195,10196,7,3,0,0,10196,10197,7,6,0,0,10197,10198, + 7,3,0,0,10198,10199,7,5,0,0,10199,10200,7,19,0,0,10200,10201,7,22, + 0,0,10201,10202,5,95,0,0,10202,10203,7,12,0,0,10203,10204,7,3,0, + 0,10204,10205,7,23,0,0,10205,10206,7,7,0,0,10206,1672,1,0,0,0,10207, + 10208,7,14,0,0,10208,10209,7,7,0,0,10209,10210,7,15,0,0,10210,10211, + 7,5,0,0,10211,1674,1,0,0,0,10212,10213,7,14,0,0,10213,10214,7,7, + 0,0,10214,10215,7,15,0,0,10215,10216,7,5,0,0,10216,10217,7,15,0, + 0,10217,10218,7,12,0,0,10218,10219,7,22,0,0,10219,1676,1,0,0,0,10220, + 10221,7,14,0,0,10221,10222,7,7,0,0,10222,10223,7,12,0,0,10223,10224, + 7,6,0,0,10224,10225,7,8,0,0,10225,10226,7,19,0,0,10226,10227,7,15, + 0,0,10227,10228,7,4,0,0,10228,1678,1,0,0,0,10229,10230,7,14,0,0, + 10230,10231,7,20,0,0,10231,10232,7,3,0,0,10232,10233,7,8,0,0,10233, + 10234,7,3,0,0,10234,10235,7,14,0,0,10235,10236,7,6,0,0,10236,10237, + 7,7,0,0,10237,10238,7,8,0,0,10238,10239,5,95,0,0,10239,10240,7,5, + 0,0,10240,10241,7,7,0,0,10241,10242,7,12,0,0,10242,10243,7,22,0, + 0,10243,10244,7,6,0,0,10244,10245,7,20,0,0,10245,1680,1,0,0,0,10246, + 10247,7,14,0,0,10247,10248,7,20,0,0,10248,10249,7,3,0,0,10249,10250, + 7,8,0,0,10250,10251,7,11,0,0,10251,10252,7,7,0,0,10252,10253,7,6, + 0,0,10253,1682,1,0,0,0,10254,10255,7,14,0,0,10255,10256,7,20,0,0, + 10256,10257,7,3,0,0,10257,10258,7,8,0,0,10258,10259,5,95,0,0,10259, + 10260,7,5,0,0,10260,10261,7,7,0,0,10261,10262,7,12,0,0,10262,10263, + 7,22,0,0,10263,10264,7,6,0,0,10264,10265,7,20,0,0,10265,1684,1,0, + 0,0,10266,10267,7,14,0,0,10267,10268,7,19,0,0,10268,10269,7,7,0, + 0,10269,10270,7,8,0,0,10270,10271,7,14,0,0,10271,10272,7,15,0,0, + 10272,10273,7,16,0,0,10273,10274,7,15,0,0,10274,10275,7,5,0,0,10275, + 10276,7,15,0,0,10276,10277,7,6,0,0,10277,10278,7,10,0,0,10278,1686, + 1,0,0,0,10279,10280,7,14,0,0,10280,10281,7,19,0,0,10281,10282,7, + 5,0,0,10282,10283,7,5,0,0,10283,10284,7,3,0,0,10284,10285,7,6,0, + 0,10285,10286,7,15,0,0,10286,10287,7,19,0,0,10287,10288,7,12,0,0, + 10288,1688,1,0,0,0,10289,10290,7,14,0,0,10290,10291,7,19,0,0,10291, + 10292,7,23,0,0,10292,10293,7,25,0,0,10293,10294,7,8,0,0,10294,10295, + 7,7,0,0,10295,10296,7,11,0,0,10296,10297,7,11,0,0,10297,1690,1,0, + 0,0,10298,10299,7,14,0,0,10299,10300,7,19,0,0,10300,10301,7,12,0, + 0,10301,10302,7,14,0,0,10302,10303,7,3,0,0,10303,10304,7,6,0,0,10304, + 1692,1,0,0,0,10305,10306,7,14,0,0,10306,10307,7,19,0,0,10307,10308, + 7,12,0,0,10308,10309,7,14,0,0,10309,10310,7,3,0,0,10310,10311,7, + 6,0,0,10311,10312,5,95,0,0,10312,10313,7,9,0,0,10313,10314,7,11, + 0,0,10314,1694,1,0,0,0,10315,10316,7,14,0,0,10316,10317,7,19,0,0, + 10317,10318,7,12,0,0,10318,10319,7,12,0,0,10319,10320,7,7,0,0,10320, + 10321,7,14,0,0,10321,10322,7,6,0,0,10322,10323,7,15,0,0,10323,10324, + 7,19,0,0,10324,10325,7,12,0,0,10325,10326,5,95,0,0,10326,10327,7, + 15,0,0,10327,10328,7,4,0,0,10328,1696,1,0,0,0,10329,10330,7,14,0, + 0,10330,10331,7,19,0,0,10331,10332,7,12,0,0,10332,10333,7,24,0,0, + 10333,1698,1,0,0,0,10334,10335,7,14,0,0,10335,10336,7,19,0,0,10336, + 10337,7,12,0,0,10337,10338,7,24,0,0,10338,10339,7,7,0,0,10339,10340, + 7,8,0,0,10340,10341,7,6,0,0,10341,10342,5,95,0,0,10342,10343,7,6, + 0,0,10343,10344,7,13,0,0,10344,1700,1,0,0,0,10345,10346,7,14,0,0, + 10346,10347,7,19,0,0,10347,10348,7,11,0,0,10348,1702,1,0,0,0,10349, + 10350,7,14,0,0,10350,10351,7,19,0,0,10351,10352,7,6,0,0,10352,1704, + 1,0,0,0,10353,10354,7,14,0,0,10354,10355,7,8,0,0,10355,10356,7,14, + 0,0,10356,10357,5,51,0,0,10357,10358,5,50,0,0,10358,1706,1,0,0,0, + 10359,10360,7,14,0,0,10360,10361,7,8,0,0,10361,10362,7,7,0,0,10362, + 10363,7,3,0,0,10363,10364,7,6,0,0,10364,10365,7,7,0,0,10365,10366, + 5,95,0,0,10366,10367,7,3,0,0,10367,10368,7,11,0,0,10368,10369,7, + 10,0,0,10369,10370,7,23,0,0,10370,10371,7,23,0,0,10371,10372,7,7, + 0,0,10372,10373,7,6,0,0,10373,10374,7,8,0,0,10374,10375,7,15,0,0, + 10375,10376,7,14,0,0,10376,10377,5,95,0,0,10377,10378,7,25,0,0,10378, + 10379,7,8,0,0,10379,10380,7,15,0,0,10380,10381,7,24,0,0,10381,10382, + 5,95,0,0,10382,10383,7,21,0,0,10383,10384,7,7,0,0,10384,10385,7, + 10,0,0,10385,1708,1,0,0,0,10386,10387,7,14,0,0,10387,10388,7,8,0, + 0,10388,10389,7,7,0,0,10389,10390,7,3,0,0,10390,10391,7,6,0,0,10391, + 10392,7,7,0,0,10392,10393,5,95,0,0,10393,10394,7,3,0,0,10394,10395, + 7,11,0,0,10395,10396,7,10,0,0,10396,10397,7,23,0,0,10397,10398,7, + 23,0,0,10398,10399,7,7,0,0,10399,10400,7,6,0,0,10400,10401,7,8,0, + 0,10401,10402,7,15,0,0,10402,10403,7,14,0,0,10403,10404,5,95,0,0, + 10404,10405,7,25,0,0,10405,10406,7,17,0,0,10406,10407,7,16,0,0,10407, + 10408,5,95,0,0,10408,10409,7,21,0,0,10409,10410,7,7,0,0,10410,10411, + 7,10,0,0,10411,1710,1,0,0,0,10412,10413,7,14,0,0,10413,10414,7,8, + 0,0,10414,10415,7,7,0,0,10415,10416,7,3,0,0,10416,10417,7,6,0,0, + 10417,10418,7,7,0,0,10418,10419,5,95,0,0,10419,10420,7,4,0,0,10420, + 10421,7,20,0,0,10421,10422,5,95,0,0,10422,10423,7,25,0,0,10423,10424, + 7,3,0,0,10424,10425,7,8,0,0,10425,10426,7,3,0,0,10426,10427,7,23, + 0,0,10427,10428,7,7,0,0,10428,10429,7,6,0,0,10429,10430,7,7,0,0, + 10430,10431,7,8,0,0,10431,10432,7,11,0,0,10432,1712,1,0,0,0,10433, + 10434,7,14,0,0,10434,10435,7,8,0,0,10435,10436,7,7,0,0,10436,10437, + 7,3,0,0,10437,10438,7,6,0,0,10438,10439,7,7,0,0,10439,10440,5,95, + 0,0,10440,10441,7,4,0,0,10441,10442,7,15,0,0,10442,10443,7,22,0, + 0,10443,10444,7,7,0,0,10444,10445,7,11,0,0,10445,10446,7,6,0,0,10446, + 1714,1,0,0,0,10447,10448,7,14,0,0,10448,10449,7,8,0,0,10449,10450, + 7,19,0,0,10450,10451,7,11,0,0,10451,10452,7,11,0,0,10452,10453,7, + 7,0,0,10453,10454,7,11,0,0,10454,1716,1,0,0,0,10455,10456,7,4,0, + 0,10456,10457,7,3,0,0,10457,10458,7,6,0,0,10458,10459,7,7,0,0,10459, + 10460,7,4,0,0,10460,10461,7,15,0,0,10461,10462,7,18,0,0,10462,10463, + 7,18,0,0,10463,1718,1,0,0,0,10464,10465,7,4,0,0,10465,10466,7,3, + 0,0,10466,10467,7,6,0,0,10467,10468,7,7,0,0,10468,10469,5,95,0,0, + 10469,10470,7,18,0,0,10470,10471,7,19,0,0,10471,10472,7,8,0,0,10472, + 10473,7,23,0,0,10473,10474,7,3,0,0,10474,10475,7,6,0,0,10475,1720, + 1,0,0,0,10476,10477,7,4,0,0,10477,10478,7,3,0,0,10478,10479,7,10, + 0,0,10479,10480,7,12,0,0,10480,10481,7,3,0,0,10481,10482,7,23,0, + 0,10482,10483,7,7,0,0,10483,1722,1,0,0,0,10484,10485,7,4,0,0,10485, + 10486,7,3,0,0,10486,10487,7,10,0,0,10487,10488,7,19,0,0,10488,10489, + 7,18,0,0,10489,10490,7,23,0,0,10490,10491,7,19,0,0,10491,10492,7, + 12,0,0,10492,10493,7,6,0,0,10493,10494,7,20,0,0,10494,1724,1,0,0, + 0,10495,10496,7,4,0,0,10496,10497,7,3,0,0,10497,10498,7,10,0,0,10498, + 10499,7,19,0,0,10499,10500,7,18,0,0,10500,10501,7,9,0,0,10501,10502, + 7,7,0,0,10502,10503,7,7,0,0,10503,10504,7,21,0,0,10504,1726,1,0, + 0,0,10505,10506,7,4,0,0,10506,10507,7,3,0,0,10507,10508,7,10,0,0, + 10508,10509,7,19,0,0,10509,10510,7,18,0,0,10510,10511,7,10,0,0,10511, + 10512,7,7,0,0,10512,10513,7,3,0,0,10513,10514,7,8,0,0,10514,1728, + 1,0,0,0,10515,10516,7,4,0,0,10516,10517,7,7,0,0,10517,10518,7,14, + 0,0,10518,10519,7,19,0,0,10519,10520,7,4,0,0,10520,10521,7,7,0,0, + 10521,1730,1,0,0,0,10522,10523,7,4,0,0,10523,10524,7,7,0,0,10524, + 10525,7,22,0,0,10525,10526,7,8,0,0,10526,10527,7,7,0,0,10527,10528, + 7,7,0,0,10528,10529,7,11,0,0,10529,1732,1,0,0,0,10530,10531,7,4, + 0,0,10531,10532,7,7,0,0,10532,10533,7,11,0,0,10533,10534,5,95,0, + 0,10534,10535,7,4,0,0,10535,10536,7,7,0,0,10536,10537,7,14,0,0,10537, + 10538,7,8,0,0,10538,10539,7,10,0,0,10539,10540,7,25,0,0,10540,10541, + 7,6,0,0,10541,1734,1,0,0,0,10542,10543,7,4,0,0,10543,10544,7,7,0, + 0,10544,10545,7,11,0,0,10545,10546,5,95,0,0,10546,10547,7,7,0,0, + 10547,10548,7,12,0,0,10548,10549,7,14,0,0,10549,10550,7,8,0,0,10550, + 10551,7,10,0,0,10551,10552,7,25,0,0,10552,10553,7,6,0,0,10553,1736, + 1,0,0,0,10554,10555,7,4,0,0,10555,10556,7,15,0,0,10556,10557,7,23, + 0,0,10557,10558,7,7,0,0,10558,10559,7,12,0,0,10559,10560,7,11,0, + 0,10560,10561,7,15,0,0,10561,10562,7,19,0,0,10562,10563,7,12,0,0, + 10563,1738,1,0,0,0,10564,10565,7,4,0,0,10565,10566,7,15,0,0,10566, + 10567,7,11,0,0,10567,10568,7,27,0,0,10568,10569,7,19,0,0,10569,10570, + 7,15,0,0,10570,10571,7,12,0,0,10571,10572,7,6,0,0,10572,1740,1,0, + 0,0,10573,10574,7,7,0,0,10574,10575,7,5,0,0,10575,10576,7,6,0,0, + 10576,1742,1,0,0,0,10577,10578,7,7,0,0,10578,10579,7,12,0,0,10579, + 10580,7,14,0,0,10580,10581,7,19,0,0,10581,10582,7,4,0,0,10582,10583, + 7,7,0,0,10583,1744,1,0,0,0,10584,10585,7,7,0,0,10585,10586,7,12, + 0,0,10586,10587,7,14,0,0,10587,10588,7,8,0,0,10588,10589,7,10,0, + 0,10589,10590,7,25,0,0,10590,10591,7,6,0,0,10591,1746,1,0,0,0,10592, + 10593,7,7,0,0,10593,10594,7,12,0,0,10594,10595,7,4,0,0,10595,10596, + 7,25,0,0,10596,10597,7,19,0,0,10597,10598,7,15,0,0,10598,10599,7, + 12,0,0,10599,10600,7,6,0,0,10600,1748,1,0,0,0,10601,10602,7,7,0, + 0,10602,10603,7,12,0,0,10603,10604,7,22,0,0,10604,10605,7,15,0,0, + 10605,10606,7,12,0,0,10606,10607,7,7,0,0,10607,10608,5,95,0,0,10608, + 10609,7,3,0,0,10609,10610,7,6,0,0,10610,10611,7,6,0,0,10611,10612, + 7,8,0,0,10612,10613,7,15,0,0,10613,10614,7,16,0,0,10614,10615,7, + 17,0,0,10615,10616,7,6,0,0,10616,10617,7,7,0,0,10617,1750,1,0,0, + 0,10618,10619,7,7,0,0,10619,10620,7,12,0,0,10620,10621,7,24,0,0, + 10621,10622,7,7,0,0,10622,10623,7,5,0,0,10623,10624,7,19,0,0,10624, + 10625,7,25,0,0,10625,10626,7,7,0,0,10626,1752,1,0,0,0,10627,10628, + 7,7,0,0,10628,10629,7,28,0,0,10629,10630,7,17,0,0,10630,10631,7, + 3,0,0,10631,10632,7,5,0,0,10632,10633,7,11,0,0,10633,1754,1,0,0, + 0,10634,10635,7,7,0,0,10635,10636,7,26,0,0,10636,10637,7,25,0,0, + 10637,1756,1,0,0,0,10638,10639,7,7,0,0,10639,10640,7,26,0,0,10640, + 10641,7,25,0,0,10641,10642,7,19,0,0,10642,10643,7,8,0,0,10643,10644, + 7,6,0,0,10644,10645,5,95,0,0,10645,10646,7,11,0,0,10646,10647,7, + 7,0,0,10647,10648,7,6,0,0,10648,1758,1,0,0,0,10649,10650,7,7,0,0, + 10650,10651,7,26,0,0,10651,10652,7,6,0,0,10652,10653,7,7,0,0,10653, + 10654,7,8,0,0,10654,10655,7,15,0,0,10655,10656,7,19,0,0,10656,10657, + 7,8,0,0,10657,10658,7,8,0,0,10658,10659,7,15,0,0,10659,10660,7,12, + 0,0,10660,10661,7,22,0,0,10661,1760,1,0,0,0,10662,10663,7,7,0,0, + 10663,10664,7,26,0,0,10664,10665,7,6,0,0,10665,10666,7,8,0,0,10666, + 10667,7,3,0,0,10667,10668,7,14,0,0,10668,10669,7,6,0,0,10669,10670, + 7,24,0,0,10670,10671,7,3,0,0,10671,10672,7,5,0,0,10672,10673,7,17, + 0,0,10673,10674,7,7,0,0,10674,1762,1,0,0,0,10675,10676,7,18,0,0, + 10676,10677,7,15,0,0,10677,10678,7,7,0,0,10678,10679,7,5,0,0,10679, + 10680,7,4,0,0,10680,1764,1,0,0,0,10681,10682,7,18,0,0,10682,10683, + 7,15,0,0,10683,10684,7,12,0,0,10684,10685,7,4,0,0,10685,10686,5, + 95,0,0,10686,10687,7,15,0,0,10687,10688,7,12,0,0,10688,10689,5,95, + 0,0,10689,10690,7,11,0,0,10690,10691,7,7,0,0,10691,10692,7,6,0,0, + 10692,1766,1,0,0,0,10693,10694,7,18,0,0,10694,10695,7,5,0,0,10695, + 10696,7,19,0,0,10696,10697,7,19,0,0,10697,10698,7,8,0,0,10698,1768, + 1,0,0,0,10699,10700,7,18,0,0,10700,10701,7,19,0,0,10701,10702,7, + 8,0,0,10702,10703,7,23,0,0,10703,10704,7,3,0,0,10704,10705,7,6,0, + 0,10705,1770,1,0,0,0,10706,10707,7,18,0,0,10707,10708,7,19,0,0,10708, + 10709,7,17,0,0,10709,10710,7,12,0,0,10710,10711,7,4,0,0,10711,10712, + 5,95,0,0,10712,10713,7,8,0,0,10713,10714,7,19,0,0,10714,10715,7, + 9,0,0,10715,10716,7,11,0,0,10716,1772,1,0,0,0,10717,10718,7,18,0, + 0,10718,10719,7,8,0,0,10719,10720,7,19,0,0,10720,10721,7,23,0,0, + 10721,10722,5,95,0,0,10722,10723,7,16,0,0,10723,10724,7,3,0,0,10724, + 10725,7,11,0,0,10725,10726,7,7,0,0,10726,10727,5,54,0,0,10727,10728, + 5,52,0,0,10728,1774,1,0,0,0,10729,10730,7,18,0,0,10730,10731,7,8, + 0,0,10731,10732,7,19,0,0,10732,10733,7,23,0,0,10733,10734,5,95,0, + 0,10734,10735,7,4,0,0,10735,10736,7,3,0,0,10736,10737,7,10,0,0,10737, + 10738,7,11,0,0,10738,1776,1,0,0,0,10739,10740,7,18,0,0,10740,10741, + 7,8,0,0,10741,10742,7,19,0,0,10742,10743,7,23,0,0,10743,10744,5, + 95,0,0,10744,10745,7,17,0,0,10745,10746,7,12,0,0,10746,10747,7,15, + 0,0,10747,10748,7,26,0,0,10748,10749,7,6,0,0,10749,10750,7,15,0, + 0,10750,10751,7,23,0,0,10751,10752,7,7,0,0,10752,1778,1,0,0,0,10753, + 10754,7,22,0,0,10754,10755,7,7,0,0,10755,10756,7,19,0,0,10756,10757, + 7,23,0,0,10757,10758,7,14,0,0,10758,10759,7,19,0,0,10759,10760,7, + 5,0,0,10760,10761,7,5,0,0,10761,10762,7,18,0,0,10762,10763,7,8,0, + 0,10763,10764,7,19,0,0,10764,10765,7,23,0,0,10765,10766,7,6,0,0, + 10766,10767,7,7,0,0,10767,10768,7,26,0,0,10768,10769,7,6,0,0,10769, + 1780,1,0,0,0,10770,10771,7,22,0,0,10771,10772,7,7,0,0,10772,10773, + 7,19,0,0,10773,10774,7,23,0,0,10774,10775,7,14,0,0,10775,10776,7, + 19,0,0,10776,10777,7,5,0,0,10777,10778,7,5,0,0,10778,10779,7,18, + 0,0,10779,10780,7,8,0,0,10780,10781,7,19,0,0,10781,10782,7,23,0, + 0,10782,10783,7,9,0,0,10783,10784,7,21,0,0,10784,10785,7,16,0,0, + 10785,1782,1,0,0,0,10786,10787,7,22,0,0,10787,10788,7,7,0,0,10788, + 10789,7,19,0,0,10789,10790,7,23,0,0,10790,10791,7,7,0,0,10791,10792, + 7,6,0,0,10792,10793,7,8,0,0,10793,10794,7,10,0,0,10794,10795,7,14, + 0,0,10795,10796,7,19,0,0,10796,10797,7,5,0,0,10797,10798,7,5,0,0, + 10798,10799,7,7,0,0,10799,10800,7,14,0,0,10800,10801,7,6,0,0,10801, + 10802,7,15,0,0,10802,10803,7,19,0,0,10803,10804,7,12,0,0,10804,10805, + 7,18,0,0,10805,10806,7,8,0,0,10806,10807,7,19,0,0,10807,10808,7, + 23,0,0,10808,10809,7,6,0,0,10809,10810,7,7,0,0,10810,10811,7,26, + 0,0,10811,10812,7,6,0,0,10812,1784,1,0,0,0,10813,10814,7,22,0,0, + 10814,10815,7,7,0,0,10815,10816,7,19,0,0,10816,10817,7,23,0,0,10817, + 10818,7,7,0,0,10818,10819,7,6,0,0,10819,10820,7,8,0,0,10820,10821, + 7,10,0,0,10821,10822,7,14,0,0,10822,10823,7,19,0,0,10823,10824,7, + 5,0,0,10824,10825,7,5,0,0,10825,10826,7,7,0,0,10826,10827,7,14,0, + 0,10827,10828,7,6,0,0,10828,10829,7,15,0,0,10829,10830,7,19,0,0, + 10830,10831,7,12,0,0,10831,10832,7,18,0,0,10832,10833,7,8,0,0,10833, + 10834,7,19,0,0,10834,10835,7,23,0,0,10835,10836,7,9,0,0,10836,10837, + 7,21,0,0,10837,10838,7,16,0,0,10838,1786,1,0,0,0,10839,10840,7,22, + 0,0,10840,10841,7,7,0,0,10841,10842,7,19,0,0,10842,10843,7,23,0, + 0,10843,10844,7,7,0,0,10844,10845,7,6,0,0,10845,10846,7,8,0,0,10846, + 10847,7,10,0,0,10847,10848,7,18,0,0,10848,10849,7,8,0,0,10849,10850, + 7,19,0,0,10850,10851,7,23,0,0,10851,10852,7,6,0,0,10852,10853,7, + 7,0,0,10853,10854,7,26,0,0,10854,10855,7,6,0,0,10855,1788,1,0,0, + 0,10856,10857,7,22,0,0,10857,10858,7,7,0,0,10858,10859,7,19,0,0, + 10859,10860,7,23,0,0,10860,10861,7,7,0,0,10861,10862,7,6,0,0,10862, + 10863,7,8,0,0,10863,10864,7,10,0,0,10864,10865,7,18,0,0,10865,10866, + 7,8,0,0,10866,10867,7,19,0,0,10867,10868,7,23,0,0,10868,10869,7, + 9,0,0,10869,10870,7,21,0,0,10870,10871,7,16,0,0,10871,1790,1,0,0, + 0,10872,10873,7,22,0,0,10873,10874,7,7,0,0,10874,10875,7,19,0,0, + 10875,10876,7,23,0,0,10876,10877,7,7,0,0,10877,10878,7,6,0,0,10878, + 10879,7,8,0,0,10879,10880,7,10,0,0,10880,10881,7,12,0,0,10881,1792, + 1,0,0,0,10882,10883,7,22,0,0,10883,10884,7,7,0,0,10884,10885,7,19, + 0,0,10885,10886,7,23,0,0,10886,10887,7,7,0,0,10887,10888,7,6,0,0, + 10888,10889,7,8,0,0,10889,10890,7,10,0,0,10890,10891,7,6,0,0,10891, + 10892,7,10,0,0,10892,10893,7,25,0,0,10893,10894,7,7,0,0,10894,1794, + 1,0,0,0,10895,10896,7,22,0,0,10896,10897,7,7,0,0,10897,10898,7,19, + 0,0,10898,10899,7,23,0,0,10899,10900,7,18,0,0,10900,10901,7,8,0, + 0,10901,10902,7,19,0,0,10902,10903,7,23,0,0,10903,10904,7,6,0,0, + 10904,10905,7,7,0,0,10905,10906,7,26,0,0,10906,10907,7,6,0,0,10907, + 1796,1,0,0,0,10908,10909,7,22,0,0,10909,10910,7,7,0,0,10910,10911, + 7,19,0,0,10911,10912,7,23,0,0,10912,10913,7,18,0,0,10913,10914,7, + 8,0,0,10914,10915,7,19,0,0,10915,10916,7,23,0,0,10916,10917,7,9, + 0,0,10917,10918,7,21,0,0,10918,10919,7,16,0,0,10919,1798,1,0,0,0, + 10920,10921,7,22,0,0,10921,10922,7,7,0,0,10922,10923,7,6,0,0,10923, + 10924,5,95,0,0,10924,10925,7,18,0,0,10925,10926,7,19,0,0,10926,10927, + 7,8,0,0,10927,10928,7,23,0,0,10928,10929,7,3,0,0,10929,10930,7,6, + 0,0,10930,1800,1,0,0,0,10931,10932,7,22,0,0,10932,10933,7,7,0,0, + 10933,10934,7,6,0,0,10934,10935,5,95,0,0,10935,10936,7,5,0,0,10936, + 10937,7,19,0,0,10937,10938,7,14,0,0,10938,10939,7,21,0,0,10939,1802, + 1,0,0,0,10940,10941,7,22,0,0,10941,10942,7,5,0,0,10942,10943,7,7, + 0,0,10943,10944,7,12,0,0,10944,10945,7,22,0,0,10945,10946,7,6,0, + 0,10946,10947,7,20,0,0,10947,1804,1,0,0,0,10948,10949,7,22,0,0,10949, + 10950,7,8,0,0,10950,10951,7,7,0,0,10951,10952,7,3,0,0,10952,10953, + 7,6,0,0,10953,10954,7,7,0,0,10954,10955,7,11,0,0,10955,10956,7,6, + 0,0,10956,1806,1,0,0,0,10957,10958,7,22,0,0,10958,10959,7,6,0,0, + 10959,10960,7,15,0,0,10960,10961,7,4,0,0,10961,10962,5,95,0,0,10962, + 10963,7,11,0,0,10963,10964,7,17,0,0,10964,10965,7,16,0,0,10965,10966, + 7,11,0,0,10966,10967,7,7,0,0,10967,10968,7,6,0,0,10968,1808,1,0, + 0,0,10969,10970,7,22,0,0,10970,10971,7,6,0,0,10971,10972,7,15,0, + 0,10972,10973,7,4,0,0,10973,10974,5,95,0,0,10974,10975,7,11,0,0, + 10975,10976,7,17,0,0,10976,10977,7,16,0,0,10977,10978,7,6,0,0,10978, + 10979,7,8,0,0,10979,10980,7,3,0,0,10980,10981,7,14,0,0,10981,10982, + 7,6,0,0,10982,1810,1,0,0,0,10983,10984,7,20,0,0,10984,10985,7,7, + 0,0,10985,10986,7,26,0,0,10986,1812,1,0,0,0,10987,10988,7,15,0,0, + 10988,10989,7,18,0,0,10989,10990,7,12,0,0,10990,10991,7,17,0,0,10991, + 10992,7,5,0,0,10992,10993,7,5,0,0,10993,1814,1,0,0,0,10994,10995, + 7,15,0,0,10995,10996,7,12,0,0,10996,10997,7,7,0,0,10997,10998,7, + 6,0,0,10998,10999,5,54,0,0,10999,11000,5,95,0,0,11000,11001,7,3, + 0,0,11001,11002,7,6,0,0,11002,11003,7,19,0,0,11003,11004,7,12,0, + 0,11004,1816,1,0,0,0,11005,11006,7,15,0,0,11006,11007,7,12,0,0,11007, + 11008,7,7,0,0,11008,11009,7,6,0,0,11009,11010,5,54,0,0,11010,11011, + 5,95,0,0,11011,11012,7,12,0,0,11012,11013,7,6,0,0,11013,11014,7, + 19,0,0,11014,11015,7,3,0,0,11015,1818,1,0,0,0,11016,11017,7,15,0, + 0,11017,11018,7,12,0,0,11018,11019,7,7,0,0,11019,11020,7,6,0,0,11020, + 11021,5,95,0,0,11021,11022,7,3,0,0,11022,11023,7,6,0,0,11023,11024, + 7,19,0,0,11024,11025,7,12,0,0,11025,1820,1,0,0,0,11026,11027,7,15, + 0,0,11027,11028,7,12,0,0,11028,11029,7,7,0,0,11029,11030,7,6,0,0, + 11030,11031,5,95,0,0,11031,11032,7,12,0,0,11032,11033,7,6,0,0,11033, + 11034,7,19,0,0,11034,11035,7,3,0,0,11035,1822,1,0,0,0,11036,11037, + 7,15,0,0,11037,11038,7,12,0,0,11038,11039,7,11,0,0,11039,11040,7, + 6,0,0,11040,11041,7,8,0,0,11041,1824,1,0,0,0,11042,11043,7,15,0, + 0,11043,11044,7,12,0,0,11044,11045,7,6,0,0,11045,11046,7,7,0,0,11046, + 11047,7,8,0,0,11047,11048,7,15,0,0,11048,11049,7,19,0,0,11049,11050, + 7,8,0,0,11050,11051,7,8,0,0,11051,11052,7,15,0,0,11052,11053,7,12, + 0,0,11053,11054,7,22,0,0,11054,11055,7,12,0,0,11055,1826,1,0,0,0, + 11056,11057,7,15,0,0,11057,11058,7,12,0,0,11058,11059,7,6,0,0,11059, + 11060,7,7,0,0,11060,11061,7,8,0,0,11061,11062,7,11,0,0,11062,11063, + 7,7,0,0,11063,11064,7,14,0,0,11064,11065,7,6,0,0,11065,11066,7,11, + 0,0,11066,1828,1,0,0,0,11067,11068,7,15,0,0,11068,11069,7,11,0,0, + 11069,11070,7,14,0,0,11070,11071,7,5,0,0,11071,11072,7,19,0,0,11072, + 11073,7,11,0,0,11073,11074,7,7,0,0,11074,11075,7,4,0,0,11075,1830, + 1,0,0,0,11076,11077,7,15,0,0,11077,11078,7,11,0,0,11078,11079,7, + 7,0,0,11079,11080,7,23,0,0,11080,11081,7,25,0,0,11081,11082,7,6, + 0,0,11082,11083,7,10,0,0,11083,1832,1,0,0,0,11084,11085,7,15,0,0, + 11085,11086,7,11,0,0,11086,11087,7,12,0,0,11087,11088,7,17,0,0,11088, + 11089,7,5,0,0,11089,11090,7,5,0,0,11090,1834,1,0,0,0,11091,11092, + 7,15,0,0,11092,11093,7,11,0,0,11093,11094,7,11,0,0,11094,11095,7, + 15,0,0,11095,11096,7,23,0,0,11096,11097,7,25,0,0,11097,11098,7,5, + 0,0,11098,11099,7,7,0,0,11099,1836,1,0,0,0,11100,11101,7,15,0,0, + 11101,11102,7,11,0,0,11102,11103,5,95,0,0,11103,11104,7,18,0,0,11104, + 11105,7,8,0,0,11105,11106,7,7,0,0,11106,11107,7,7,0,0,11107,11108, + 5,95,0,0,11108,11109,7,5,0,0,11109,11110,7,19,0,0,11110,11111,7, + 14,0,0,11111,11112,7,21,0,0,11112,1838,1,0,0,0,11113,11114,7,15, + 0,0,11114,11115,7,11,0,0,11115,11116,5,95,0,0,11116,11117,7,15,0, + 0,11117,11118,7,25,0,0,11118,11119,7,24,0,0,11119,11120,5,52,0,0, + 11120,1840,1,0,0,0,11121,11122,7,15,0,0,11122,11123,7,11,0,0,11123, + 11124,5,95,0,0,11124,11125,7,15,0,0,11125,11126,7,25,0,0,11126,11127, + 7,24,0,0,11127,11128,5,52,0,0,11128,11129,5,95,0,0,11129,11130,7, + 14,0,0,11130,11131,7,19,0,0,11131,11132,7,23,0,0,11132,11133,7,25, + 0,0,11133,11134,7,3,0,0,11134,11135,7,6,0,0,11135,1842,1,0,0,0,11136, + 11137,7,15,0,0,11137,11138,7,11,0,0,11138,11139,5,95,0,0,11139,11140, + 7,15,0,0,11140,11141,7,25,0,0,11141,11142,7,24,0,0,11142,11143,5, + 52,0,0,11143,11144,5,95,0,0,11144,11145,7,23,0,0,11145,11146,7,3, + 0,0,11146,11147,7,25,0,0,11147,11148,7,25,0,0,11148,11149,7,7,0, + 0,11149,11150,7,4,0,0,11150,1844,1,0,0,0,11151,11152,7,15,0,0,11152, + 11153,7,11,0,0,11153,11154,5,95,0,0,11154,11155,7,15,0,0,11155,11156, + 7,25,0,0,11156,11157,7,24,0,0,11157,11158,5,54,0,0,11158,1846,1, + 0,0,0,11159,11160,7,15,0,0,11160,11161,7,11,0,0,11161,11162,5,95, + 0,0,11162,11163,7,17,0,0,11163,11164,7,11,0,0,11164,11165,7,7,0, + 0,11165,11166,7,4,0,0,11166,11167,5,95,0,0,11167,11168,7,5,0,0,11168, + 11169,7,19,0,0,11169,11170,7,14,0,0,11170,11171,7,21,0,0,11171,1848, + 1,0,0,0,11172,11173,7,5,0,0,11173,11174,7,3,0,0,11174,11175,7,11, + 0,0,11175,11176,7,6,0,0,11176,11177,5,95,0,0,11177,11178,7,15,0, + 0,11178,11179,7,12,0,0,11179,11180,7,11,0,0,11180,11181,7,7,0,0, + 11181,11182,7,8,0,0,11182,11183,7,6,0,0,11183,11184,5,95,0,0,11184, + 11185,7,15,0,0,11185,11186,7,4,0,0,11186,1850,1,0,0,0,11187,11188, + 7,5,0,0,11188,11189,7,14,0,0,11189,11190,7,3,0,0,11190,11191,7,11, + 0,0,11191,11192,7,7,0,0,11192,1852,1,0,0,0,11193,11194,7,5,0,0,11194, + 11195,7,7,0,0,11195,11196,7,3,0,0,11196,11197,7,11,0,0,11197,11198, + 7,6,0,0,11198,1854,1,0,0,0,11199,11200,7,5,0,0,11200,11201,7,7,0, + 0,11201,11202,7,12,0,0,11202,11203,7,22,0,0,11203,11204,7,6,0,0, + 11204,11205,7,20,0,0,11205,1856,1,0,0,0,11206,11207,7,5,0,0,11207, + 11208,7,15,0,0,11208,11209,7,12,0,0,11209,11210,7,7,0,0,11210,11211, + 7,18,0,0,11211,11212,7,8,0,0,11212,11213,7,19,0,0,11213,11214,7, + 23,0,0,11214,11215,7,6,0,0,11215,11216,7,7,0,0,11216,11217,7,26, + 0,0,11217,11218,7,6,0,0,11218,1858,1,0,0,0,11219,11220,7,5,0,0,11220, + 11221,7,15,0,0,11221,11222,7,12,0,0,11222,11223,7,7,0,0,11223,11224, + 7,18,0,0,11224,11225,7,8,0,0,11225,11226,7,19,0,0,11226,11227,7, + 23,0,0,11227,11228,7,9,0,0,11228,11229,7,21,0,0,11229,11230,7,16, + 0,0,11230,1860,1,0,0,0,11231,11232,7,5,0,0,11232,11233,7,15,0,0, + 11233,11234,7,12,0,0,11234,11235,7,7,0,0,11235,11236,7,11,0,0,11236, + 11237,7,6,0,0,11237,11238,7,8,0,0,11238,11239,7,15,0,0,11239,11240, + 7,12,0,0,11240,11241,7,22,0,0,11241,11242,7,18,0,0,11242,11243,7, + 8,0,0,11243,11244,7,19,0,0,11244,11245,7,23,0,0,11245,11246,7,6, + 0,0,11246,11247,7,7,0,0,11247,11248,7,26,0,0,11248,11249,7,6,0,0, + 11249,1862,1,0,0,0,11250,11251,7,5,0,0,11251,11252,7,15,0,0,11252, + 11253,7,12,0,0,11253,11254,7,7,0,0,11254,11255,7,11,0,0,11255,11256, + 7,6,0,0,11256,11257,7,8,0,0,11257,11258,7,15,0,0,11258,11259,7,12, + 0,0,11259,11260,7,22,0,0,11260,11261,7,18,0,0,11261,11262,7,8,0, + 0,11262,11263,7,19,0,0,11263,11264,7,23,0,0,11264,11265,7,9,0,0, + 11265,11266,7,21,0,0,11266,11267,7,16,0,0,11267,1864,1,0,0,0,11268, + 11269,7,5,0,0,11269,11270,7,12,0,0,11270,1866,1,0,0,0,11271,11272, + 7,5,0,0,11272,11273,7,19,0,0,11273,11274,7,3,0,0,11274,11275,7,4, + 0,0,11275,11276,5,95,0,0,11276,11277,7,18,0,0,11277,11278,7,15,0, + 0,11278,11279,7,5,0,0,11279,11280,7,7,0,0,11280,1868,1,0,0,0,11281, + 11282,7,5,0,0,11282,11283,7,19,0,0,11283,11284,7,14,0,0,11284,11285, + 7,3,0,0,11285,11286,7,6,0,0,11286,11287,7,7,0,0,11287,1870,1,0,0, + 0,11288,11289,7,5,0,0,11289,11290,7,19,0,0,11290,11291,7,22,0,0, + 11291,1872,1,0,0,0,11292,11293,7,5,0,0,11293,11294,7,19,0,0,11294, + 11295,7,22,0,0,11295,11296,5,49,0,0,11296,11297,5,48,0,0,11297,1874, + 1,0,0,0,11298,11299,7,5,0,0,11299,11300,7,19,0,0,11300,11301,7,22, + 0,0,11301,11302,5,50,0,0,11302,1876,1,0,0,0,11303,11304,7,5,0,0, + 11304,11305,7,19,0,0,11305,11306,7,9,0,0,11306,11307,7,7,0,0,11307, + 11308,7,8,0,0,11308,1878,1,0,0,0,11309,11310,7,5,0,0,11310,11311, + 7,25,0,0,11311,11312,7,3,0,0,11312,11313,7,4,0,0,11313,1880,1,0, + 0,0,11314,11315,7,5,0,0,11315,11316,7,6,0,0,11316,11317,7,8,0,0, + 11317,11318,7,15,0,0,11318,11319,7,23,0,0,11319,1882,1,0,0,0,11320, + 11321,7,23,0,0,11321,11322,7,3,0,0,11322,11323,7,21,0,0,11323,11324, + 7,7,0,0,11324,11325,7,4,0,0,11325,11326,7,3,0,0,11326,11327,7,6, + 0,0,11327,11328,7,7,0,0,11328,1884,1,0,0,0,11329,11330,7,23,0,0, + 11330,11331,7,3,0,0,11331,11332,7,21,0,0,11332,11333,7,7,0,0,11333, + 11334,7,6,0,0,11334,11335,7,15,0,0,11335,11336,7,23,0,0,11336,11337, + 7,7,0,0,11337,1886,1,0,0,0,11338,11339,7,23,0,0,11339,11340,7,3, + 0,0,11340,11341,7,21,0,0,11341,11342,7,7,0,0,11342,11343,5,95,0, + 0,11343,11344,7,11,0,0,11344,11345,7,7,0,0,11345,11346,7,6,0,0,11346, + 1888,1,0,0,0,11347,11348,7,23,0,0,11348,11349,7,3,0,0,11349,11350, + 7,11,0,0,11350,11351,7,6,0,0,11351,11352,7,7,0,0,11352,11353,7,8, + 0,0,11353,11354,5,95,0,0,11354,11355,7,25,0,0,11355,11356,7,19,0, + 0,11356,11357,7,11,0,0,11357,11358,5,95,0,0,11358,11359,7,9,0,0, + 11359,11360,7,3,0,0,11360,11361,7,15,0,0,11361,11362,7,6,0,0,11362, + 1890,1,0,0,0,11363,11364,7,23,0,0,11364,11365,7,16,0,0,11365,11366, + 7,8,0,0,11366,11367,7,14,0,0,11367,11368,7,19,0,0,11368,11369,7, + 12,0,0,11369,11370,7,6,0,0,11370,11371,7,3,0,0,11371,11372,7,15, + 0,0,11372,11373,7,12,0,0,11373,11374,7,11,0,0,11374,1892,1,0,0,0, + 11375,11376,7,23,0,0,11376,11377,7,16,0,0,11377,11378,7,8,0,0,11378, + 11379,7,4,0,0,11379,11380,7,15,0,0,11380,11381,7,11,0,0,11381,11382, + 7,27,0,0,11382,11383,7,19,0,0,11383,11384,7,15,0,0,11384,11385,7, + 12,0,0,11385,11386,7,6,0,0,11386,1894,1,0,0,0,11387,11388,7,23,0, + 0,11388,11389,7,16,0,0,11389,11390,7,8,0,0,11390,11391,7,7,0,0,11391, + 11392,7,28,0,0,11392,11393,7,17,0,0,11393,11394,7,3,0,0,11394,11395, + 7,5,0,0,11395,1896,1,0,0,0,11396,11397,7,23,0,0,11397,11398,7,16, + 0,0,11398,11399,7,8,0,0,11399,11400,7,15,0,0,11400,11401,7,12,0, + 0,11401,11402,7,6,0,0,11402,11403,7,7,0,0,11403,11404,7,8,0,0,11404, + 11405,7,11,0,0,11405,11406,7,7,0,0,11406,11407,7,14,0,0,11407,11408, + 7,6,0,0,11408,11409,7,11,0,0,11409,1898,1,0,0,0,11410,11411,7,23, + 0,0,11411,11412,7,16,0,0,11412,11413,7,8,0,0,11413,11414,7,19,0, + 0,11414,11415,7,24,0,0,11415,11416,7,7,0,0,11416,11417,7,8,0,0,11417, + 11418,7,5,0,0,11418,11419,7,3,0,0,11419,11420,7,25,0,0,11420,11421, + 7,11,0,0,11421,1900,1,0,0,0,11422,11423,7,23,0,0,11423,11424,7,16, + 0,0,11424,11425,7,8,0,0,11425,11426,7,6,0,0,11426,11427,7,19,0,0, + 11427,11428,7,17,0,0,11428,11429,7,14,0,0,11429,11430,7,20,0,0,11430, + 11431,7,7,0,0,11431,11432,7,11,0,0,11432,1902,1,0,0,0,11433,11434, + 7,23,0,0,11434,11435,7,16,0,0,11435,11436,7,8,0,0,11436,11437,7, + 9,0,0,11437,11438,7,15,0,0,11438,11439,7,6,0,0,11439,11440,7,20, + 0,0,11440,11441,7,15,0,0,11441,11442,7,12,0,0,11442,1904,1,0,0,0, + 11443,11444,7,23,0,0,11444,11445,7,4,0,0,11445,11446,5,53,0,0,11446, + 1906,1,0,0,0,11447,11448,7,23,0,0,11448,11449,7,5,0,0,11449,11450, + 7,15,0,0,11450,11451,7,12,0,0,11451,11452,7,7,0,0,11452,11453,7, + 18,0,0,11453,11454,7,8,0,0,11454,11455,7,19,0,0,11455,11456,7,23, + 0,0,11456,11457,7,6,0,0,11457,11458,7,7,0,0,11458,11459,7,26,0,0, + 11459,11460,7,6,0,0,11460,1908,1,0,0,0,11461,11462,7,23,0,0,11462, + 11463,7,5,0,0,11463,11464,7,15,0,0,11464,11465,7,12,0,0,11465,11466, + 7,7,0,0,11466,11467,7,18,0,0,11467,11468,7,8,0,0,11468,11469,7,19, + 0,0,11469,11470,7,23,0,0,11470,11471,7,9,0,0,11471,11472,7,21,0, + 0,11472,11473,7,16,0,0,11473,1910,1,0,0,0,11474,11475,7,23,0,0,11475, + 11476,7,19,0,0,11476,11477,7,12,0,0,11477,11478,7,6,0,0,11478,11479, + 7,20,0,0,11479,11480,7,12,0,0,11480,11481,7,3,0,0,11481,11482,7, + 23,0,0,11482,11483,7,7,0,0,11483,1912,1,0,0,0,11484,11485,7,23,0, + 0,11485,11486,7,25,0,0,11486,11487,7,19,0,0,11487,11488,7,15,0,0, + 11488,11489,7,12,0,0,11489,11490,7,6,0,0,11490,11491,7,18,0,0,11491, + 11492,7,8,0,0,11492,11493,7,19,0,0,11493,11494,7,23,0,0,11494,11495, + 7,6,0,0,11495,11496,7,7,0,0,11496,11497,7,26,0,0,11497,11498,7,6, + 0,0,11498,1914,1,0,0,0,11499,11500,7,23,0,0,11500,11501,7,25,0,0, + 11501,11502,7,19,0,0,11502,11503,7,15,0,0,11503,11504,7,12,0,0,11504, + 11505,7,6,0,0,11505,11506,7,18,0,0,11506,11507,7,8,0,0,11507,11508, + 7,19,0,0,11508,11509,7,23,0,0,11509,11510,7,9,0,0,11510,11511,7, + 21,0,0,11511,11512,7,16,0,0,11512,1916,1,0,0,0,11513,11514,7,23, + 0,0,11514,11515,7,25,0,0,11515,11516,7,19,0,0,11516,11517,7,5,0, + 0,11517,11518,7,10,0,0,11518,11519,7,18,0,0,11519,11520,7,8,0,0, + 11520,11521,7,19,0,0,11521,11522,7,23,0,0,11522,11523,7,6,0,0,11523, + 11524,7,7,0,0,11524,11525,7,26,0,0,11525,11526,7,6,0,0,11526,1918, + 1,0,0,0,11527,11528,7,23,0,0,11528,11529,7,25,0,0,11529,11530,7, + 19,0,0,11530,11531,7,5,0,0,11531,11532,7,10,0,0,11532,11533,7,18, + 0,0,11533,11534,7,8,0,0,11534,11535,7,19,0,0,11535,11536,7,23,0, + 0,11536,11537,7,9,0,0,11537,11538,7,21,0,0,11538,11539,7,16,0,0, + 11539,1920,1,0,0,0,11540,11541,7,23,0,0,11541,11542,7,17,0,0,11542, + 11543,7,5,0,0,11543,11544,7,6,0,0,11544,11545,7,15,0,0,11545,11546, + 7,5,0,0,11546,11547,7,15,0,0,11547,11548,7,12,0,0,11548,11549,7, + 7,0,0,11549,11550,7,11,0,0,11550,11551,7,6,0,0,11551,11552,7,8,0, + 0,11552,11553,7,15,0,0,11553,11554,7,12,0,0,11554,11555,7,22,0,0, + 11555,11556,7,18,0,0,11556,11557,7,8,0,0,11557,11558,7,19,0,0,11558, + 11559,7,23,0,0,11559,11560,7,6,0,0,11560,11561,7,7,0,0,11561,11562, + 7,26,0,0,11562,11563,7,6,0,0,11563,1922,1,0,0,0,11564,11565,7,23, + 0,0,11565,11566,7,17,0,0,11566,11567,7,5,0,0,11567,11568,7,6,0,0, + 11568,11569,7,15,0,0,11569,11570,7,5,0,0,11570,11571,7,15,0,0,11571, + 11572,7,12,0,0,11572,11573,7,7,0,0,11573,11574,7,11,0,0,11574,11575, + 7,6,0,0,11575,11576,7,8,0,0,11576,11577,7,15,0,0,11577,11578,7,12, + 0,0,11578,11579,7,22,0,0,11579,11580,7,18,0,0,11580,11581,7,8,0, + 0,11581,11582,7,19,0,0,11582,11583,7,23,0,0,11583,11584,7,9,0,0, + 11584,11585,7,21,0,0,11585,11586,7,16,0,0,11586,1924,1,0,0,0,11587, + 11588,7,23,0,0,11588,11589,7,17,0,0,11589,11590,7,5,0,0,11590,11591, + 7,6,0,0,11591,11592,7,15,0,0,11592,11593,7,25,0,0,11593,11594,7, + 19,0,0,11594,11595,7,15,0,0,11595,11596,7,12,0,0,11596,11597,7,6, + 0,0,11597,11598,7,18,0,0,11598,11599,7,8,0,0,11599,11600,7,19,0, + 0,11600,11601,7,23,0,0,11601,11602,7,6,0,0,11602,11603,7,7,0,0,11603, + 11604,7,26,0,0,11604,11605,7,6,0,0,11605,1926,1,0,0,0,11606,11607, + 7,23,0,0,11607,11608,7,17,0,0,11608,11609,7,5,0,0,11609,11610,7, + 6,0,0,11610,11611,7,15,0,0,11611,11612,7,25,0,0,11612,11613,7,19, + 0,0,11613,11614,7,15,0,0,11614,11615,7,12,0,0,11615,11616,7,6,0, + 0,11616,11617,7,18,0,0,11617,11618,7,8,0,0,11618,11619,7,19,0,0, + 11619,11620,7,23,0,0,11620,11621,7,9,0,0,11621,11622,7,21,0,0,11622, + 11623,7,16,0,0,11623,1928,1,0,0,0,11624,11625,7,23,0,0,11625,11626, + 7,17,0,0,11626,11627,7,5,0,0,11627,11628,7,6,0,0,11628,11629,7,15, + 0,0,11629,11630,7,25,0,0,11630,11631,7,19,0,0,11631,11632,7,5,0, + 0,11632,11633,7,10,0,0,11633,11634,7,22,0,0,11634,11635,7,19,0,0, + 11635,11636,7,12,0,0,11636,11637,7,18,0,0,11637,11638,7,8,0,0,11638, + 11639,7,19,0,0,11639,11640,7,23,0,0,11640,11641,7,6,0,0,11641,11642, + 7,7,0,0,11642,11643,7,26,0,0,11643,11644,7,6,0,0,11644,1930,1,0, + 0,0,11645,11646,7,23,0,0,11646,11647,7,17,0,0,11647,11648,7,5,0, + 0,11648,11649,7,6,0,0,11649,11650,7,15,0,0,11650,11651,7,25,0,0, + 11651,11652,7,19,0,0,11652,11653,7,5,0,0,11653,11654,7,10,0,0,11654, + 11655,7,22,0,0,11655,11656,7,19,0,0,11656,11657,7,12,0,0,11657,11658, + 7,18,0,0,11658,11659,7,8,0,0,11659,11660,7,19,0,0,11660,11661,7, + 23,0,0,11661,11662,7,9,0,0,11662,11663,7,21,0,0,11663,11664,7,16, + 0,0,11664,1932,1,0,0,0,11665,11666,7,12,0,0,11666,11667,7,3,0,0, + 11667,11668,7,23,0,0,11668,11669,7,7,0,0,11669,11670,5,95,0,0,11670, + 11671,7,14,0,0,11671,11672,7,19,0,0,11672,11673,7,12,0,0,11673,11674, + 7,11,0,0,11674,11675,7,6,0,0,11675,1934,1,0,0,0,11676,11677,7,12, + 0,0,11677,11678,7,17,0,0,11678,11679,7,5,0,0,11679,11680,7,5,0,0, + 11680,11681,7,15,0,0,11681,11682,7,18,0,0,11682,1936,1,0,0,0,11683, + 11684,7,12,0,0,11684,11685,7,17,0,0,11685,11686,7,23,0,0,11686,11687, + 7,22,0,0,11687,11688,7,7,0,0,11688,11689,7,19,0,0,11689,11690,7, + 23,0,0,11690,11691,7,7,0,0,11691,11692,7,6,0,0,11692,11693,7,8,0, + 0,11693,11694,7,15,0,0,11694,11695,7,7,0,0,11695,11696,7,11,0,0, + 11696,1938,1,0,0,0,11697,11698,7,12,0,0,11698,11699,7,17,0,0,11699, + 11700,7,23,0,0,11700,11701,7,15,0,0,11701,11702,7,12,0,0,11702,11703, + 7,6,0,0,11703,11704,7,7,0,0,11704,11705,7,8,0,0,11705,11706,7,15, + 0,0,11706,11707,7,19,0,0,11707,11708,7,8,0,0,11708,11709,7,8,0,0, + 11709,11710,7,15,0,0,11710,11711,7,12,0,0,11711,11712,7,22,0,0,11712, + 11713,7,11,0,0,11713,1940,1,0,0,0,11714,11715,7,12,0,0,11715,11716, + 7,17,0,0,11716,11717,7,23,0,0,11717,11718,7,25,0,0,11718,11719,7, + 19,0,0,11719,11720,7,15,0,0,11720,11721,7,12,0,0,11721,11722,7,6, + 0,0,11722,11723,7,11,0,0,11723,1942,1,0,0,0,11724,11725,7,19,0,0, + 11725,11726,7,14,0,0,11726,11727,7,6,0,0,11727,1944,1,0,0,0,11728, + 11729,7,19,0,0,11729,11730,7,14,0,0,11730,11731,7,6,0,0,11731,11732, + 7,7,0,0,11732,11733,7,6,0,0,11733,11734,5,95,0,0,11734,11735,7,5, + 0,0,11735,11736,7,7,0,0,11736,11737,7,12,0,0,11737,11738,7,22,0, + 0,11738,11739,7,6,0,0,11739,11740,7,20,0,0,11740,1946,1,0,0,0,11741, + 11742,7,19,0,0,11742,11743,7,8,0,0,11743,11744,7,4,0,0,11744,1948, + 1,0,0,0,11745,11746,7,19,0,0,11746,11747,7,24,0,0,11747,11748,7, + 7,0,0,11748,11749,7,8,0,0,11749,11750,7,5,0,0,11750,11751,7,3,0, + 0,11751,11752,7,25,0,0,11752,11753,7,11,0,0,11753,1950,1,0,0,0,11754, + 11755,7,25,0,0,11755,11756,7,7,0,0,11756,11757,7,8,0,0,11757,11758, + 7,15,0,0,11758,11759,7,19,0,0,11759,11760,7,4,0,0,11760,11761,5, + 95,0,0,11761,11762,7,3,0,0,11762,11763,7,4,0,0,11763,11764,7,4,0, + 0,11764,1952,1,0,0,0,11765,11766,7,25,0,0,11766,11767,7,7,0,0,11767, + 11768,7,8,0,0,11768,11769,7,15,0,0,11769,11770,7,19,0,0,11770,11771, + 7,4,0,0,11771,11772,5,95,0,0,11772,11773,7,4,0,0,11773,11774,7,15, + 0,0,11774,11775,7,18,0,0,11775,11776,7,18,0,0,11776,1954,1,0,0,0, + 11777,11778,7,25,0,0,11778,11779,7,15,0,0,11779,1956,1,0,0,0,11780, + 11781,7,25,0,0,11781,11782,7,19,0,0,11782,11783,7,15,0,0,11783,11784, + 7,12,0,0,11784,11785,7,6,0,0,11785,11786,7,18,0,0,11786,11787,7, + 8,0,0,11787,11788,7,19,0,0,11788,11789,7,23,0,0,11789,11790,7,6, + 0,0,11790,11791,7,7,0,0,11791,11792,7,26,0,0,11792,11793,7,6,0,0, + 11793,1958,1,0,0,0,11794,11795,7,25,0,0,11795,11796,7,19,0,0,11796, + 11797,7,15,0,0,11797,11798,7,12,0,0,11798,11799,7,6,0,0,11799,11800, + 7,18,0,0,11800,11801,7,8,0,0,11801,11802,7,19,0,0,11802,11803,7, + 23,0,0,11803,11804,7,9,0,0,11804,11805,7,21,0,0,11805,11806,7,16, + 0,0,11806,1960,1,0,0,0,11807,11808,7,25,0,0,11808,11809,7,19,0,0, + 11809,11810,7,15,0,0,11810,11811,7,12,0,0,11811,11812,7,6,0,0,11812, + 11813,7,12,0,0,11813,1962,1,0,0,0,11814,11815,7,25,0,0,11815,11816, + 7,19,0,0,11816,11817,7,5,0,0,11817,11818,7,10,0,0,11818,11819,7, + 18,0,0,11819,11820,7,8,0,0,11820,11821,7,19,0,0,11821,11822,7,23, + 0,0,11822,11823,7,6,0,0,11823,11824,7,7,0,0,11824,11825,7,26,0,0, + 11825,11826,7,6,0,0,11826,1964,1,0,0,0,11827,11828,7,25,0,0,11828, + 11829,7,19,0,0,11829,11830,7,5,0,0,11830,11831,7,10,0,0,11831,11832, + 7,18,0,0,11832,11833,7,8,0,0,11833,11834,7,19,0,0,11834,11835,7, + 23,0,0,11835,11836,7,9,0,0,11836,11837,7,21,0,0,11837,11838,7,16, + 0,0,11838,1966,1,0,0,0,11839,11840,7,25,0,0,11840,11841,7,19,0,0, + 11841,11842,7,5,0,0,11842,11843,7,10,0,0,11843,11844,7,22,0,0,11844, + 11845,7,19,0,0,11845,11846,7,12,0,0,11846,11847,7,18,0,0,11847,11848, + 7,8,0,0,11848,11849,7,19,0,0,11849,11850,7,23,0,0,11850,11851,7, + 6,0,0,11851,11852,7,7,0,0,11852,11853,7,26,0,0,11853,11854,7,6,0, + 0,11854,1968,1,0,0,0,11855,11856,7,25,0,0,11856,11857,7,19,0,0,11857, + 11858,7,5,0,0,11858,11859,7,10,0,0,11859,11860,7,22,0,0,11860,11861, + 7,19,0,0,11861,11862,7,12,0,0,11862,11863,7,18,0,0,11863,11864,7, + 8,0,0,11864,11865,7,19,0,0,11865,11866,7,23,0,0,11866,11867,7,9, + 0,0,11867,11868,7,21,0,0,11868,11869,7,16,0,0,11869,1970,1,0,0,0, + 11870,11871,7,25,0,0,11871,11872,7,19,0,0,11872,11873,7,9,0,0,11873, + 1972,1,0,0,0,11874,11875,7,25,0,0,11875,11876,7,19,0,0,11876,11877, + 7,9,0,0,11877,11878,7,7,0,0,11878,11879,7,8,0,0,11879,1974,1,0,0, + 0,11880,11881,7,28,0,0,11881,11882,7,17,0,0,11882,11883,7,19,0,0, + 11883,11884,7,6,0,0,11884,11885,7,7,0,0,11885,1976,1,0,0,0,11886, + 11887,7,8,0,0,11887,11888,7,3,0,0,11888,11889,7,4,0,0,11889,11890, + 7,15,0,0,11890,11891,7,3,0,0,11891,11892,7,12,0,0,11892,11893,7, + 11,0,0,11893,1978,1,0,0,0,11894,11895,7,8,0,0,11895,11896,7,3,0, + 0,11896,11897,7,12,0,0,11897,11898,7,4,0,0,11898,1980,1,0,0,0,11899, + 11900,7,8,0,0,11900,11901,7,3,0,0,11901,11902,7,12,0,0,11902,11903, + 7,4,0,0,11903,11904,7,19,0,0,11904,11905,7,23,0,0,11905,1982,1,0, + 0,0,11906,11907,7,8,0,0,11907,11908,7,3,0,0,11908,11909,7,12,0,0, + 11909,11910,7,4,0,0,11910,11911,7,19,0,0,11911,11912,7,23,0,0,11912, + 11913,5,95,0,0,11913,11914,7,16,0,0,11914,11915,7,10,0,0,11915,11916, + 7,6,0,0,11916,11917,7,7,0,0,11917,11918,7,11,0,0,11918,1984,1,0, + 0,0,11919,11920,7,8,0,0,11920,11921,7,7,0,0,11921,11922,7,5,0,0, + 11922,11923,7,7,0,0,11923,11924,7,3,0,0,11924,11925,7,11,0,0,11925, + 11926,7,7,0,0,11926,11927,5,95,0,0,11927,11928,7,5,0,0,11928,11929, + 7,19,0,0,11929,11930,7,14,0,0,11930,11931,7,21,0,0,11931,1986,1, + 0,0,0,11932,11933,7,8,0,0,11933,11934,7,7,0,0,11934,11935,7,24,0, + 0,11935,11936,7,7,0,0,11936,11937,7,8,0,0,11937,11938,7,11,0,0,11938, + 11939,7,7,0,0,11939,1988,1,0,0,0,11940,11941,7,8,0,0,11941,11942, + 7,19,0,0,11942,11943,7,17,0,0,11943,11944,7,12,0,0,11944,11945,7, + 4,0,0,11945,1990,1,0,0,0,11946,11947,7,8,0,0,11947,11948,7,19,0, + 0,11948,11949,7,9,0,0,11949,11950,5,95,0,0,11950,11951,7,14,0,0, + 11951,11952,7,19,0,0,11952,11953,7,17,0,0,11953,11954,7,12,0,0,11954, + 11955,7,6,0,0,11955,1992,1,0,0,0,11956,11957,7,8,0,0,11957,11958, + 7,25,0,0,11958,11959,7,3,0,0,11959,11960,7,4,0,0,11960,1994,1,0, + 0,0,11961,11962,7,8,0,0,11962,11963,7,6,0,0,11963,11964,7,8,0,0, + 11964,11965,7,15,0,0,11965,11966,7,23,0,0,11966,1996,1,0,0,0,11967, + 11968,7,11,0,0,11968,11969,7,7,0,0,11969,11970,7,14,0,0,11970,11971, + 5,95,0,0,11971,11972,7,6,0,0,11972,11973,7,19,0,0,11973,11974,5, + 95,0,0,11974,11975,7,6,0,0,11975,11976,7,15,0,0,11976,11977,7,23, + 0,0,11977,11978,7,7,0,0,11978,1998,1,0,0,0,11979,11980,7,11,0,0, + 11980,11981,7,7,0,0,11981,11982,7,14,0,0,11982,11983,7,19,0,0,11983, + 11984,7,12,0,0,11984,11985,7,4,0,0,11985,11986,7,3,0,0,11986,11987, + 7,8,0,0,11987,11988,7,10,0,0,11988,11989,5,95,0,0,11989,11990,7, + 7,0,0,11990,11991,7,12,0,0,11991,11992,7,22,0,0,11992,11993,7,15, + 0,0,11993,11994,7,12,0,0,11994,11995,7,7,0,0,11995,11996,5,95,0, + 0,11996,11997,7,3,0,0,11997,11998,7,6,0,0,11998,11999,7,6,0,0,11999, + 12000,7,8,0,0,12000,12001,7,15,0,0,12001,12002,7,16,0,0,12002,12003, + 7,17,0,0,12003,12004,7,6,0,0,12004,12005,7,7,0,0,12005,2000,1,0, + 0,0,12006,12007,7,11,0,0,12007,12008,7,7,0,0,12008,12009,7,11,0, + 0,12009,12010,7,11,0,0,12010,12011,7,15,0,0,12011,12012,7,19,0,0, + 12012,12013,7,12,0,0,12013,12014,5,95,0,0,12014,12015,7,17,0,0,12015, + 12016,7,11,0,0,12016,12017,7,7,0,0,12017,12018,7,8,0,0,12018,2002, + 1,0,0,0,12019,12020,7,11,0,0,12020,12021,7,20,0,0,12021,12022,7, + 3,0,0,12022,2004,1,0,0,0,12023,12024,7,11,0,0,12024,12025,7,20,0, + 0,12025,12026,7,3,0,0,12026,12027,5,49,0,0,12027,2006,1,0,0,0,12028, + 12029,7,11,0,0,12029,12030,7,20,0,0,12030,12031,7,3,0,0,12031,12032, + 5,50,0,0,12032,2008,1,0,0,0,12033,12034,7,11,0,0,12034,12035,7,14, + 0,0,12035,12036,7,20,0,0,12036,12037,7,7,0,0,12037,12038,7,23,0, + 0,12038,12039,7,3,0,0,12039,12040,5,95,0,0,12040,12041,7,12,0,0, + 12041,12042,7,3,0,0,12042,12043,7,23,0,0,12043,12044,7,7,0,0,12044, + 2010,1,0,0,0,12045,12046,7,11,0,0,12046,12047,7,15,0,0,12047,12048, + 7,22,0,0,12048,12049,7,12,0,0,12049,2012,1,0,0,0,12050,12051,7,11, + 0,0,12051,12052,7,15,0,0,12052,12053,7,12,0,0,12053,2014,1,0,0,0, + 12054,12055,7,11,0,0,12055,12056,7,5,0,0,12056,12057,7,7,0,0,12057, + 12058,7,7,0,0,12058,12059,7,25,0,0,12059,2016,1,0,0,0,12060,12061, + 7,11,0,0,12061,12062,7,19,0,0,12062,12063,7,17,0,0,12063,12064,7, + 12,0,0,12064,12065,7,4,0,0,12065,12066,7,7,0,0,12066,12067,7,26, + 0,0,12067,2018,1,0,0,0,12068,12069,7,11,0,0,12069,12070,7,28,0,0, + 12070,12071,7,5,0,0,12071,12072,5,95,0,0,12072,12073,7,6,0,0,12073, + 12074,7,20,0,0,12074,12075,7,8,0,0,12075,12076,7,7,0,0,12076,12077, + 7,3,0,0,12077,12078,7,4,0,0,12078,12079,5,95,0,0,12079,12080,7,9, + 0,0,12080,12081,7,3,0,0,12081,12082,7,15,0,0,12082,12083,7,6,0,0, + 12083,12084,5,95,0,0,12084,12085,7,3,0,0,12085,12086,7,18,0,0,12086, + 12087,7,6,0,0,12087,12088,7,7,0,0,12088,12089,7,8,0,0,12089,12090, + 5,95,0,0,12090,12091,7,22,0,0,12091,12092,7,6,0,0,12092,12093,7, + 15,0,0,12093,12094,7,4,0,0,12094,12095,7,11,0,0,12095,2020,1,0,0, + 0,12096,12097,7,11,0,0,12097,12098,7,28,0,0,12098,12099,7,8,0,0, + 12099,12100,7,6,0,0,12100,2022,1,0,0,0,12101,12102,7,11,0,0,12102, + 12103,7,8,0,0,12103,12104,7,15,0,0,12104,12105,7,4,0,0,12105,2024, + 1,0,0,0,12106,12107,7,11,0,0,12107,12108,7,6,0,0,12108,12109,7,3, + 0,0,12109,12110,7,8,0,0,12110,12111,7,6,0,0,12111,12112,7,25,0,0, + 12112,12113,7,19,0,0,12113,12114,7,15,0,0,12114,12115,7,12,0,0,12115, + 12116,7,6,0,0,12116,2026,1,0,0,0,12117,12118,7,11,0,0,12118,12119, + 7,6,0,0,12119,12120,7,8,0,0,12120,12121,7,14,0,0,12121,12122,7,23, + 0,0,12122,12123,7,25,0,0,12123,2028,1,0,0,0,12124,12125,7,11,0,0, + 12125,12126,7,6,0,0,12126,12127,7,8,0,0,12127,12128,5,95,0,0,12128, + 12129,7,6,0,0,12129,12130,7,19,0,0,12130,12131,5,95,0,0,12131,12132, + 7,4,0,0,12132,12133,7,3,0,0,12133,12134,7,6,0,0,12134,12135,7,7, + 0,0,12135,2030,1,0,0,0,12136,12137,7,11,0,0,12137,12138,7,6,0,0, + 12138,12139,5,95,0,0,12139,12140,7,3,0,0,12140,12141,7,8,0,0,12141, + 12142,7,7,0,0,12142,12143,7,3,0,0,12143,2032,1,0,0,0,12144,12145, + 7,11,0,0,12145,12146,7,6,0,0,12146,12147,5,95,0,0,12147,12148,7, + 3,0,0,12148,12149,7,11,0,0,12149,12150,7,16,0,0,12150,12151,7,15, + 0,0,12151,12152,7,12,0,0,12152,12153,7,3,0,0,12153,12154,7,8,0,0, + 12154,12155,7,10,0,0,12155,2034,1,0,0,0,12156,12157,7,11,0,0,12157, + 12158,7,6,0,0,12158,12159,5,95,0,0,12159,12160,7,3,0,0,12160,12161, + 7,11,0,0,12161,12162,7,6,0,0,12162,12163,7,7,0,0,12163,12164,7,26, + 0,0,12164,12165,7,6,0,0,12165,2036,1,0,0,0,12166,12167,7,11,0,0, + 12167,12168,7,6,0,0,12168,12169,5,95,0,0,12169,12170,7,3,0,0,12170, + 12171,7,11,0,0,12171,12172,7,9,0,0,12172,12173,7,21,0,0,12173,12174, + 7,16,0,0,12174,2038,1,0,0,0,12175,12176,7,11,0,0,12176,12177,7,6, + 0,0,12177,12178,5,95,0,0,12178,12179,7,3,0,0,12179,12180,7,11,0, + 0,12180,12181,7,9,0,0,12181,12182,7,21,0,0,12182,12183,7,6,0,0,12183, + 2040,1,0,0,0,12184,12185,7,11,0,0,12185,12186,7,6,0,0,12186,12187, + 5,95,0,0,12187,12188,7,16,0,0,12188,12189,7,17,0,0,12189,12190,7, + 18,0,0,12190,12191,7,18,0,0,12191,12192,7,7,0,0,12192,12193,7,8, + 0,0,12193,2042,1,0,0,0,12194,12195,7,11,0,0,12195,12196,7,6,0,0, + 12196,12197,5,95,0,0,12197,12198,7,14,0,0,12198,12199,7,7,0,0,12199, + 12200,7,12,0,0,12200,12201,7,6,0,0,12201,12202,7,8,0,0,12202,12203, + 7,19,0,0,12203,12204,7,15,0,0,12204,12205,7,4,0,0,12205,2044,1,0, + 0,0,12206,12207,7,11,0,0,12207,12208,7,6,0,0,12208,12209,5,95,0, + 0,12209,12210,7,14,0,0,12210,12211,7,19,0,0,12211,12212,7,12,0,0, + 12212,12213,7,6,0,0,12213,12214,7,3,0,0,12214,12215,7,15,0,0,12215, + 12216,7,12,0,0,12216,12217,7,11,0,0,12217,2046,1,0,0,0,12218,12219, + 7,11,0,0,12219,12220,7,6,0,0,12220,12221,5,95,0,0,12221,12222,7, + 14,0,0,12222,12223,7,8,0,0,12223,12224,7,19,0,0,12224,12225,7,11, + 0,0,12225,12226,7,11,0,0,12226,12227,7,7,0,0,12227,12228,7,11,0, + 0,12228,2048,1,0,0,0,12229,12230,7,11,0,0,12230,12231,7,6,0,0,12231, + 12232,5,95,0,0,12232,12233,7,4,0,0,12233,12234,7,15,0,0,12234,12235, + 7,18,0,0,12235,12236,7,18,0,0,12236,12237,7,7,0,0,12237,12238,7, + 8,0,0,12238,12239,7,7,0,0,12239,12240,7,12,0,0,12240,12241,7,14, + 0,0,12241,12242,7,7,0,0,12242,2050,1,0,0,0,12243,12244,7,11,0,0, + 12244,12245,7,6,0,0,12245,12246,5,95,0,0,12246,12247,7,4,0,0,12247, + 12248,7,15,0,0,12248,12249,7,23,0,0,12249,12250,7,7,0,0,12250,12251, + 7,12,0,0,12251,12252,7,11,0,0,12252,12253,7,15,0,0,12253,12254,7, + 19,0,0,12254,12255,7,12,0,0,12255,2052,1,0,0,0,12256,12257,7,11, + 0,0,12257,12258,7,6,0,0,12258,12259,5,95,0,0,12259,12260,7,4,0,0, + 12260,12261,7,15,0,0,12261,12262,7,11,0,0,12262,12263,7,27,0,0,12263, + 12264,7,19,0,0,12264,12265,7,15,0,0,12265,12266,7,12,0,0,12266,12267, + 7,6,0,0,12267,2054,1,0,0,0,12268,12269,7,11,0,0,12269,12270,7,6, + 0,0,12270,12271,5,95,0,0,12271,12272,7,4,0,0,12272,12273,7,15,0, + 0,12273,12274,7,11,0,0,12274,12275,7,6,0,0,12275,12276,7,3,0,0,12276, + 12277,7,12,0,0,12277,12278,7,14,0,0,12278,12279,7,7,0,0,12279,2056, + 1,0,0,0,12280,12281,7,11,0,0,12281,12282,7,6,0,0,12282,12283,5,95, + 0,0,12283,12284,7,7,0,0,12284,12285,7,12,0,0,12285,12286,7,4,0,0, + 12286,12287,7,25,0,0,12287,12288,7,19,0,0,12288,12289,7,15,0,0,12289, + 12290,7,12,0,0,12290,12291,7,6,0,0,12291,2058,1,0,0,0,12292,12293, + 7,11,0,0,12293,12294,7,6,0,0,12294,12295,5,95,0,0,12295,12296,7, + 7,0,0,12296,12297,7,12,0,0,12297,12298,7,24,0,0,12298,12299,7,7, + 0,0,12299,12300,7,5,0,0,12300,12301,7,19,0,0,12301,12302,7,25,0, + 0,12302,12303,7,7,0,0,12303,2060,1,0,0,0,12304,12305,7,11,0,0,12305, + 12306,7,6,0,0,12306,12307,5,95,0,0,12307,12308,7,7,0,0,12308,12309, + 7,28,0,0,12309,12310,7,17,0,0,12310,12311,7,3,0,0,12311,12312,7, + 5,0,0,12312,12313,7,11,0,0,12313,2062,1,0,0,0,12314,12315,7,11,0, + 0,12315,12316,7,6,0,0,12316,12317,5,95,0,0,12317,12318,7,7,0,0,12318, + 12319,7,26,0,0,12319,12320,7,6,0,0,12320,12321,7,7,0,0,12321,12322, + 7,8,0,0,12322,12323,7,15,0,0,12323,12324,7,19,0,0,12324,12325,7, + 8,0,0,12325,12326,7,8,0,0,12326,12327,7,15,0,0,12327,12328,7,12, + 0,0,12328,12329,7,22,0,0,12329,2064,1,0,0,0,12330,12331,7,11,0,0, + 12331,12332,7,6,0,0,12332,12333,5,95,0,0,12333,12334,7,22,0,0,12334, + 12335,7,7,0,0,12335,12336,7,19,0,0,12336,12337,7,23,0,0,12337,12338, + 7,14,0,0,12338,12339,7,19,0,0,12339,12340,7,5,0,0,12340,12341,7, + 5,0,0,12341,12342,7,18,0,0,12342,12343,7,8,0,0,12343,12344,7,19, + 0,0,12344,12345,7,23,0,0,12345,12346,7,6,0,0,12346,12347,7,7,0,0, + 12347,12348,7,26,0,0,12348,12349,7,6,0,0,12349,2066,1,0,0,0,12350, + 12351,7,11,0,0,12351,12352,7,6,0,0,12352,12353,5,95,0,0,12353,12354, + 7,22,0,0,12354,12355,7,7,0,0,12355,12356,7,19,0,0,12356,12357,7, + 23,0,0,12357,12358,7,14,0,0,12358,12359,7,19,0,0,12359,12360,7,5, + 0,0,12360,12361,7,5,0,0,12361,12362,7,18,0,0,12362,12363,7,8,0,0, + 12363,12364,7,19,0,0,12364,12365,7,23,0,0,12365,12366,7,6,0,0,12366, + 12367,7,26,0,0,12367,12368,7,6,0,0,12368,2068,1,0,0,0,12369,12370, + 7,11,0,0,12370,12371,7,6,0,0,12371,12372,5,95,0,0,12372,12373,7, + 22,0,0,12373,12374,7,7,0,0,12374,12375,7,19,0,0,12375,12376,7,23, + 0,0,12376,12377,7,14,0,0,12377,12378,7,19,0,0,12378,12379,7,5,0, + 0,12379,12380,7,5,0,0,12380,12381,7,18,0,0,12381,12382,7,8,0,0,12382, + 12383,7,19,0,0,12383,12384,7,23,0,0,12384,12385,7,9,0,0,12385,12386, + 7,21,0,0,12386,12387,7,16,0,0,12387,2070,1,0,0,0,12388,12389,7,11, + 0,0,12389,12390,7,6,0,0,12390,12391,5,95,0,0,12391,12392,7,22,0, + 0,12392,12393,7,7,0,0,12393,12394,7,19,0,0,12394,12395,7,23,0,0, + 12395,12396,7,7,0,0,12396,12397,7,6,0,0,12397,12398,7,8,0,0,12398, + 12399,7,10,0,0,12399,12400,7,14,0,0,12400,12401,7,19,0,0,12401,12402, + 7,5,0,0,12402,12403,7,5,0,0,12403,12404,7,7,0,0,12404,12405,7,14, + 0,0,12405,12406,7,6,0,0,12406,12407,7,15,0,0,12407,12408,7,19,0, + 0,12408,12409,7,12,0,0,12409,12410,7,18,0,0,12410,12411,7,8,0,0, + 12411,12412,7,19,0,0,12412,12413,7,23,0,0,12413,12414,7,6,0,0,12414, + 12415,7,7,0,0,12415,12416,7,26,0,0,12416,12417,7,6,0,0,12417,2072, + 1,0,0,0,12418,12419,7,11,0,0,12419,12420,7,6,0,0,12420,12421,5,95, + 0,0,12421,12422,7,22,0,0,12422,12423,7,7,0,0,12423,12424,7,19,0, + 0,12424,12425,7,23,0,0,12425,12426,7,7,0,0,12426,12427,7,6,0,0,12427, + 12428,7,8,0,0,12428,12429,7,10,0,0,12429,12430,7,14,0,0,12430,12431, + 7,19,0,0,12431,12432,7,5,0,0,12432,12433,7,5,0,0,12433,12434,7,7, + 0,0,12434,12435,7,14,0,0,12435,12436,7,6,0,0,12436,12437,7,15,0, + 0,12437,12438,7,19,0,0,12438,12439,7,12,0,0,12439,12440,7,18,0,0, + 12440,12441,7,8,0,0,12441,12442,7,19,0,0,12442,12443,7,23,0,0,12443, + 12444,7,9,0,0,12444,12445,7,21,0,0,12445,12446,7,16,0,0,12446,2074, + 1,0,0,0,12447,12448,7,11,0,0,12448,12449,7,6,0,0,12449,12450,5,95, + 0,0,12450,12451,7,22,0,0,12451,12452,7,7,0,0,12452,12453,7,19,0, + 0,12453,12454,7,23,0,0,12454,12455,7,7,0,0,12455,12456,7,6,0,0,12456, + 12457,7,8,0,0,12457,12458,7,10,0,0,12458,12459,7,18,0,0,12459,12460, + 7,8,0,0,12460,12461,7,19,0,0,12461,12462,7,23,0,0,12462,12463,7, + 6,0,0,12463,12464,7,7,0,0,12464,12465,7,26,0,0,12465,12466,7,6,0, + 0,12466,2076,1,0,0,0,12467,12468,7,11,0,0,12468,12469,7,6,0,0,12469, + 12470,5,95,0,0,12470,12471,7,22,0,0,12471,12472,7,7,0,0,12472,12473, + 7,19,0,0,12473,12474,7,23,0,0,12474,12475,7,7,0,0,12475,12476,7, + 6,0,0,12476,12477,7,8,0,0,12477,12478,7,10,0,0,12478,12479,7,18, + 0,0,12479,12480,7,8,0,0,12480,12481,7,19,0,0,12481,12482,7,23,0, + 0,12482,12483,7,9,0,0,12483,12484,7,21,0,0,12484,12485,7,16,0,0, + 12485,2078,1,0,0,0,12486,12487,7,11,0,0,12487,12488,7,6,0,0,12488, + 12489,5,95,0,0,12489,12490,7,22,0,0,12490,12491,7,7,0,0,12491,12492, + 7,19,0,0,12492,12493,7,23,0,0,12493,12494,7,7,0,0,12494,12495,7, + 6,0,0,12495,12496,7,8,0,0,12496,12497,7,10,0,0,12497,12498,7,12, + 0,0,12498,2080,1,0,0,0,12499,12500,7,11,0,0,12500,12501,7,6,0,0, + 12501,12502,5,95,0,0,12502,12503,7,22,0,0,12503,12504,7,7,0,0,12504, + 12505,7,19,0,0,12505,12506,7,23,0,0,12506,12507,7,7,0,0,12507,12508, + 7,6,0,0,12508,12509,7,8,0,0,12509,12510,7,10,0,0,12510,12511,7,6, + 0,0,12511,12512,7,10,0,0,12512,12513,7,25,0,0,12513,12514,7,7,0, + 0,12514,2082,1,0,0,0,12515,12516,7,11,0,0,12516,12517,7,6,0,0,12517, + 12518,5,95,0,0,12518,12519,7,22,0,0,12519,12520,7,7,0,0,12520,12521, + 7,19,0,0,12521,12522,7,23,0,0,12522,12523,7,18,0,0,12523,12524,7, + 8,0,0,12524,12525,7,19,0,0,12525,12526,7,23,0,0,12526,12527,7,6, + 0,0,12527,12528,7,7,0,0,12528,12529,7,26,0,0,12529,12530,7,6,0,0, + 12530,2084,1,0,0,0,12531,12532,7,11,0,0,12532,12533,7,6,0,0,12533, + 12534,5,95,0,0,12534,12535,7,22,0,0,12535,12536,7,7,0,0,12536,12537, + 7,19,0,0,12537,12538,7,23,0,0,12538,12539,7,18,0,0,12539,12540,7, + 8,0,0,12540,12541,7,19,0,0,12541,12542,7,23,0,0,12542,12543,7,9, + 0,0,12543,12544,7,21,0,0,12544,12545,7,16,0,0,12545,2086,1,0,0,0, + 12546,12547,7,11,0,0,12547,12548,7,6,0,0,12548,12549,5,95,0,0,12549, + 12550,7,15,0,0,12550,12551,7,12,0,0,12551,12552,7,6,0,0,12552,12553, + 7,7,0,0,12553,12554,7,8,0,0,12554,12555,7,15,0,0,12555,12556,7,19, + 0,0,12556,12557,7,8,0,0,12557,12558,7,8,0,0,12558,12559,7,15,0,0, + 12559,12560,7,12,0,0,12560,12561,7,22,0,0,12561,12562,7,12,0,0,12562, + 2088,1,0,0,0,12563,12564,7,11,0,0,12564,12565,7,6,0,0,12565,12566, + 5,95,0,0,12566,12567,7,15,0,0,12567,12568,7,12,0,0,12568,12569,7, + 6,0,0,12569,12570,7,7,0,0,12570,12571,7,8,0,0,12571,12572,7,11,0, + 0,12572,12573,7,7,0,0,12573,12574,7,14,0,0,12574,12575,7,6,0,0,12575, + 12576,7,15,0,0,12576,12577,7,19,0,0,12577,12578,7,12,0,0,12578,2090, + 1,0,0,0,12579,12580,7,11,0,0,12580,12581,7,6,0,0,12581,12582,5,95, + 0,0,12582,12583,7,15,0,0,12583,12584,7,12,0,0,12584,12585,7,6,0, + 0,12585,12586,7,7,0,0,12586,12587,7,8,0,0,12587,12588,7,11,0,0,12588, + 12589,7,7,0,0,12589,12590,7,14,0,0,12590,12591,7,6,0,0,12591,12592, + 7,11,0,0,12592,2092,1,0,0,0,12593,12594,7,11,0,0,12594,12595,7,6, + 0,0,12595,12596,5,95,0,0,12596,12597,7,15,0,0,12597,12598,7,11,0, + 0,12598,12599,7,14,0,0,12599,12600,7,5,0,0,12600,12601,7,19,0,0, + 12601,12602,7,11,0,0,12602,12603,7,7,0,0,12603,12604,7,4,0,0,12604, + 2094,1,0,0,0,12605,12606,7,11,0,0,12606,12607,7,6,0,0,12607,12608, + 5,95,0,0,12608,12609,7,15,0,0,12609,12610,7,11,0,0,12610,12611,7, + 7,0,0,12611,12612,7,23,0,0,12612,12613,7,25,0,0,12613,12614,7,6, + 0,0,12614,12615,7,10,0,0,12615,2096,1,0,0,0,12616,12617,7,11,0,0, + 12617,12618,7,6,0,0,12618,12619,5,95,0,0,12619,12620,7,15,0,0,12620, + 12621,7,11,0,0,12621,12622,7,11,0,0,12622,12623,7,15,0,0,12623,12624, + 7,23,0,0,12624,12625,7,25,0,0,12625,12626,7,5,0,0,12626,12627,7, + 7,0,0,12627,2098,1,0,0,0,12628,12629,7,11,0,0,12629,12630,7,6,0, + 0,12630,12631,5,95,0,0,12631,12632,7,5,0,0,12632,12633,7,15,0,0, + 12633,12634,7,12,0,0,12634,12635,7,7,0,0,12635,12636,7,18,0,0,12636, + 12637,7,8,0,0,12637,12638,7,19,0,0,12638,12639,7,23,0,0,12639,12640, + 7,6,0,0,12640,12641,7,7,0,0,12641,12642,7,26,0,0,12642,12643,7,6, + 0,0,12643,2100,1,0,0,0,12644,12645,7,11,0,0,12645,12646,7,6,0,0, + 12646,12647,5,95,0,0,12647,12648,7,5,0,0,12648,12649,7,15,0,0,12649, + 12650,7,12,0,0,12650,12651,7,7,0,0,12651,12652,7,18,0,0,12652,12653, + 7,8,0,0,12653,12654,7,19,0,0,12654,12655,7,23,0,0,12655,12656,7, + 9,0,0,12656,12657,7,21,0,0,12657,12658,7,16,0,0,12658,2102,1,0,0, + 0,12659,12660,7,11,0,0,12660,12661,7,6,0,0,12661,12662,5,95,0,0, + 12662,12663,7,5,0,0,12663,12664,7,15,0,0,12664,12665,7,12,0,0,12665, + 12666,7,7,0,0,12666,12667,7,11,0,0,12667,12668,7,6,0,0,12668,12669, + 7,8,0,0,12669,12670,7,15,0,0,12670,12671,7,12,0,0,12671,12672,7, + 22,0,0,12672,12673,7,18,0,0,12673,12674,7,8,0,0,12674,12675,7,19, + 0,0,12675,12676,7,23,0,0,12676,12677,7,6,0,0,12677,12678,7,7,0,0, + 12678,12679,7,26,0,0,12679,12680,7,6,0,0,12680,2104,1,0,0,0,12681, + 12682,7,11,0,0,12682,12683,7,6,0,0,12683,12684,5,95,0,0,12684,12685, + 7,5,0,0,12685,12686,7,15,0,0,12686,12687,7,12,0,0,12687,12688,7, + 7,0,0,12688,12689,7,11,0,0,12689,12690,7,6,0,0,12690,12691,7,8,0, + 0,12691,12692,7,15,0,0,12692,12693,7,12,0,0,12693,12694,7,22,0,0, + 12694,12695,7,18,0,0,12695,12696,7,8,0,0,12696,12697,7,19,0,0,12697, + 12698,7,23,0,0,12698,12699,7,9,0,0,12699,12700,7,21,0,0,12700,12701, + 7,16,0,0,12701,2106,1,0,0,0,12702,12703,7,11,0,0,12703,12704,7,6, + 0,0,12704,12705,5,95,0,0,12705,12706,7,12,0,0,12706,12707,7,17,0, + 0,12707,12708,7,23,0,0,12708,12709,7,22,0,0,12709,12710,7,7,0,0, + 12710,12711,7,19,0,0,12711,12712,7,23,0,0,12712,12713,7,7,0,0,12713, + 12714,7,6,0,0,12714,12715,7,8,0,0,12715,12716,7,15,0,0,12716,12717, + 7,7,0,0,12717,12718,7,11,0,0,12718,2108,1,0,0,0,12719,12720,7,11, + 0,0,12720,12721,7,6,0,0,12721,12722,5,95,0,0,12722,12723,7,12,0, + 0,12723,12724,7,17,0,0,12724,12725,7,23,0,0,12725,12726,7,15,0,0, + 12726,12727,7,12,0,0,12727,12728,7,6,0,0,12728,12729,7,7,0,0,12729, + 12730,7,8,0,0,12730,12731,7,15,0,0,12731,12732,7,19,0,0,12732,12733, + 7,8,0,0,12733,12734,7,8,0,0,12734,12735,7,15,0,0,12735,12736,7,12, + 0,0,12736,12737,7,22,0,0,12737,2110,1,0,0,0,12738,12739,7,11,0,0, + 12739,12740,7,6,0,0,12740,12741,5,95,0,0,12741,12742,7,12,0,0,12742, + 12743,7,17,0,0,12743,12744,7,23,0,0,12744,12745,7,15,0,0,12745,12746, + 7,12,0,0,12746,12747,7,6,0,0,12747,12748,7,7,0,0,12748,12749,7,8, + 0,0,12749,12750,7,15,0,0,12750,12751,7,19,0,0,12751,12752,7,8,0, + 0,12752,12753,7,8,0,0,12753,12754,7,15,0,0,12754,12755,7,12,0,0, + 12755,12756,7,22,0,0,12756,12757,7,11,0,0,12757,2112,1,0,0,0,12758, + 12759,7,11,0,0,12759,12760,7,6,0,0,12760,12761,5,95,0,0,12761,12762, + 7,12,0,0,12762,12763,7,17,0,0,12763,12764,7,23,0,0,12764,12765,7, + 25,0,0,12765,12766,7,19,0,0,12766,12767,7,15,0,0,12767,12768,7,12, + 0,0,12768,12769,7,6,0,0,12769,12770,7,11,0,0,12770,2114,1,0,0,0, + 12771,12772,7,11,0,0,12772,12773,7,6,0,0,12773,12774,5,95,0,0,12774, + 12775,7,19,0,0,12775,12776,7,24,0,0,12776,12777,7,7,0,0,12777,12778, + 7,8,0,0,12778,12779,7,5,0,0,12779,12780,7,3,0,0,12780,12781,7,25, + 0,0,12781,12782,7,11,0,0,12782,2116,1,0,0,0,12783,12784,7,11,0,0, + 12784,12785,7,6,0,0,12785,12786,5,95,0,0,12786,12787,7,25,0,0,12787, + 12788,7,19,0,0,12788,12789,7,15,0,0,12789,12790,7,12,0,0,12790,12791, + 7,6,0,0,12791,12792,7,18,0,0,12792,12793,7,8,0,0,12793,12794,7,19, + 0,0,12794,12795,7,23,0,0,12795,12796,7,6,0,0,12796,12797,7,7,0,0, + 12797,12798,7,26,0,0,12798,12799,7,6,0,0,12799,2118,1,0,0,0,12800, + 12801,7,11,0,0,12801,12802,7,6,0,0,12802,12803,5,95,0,0,12803,12804, + 7,25,0,0,12804,12805,7,19,0,0,12805,12806,7,15,0,0,12806,12807,7, + 12,0,0,12807,12808,7,6,0,0,12808,12809,7,18,0,0,12809,12810,7,8, + 0,0,12810,12811,7,19,0,0,12811,12812,7,23,0,0,12812,12813,7,9,0, + 0,12813,12814,7,21,0,0,12814,12815,7,16,0,0,12815,2120,1,0,0,0,12816, + 12817,7,11,0,0,12817,12818,7,6,0,0,12818,12819,5,95,0,0,12819,12820, + 7,25,0,0,12820,12821,7,19,0,0,12821,12822,7,15,0,0,12822,12823,7, + 12,0,0,12823,12824,7,6,0,0,12824,12825,7,12,0,0,12825,2122,1,0,0, + 0,12826,12827,7,11,0,0,12827,12828,7,6,0,0,12828,12829,5,95,0,0, + 12829,12830,7,25,0,0,12830,12831,7,19,0,0,12831,12832,7,5,0,0,12832, + 12833,7,10,0,0,12833,12834,7,18,0,0,12834,12835,7,8,0,0,12835,12836, + 7,19,0,0,12836,12837,7,23,0,0,12837,12838,7,6,0,0,12838,12839,7, + 7,0,0,12839,12840,7,26,0,0,12840,12841,7,6,0,0,12841,2124,1,0,0, + 0,12842,12843,7,11,0,0,12843,12844,7,6,0,0,12844,12845,5,95,0,0, + 12845,12846,7,25,0,0,12846,12847,7,19,0,0,12847,12848,7,5,0,0,12848, + 12849,7,10,0,0,12849,12850,7,18,0,0,12850,12851,7,8,0,0,12851,12852, + 7,19,0,0,12852,12853,7,23,0,0,12853,12854,7,9,0,0,12854,12855,7, + 21,0,0,12855,12856,7,16,0,0,12856,2126,1,0,0,0,12857,12858,7,11, + 0,0,12858,12859,7,6,0,0,12859,12860,5,95,0,0,12860,12861,7,25,0, + 0,12861,12862,7,19,0,0,12862,12863,7,5,0,0,12863,12864,7,10,0,0, + 12864,12865,7,22,0,0,12865,12866,7,19,0,0,12866,12867,7,12,0,0,12867, + 12868,7,18,0,0,12868,12869,7,8,0,0,12869,12870,7,19,0,0,12870,12871, + 7,23,0,0,12871,12872,7,6,0,0,12872,12873,7,7,0,0,12873,12874,7,26, + 0,0,12874,12875,7,6,0,0,12875,2128,1,0,0,0,12876,12877,7,11,0,0, + 12877,12878,7,6,0,0,12878,12879,5,95,0,0,12879,12880,7,25,0,0,12880, + 12881,7,19,0,0,12881,12882,7,5,0,0,12882,12883,7,10,0,0,12883,12884, + 7,22,0,0,12884,12885,7,19,0,0,12885,12886,7,12,0,0,12886,12887,7, + 18,0,0,12887,12888,7,8,0,0,12888,12889,7,19,0,0,12889,12890,7,23, + 0,0,12890,12891,7,9,0,0,12891,12892,7,21,0,0,12892,12893,7,16,0, + 0,12893,2130,1,0,0,0,12894,12895,7,11,0,0,12895,12896,7,6,0,0,12896, + 12897,5,95,0,0,12897,12898,7,11,0,0,12898,12899,7,8,0,0,12899,12900, + 7,15,0,0,12900,12901,7,4,0,0,12901,2132,1,0,0,0,12902,12903,7,11, + 0,0,12903,12904,7,6,0,0,12904,12905,5,95,0,0,12905,12906,7,11,0, + 0,12906,12907,7,6,0,0,12907,12908,7,3,0,0,12908,12909,7,8,0,0,12909, + 12910,7,6,0,0,12910,12911,7,25,0,0,12911,12912,7,19,0,0,12912,12913, + 7,15,0,0,12913,12914,7,12,0,0,12914,12915,7,6,0,0,12915,2134,1,0, + 0,0,12916,12917,7,11,0,0,12917,12918,7,6,0,0,12918,12919,5,95,0, + 0,12919,12920,7,11,0,0,12920,12921,7,10,0,0,12921,12922,7,23,0,0, + 12922,12923,7,4,0,0,12923,12924,7,15,0,0,12924,12925,7,18,0,0,12925, + 12926,7,18,0,0,12926,12927,7,7,0,0,12927,12928,7,8,0,0,12928,12929, + 7,7,0,0,12929,12930,7,12,0,0,12930,12931,7,14,0,0,12931,12932,7, + 7,0,0,12932,2136,1,0,0,0,12933,12934,7,11,0,0,12934,12935,7,6,0, + 0,12935,12936,5,95,0,0,12936,12937,7,6,0,0,12937,12938,7,19,0,0, + 12938,12939,7,17,0,0,12939,12940,7,14,0,0,12940,12941,7,20,0,0,12941, + 12942,7,7,0,0,12942,12943,7,11,0,0,12943,2138,1,0,0,0,12944,12945, + 7,11,0,0,12945,12946,7,6,0,0,12946,12947,5,95,0,0,12947,12948,7, + 17,0,0,12948,12949,7,12,0,0,12949,12950,7,15,0,0,12950,12951,7,19, + 0,0,12951,12952,7,12,0,0,12952,2140,1,0,0,0,12953,12954,7,11,0,0, + 12954,12955,7,6,0,0,12955,12956,5,95,0,0,12956,12957,7,9,0,0,12957, + 12958,7,15,0,0,12958,12959,7,6,0,0,12959,12960,7,20,0,0,12960,12961, + 7,15,0,0,12961,12962,7,12,0,0,12962,2142,1,0,0,0,12963,12964,7,11, + 0,0,12964,12965,7,6,0,0,12965,12966,5,95,0,0,12966,12967,7,26,0, + 0,12967,2144,1,0,0,0,12968,12969,7,11,0,0,12969,12970,7,6,0,0,12970, + 12971,5,95,0,0,12971,12972,7,10,0,0,12972,2146,1,0,0,0,12973,12974, + 7,11,0,0,12974,12975,7,17,0,0,12975,12976,7,16,0,0,12976,12977,7, + 4,0,0,12977,12978,7,3,0,0,12978,12979,7,6,0,0,12979,12980,7,7,0, + 0,12980,2148,1,0,0,0,12981,12982,7,11,0,0,12982,12983,7,17,0,0,12983, + 12984,7,16,0,0,12984,12985,7,11,0,0,12985,12986,7,6,0,0,12986,12987, + 7,8,0,0,12987,12988,7,15,0,0,12988,12989,7,12,0,0,12989,12990,7, + 22,0,0,12990,12991,5,95,0,0,12991,12992,7,15,0,0,12992,12993,7,12, + 0,0,12993,12994,7,4,0,0,12994,12995,7,7,0,0,12995,12996,7,26,0,0, + 12996,2150,1,0,0,0,12997,12998,7,11,0,0,12998,12999,7,17,0,0,12999, + 13000,7,16,0,0,13000,13001,7,6,0,0,13001,13002,7,15,0,0,13002,13003, + 7,23,0,0,13003,13004,7,7,0,0,13004,2152,1,0,0,0,13005,13006,7,11, + 0,0,13006,13007,7,10,0,0,13007,13008,7,11,0,0,13008,13009,7,6,0, + 0,13009,13010,7,7,0,0,13010,13011,7,23,0,0,13011,13012,5,95,0,0, + 13012,13013,7,17,0,0,13013,13014,7,11,0,0,13014,13015,7,7,0,0,13015, + 13016,7,8,0,0,13016,2154,1,0,0,0,13017,13018,7,6,0,0,13018,13019, + 7,3,0,0,13019,13020,7,12,0,0,13020,2156,1,0,0,0,13021,13022,7,6, + 0,0,13022,13023,7,15,0,0,13023,13024,7,23,0,0,13024,13025,7,7,0, + 0,13025,13026,7,4,0,0,13026,13027,7,15,0,0,13027,13028,7,18,0,0, + 13028,13029,7,18,0,0,13029,2158,1,0,0,0,13030,13031,7,6,0,0,13031, + 13032,7,15,0,0,13032,13033,7,23,0,0,13033,13034,7,7,0,0,13034,13035, + 7,11,0,0,13035,13036,7,6,0,0,13036,13037,7,3,0,0,13037,13038,7,23, + 0,0,13038,13039,7,25,0,0,13039,13040,7,3,0,0,13040,13041,7,4,0,0, + 13041,13042,7,4,0,0,13042,2160,1,0,0,0,13043,13044,7,6,0,0,13044, + 13045,7,15,0,0,13045,13046,7,23,0,0,13046,13047,7,7,0,0,13047,13048, + 7,11,0,0,13048,13049,7,6,0,0,13049,13050,7,3,0,0,13050,13051,7,23, + 0,0,13051,13052,7,25,0,0,13052,13053,7,4,0,0,13053,13054,7,15,0, + 0,13054,13055,7,18,0,0,13055,13056,7,18,0,0,13056,2162,1,0,0,0,13057, + 13058,7,6,0,0,13058,13059,7,15,0,0,13059,13060,7,23,0,0,13060,13061, + 7,7,0,0,13061,13062,5,95,0,0,13062,13063,7,18,0,0,13063,13064,7, + 19,0,0,13064,13065,7,8,0,0,13065,13066,7,23,0,0,13066,13067,7,3, + 0,0,13067,13068,7,6,0,0,13068,2164,1,0,0,0,13069,13070,7,6,0,0,13070, + 13071,7,15,0,0,13071,13072,7,23,0,0,13072,13073,7,7,0,0,13073,13074, + 5,95,0,0,13074,13075,7,6,0,0,13075,13076,7,19,0,0,13076,13077,5, + 95,0,0,13077,13078,7,11,0,0,13078,13079,7,7,0,0,13079,13080,7,14, + 0,0,13080,2166,1,0,0,0,13081,13082,7,6,0,0,13082,13083,7,19,0,0, + 13083,13084,7,17,0,0,13084,13085,7,14,0,0,13085,13086,7,20,0,0,13086, + 13087,7,7,0,0,13087,13088,7,11,0,0,13088,2168,1,0,0,0,13089,13090, + 7,6,0,0,13090,13091,7,19,0,0,13091,13092,5,95,0,0,13092,13093,7, + 16,0,0,13093,13094,7,3,0,0,13094,13095,7,11,0,0,13095,13096,7,7, + 0,0,13096,13097,5,54,0,0,13097,13098,5,52,0,0,13098,2170,1,0,0,0, + 13099,13100,7,6,0,0,13100,13101,7,19,0,0,13101,13102,5,95,0,0,13102, + 13103,7,4,0,0,13103,13104,7,3,0,0,13104,13105,7,10,0,0,13105,13106, + 7,11,0,0,13106,2172,1,0,0,0,13107,13108,7,6,0,0,13108,13109,7,19, + 0,0,13109,13110,5,95,0,0,13110,13111,7,11,0,0,13111,13112,7,7,0, + 0,13112,13113,7,14,0,0,13113,13114,7,19,0,0,13114,13115,7,12,0,0, + 13115,13116,7,4,0,0,13116,13117,7,11,0,0,13117,2174,1,0,0,0,13118, + 13119,7,6,0,0,13119,13120,7,25,0,0,13120,13121,5,95,0,0,13121,13122, + 7,14,0,0,13122,13123,7,19,0,0,13123,13124,7,12,0,0,13124,13125,7, + 12,0,0,13125,13126,7,7,0,0,13126,13127,7,14,0,0,13127,13128,7,6, + 0,0,13128,13129,7,15,0,0,13129,13130,7,19,0,0,13130,13131,7,12,0, + 0,13131,13132,5,95,0,0,13132,13133,7,3,0,0,13133,13134,7,4,0,0,13134, + 13135,7,23,0,0,13135,13136,7,15,0,0,13136,13137,7,12,0,0,13137,2176, + 1,0,0,0,13138,13139,7,17,0,0,13139,13140,7,14,0,0,13140,13141,7, + 3,0,0,13141,13142,7,11,0,0,13142,13143,7,7,0,0,13143,2178,1,0,0, + 0,13144,13145,7,17,0,0,13145,13146,7,12,0,0,13146,13147,7,14,0,0, + 13147,13148,7,19,0,0,13148,13149,7,23,0,0,13149,13150,7,25,0,0,13150, + 13151,7,8,0,0,13151,13152,7,7,0,0,13152,13153,7,11,0,0,13153,13154, + 7,11,0,0,13154,2180,1,0,0,0,13155,13156,7,17,0,0,13156,13157,7,12, + 0,0,13157,13158,7,14,0,0,13158,13159,7,19,0,0,13159,13160,7,23,0, + 0,13160,13161,7,25,0,0,13161,13162,7,8,0,0,13162,13163,7,7,0,0,13163, + 13164,7,11,0,0,13164,13165,7,11,0,0,13165,13166,7,7,0,0,13166,13167, + 7,4,0,0,13167,13168,5,95,0,0,13168,13169,7,5,0,0,13169,13170,7,7, + 0,0,13170,13171,7,12,0,0,13171,13172,7,22,0,0,13172,13173,7,6,0, + 0,13173,13174,7,20,0,0,13174,2182,1,0,0,0,13175,13176,7,17,0,0,13176, + 13177,7,12,0,0,13177,13178,7,20,0,0,13178,13179,7,7,0,0,13179,13180, + 7,26,0,0,13180,2184,1,0,0,0,13181,13182,7,17,0,0,13182,13183,7,12, + 0,0,13183,13184,7,15,0,0,13184,13185,7,26,0,0,13185,13186,5,95,0, + 0,13186,13187,7,6,0,0,13187,13188,7,15,0,0,13188,13189,7,23,0,0, + 13189,13190,7,7,0,0,13190,13191,7,11,0,0,13191,13192,7,6,0,0,13192, + 13193,7,3,0,0,13193,13194,7,23,0,0,13194,13195,7,25,0,0,13195,2186, + 1,0,0,0,13196,13197,7,17,0,0,13197,13198,7,25,0,0,13198,13199,7, + 4,0,0,13199,13200,7,3,0,0,13200,13201,7,6,0,0,13201,13202,7,7,0, + 0,13202,13203,7,26,0,0,13203,13204,7,23,0,0,13204,13205,7,5,0,0, + 13205,2188,1,0,0,0,13206,13207,7,17,0,0,13207,13208,7,25,0,0,13208, + 13209,7,25,0,0,13209,13210,7,7,0,0,13210,13211,7,8,0,0,13211,2190, + 1,0,0,0,13212,13213,7,17,0,0,13213,13214,7,17,0,0,13214,13215,7, + 15,0,0,13215,13216,7,4,0,0,13216,2192,1,0,0,0,13217,13218,7,17,0, + 0,13218,13219,7,17,0,0,13219,13220,7,15,0,0,13220,13221,7,4,0,0, + 13221,13222,5,95,0,0,13222,13223,7,11,0,0,13223,13224,7,20,0,0,13224, + 13225,7,19,0,0,13225,13226,7,8,0,0,13226,13227,7,6,0,0,13227,2194, + 1,0,0,0,13228,13229,7,24,0,0,13229,13230,7,3,0,0,13230,13231,7,5, + 0,0,13231,13232,7,15,0,0,13232,13233,7,4,0,0,13233,13234,7,3,0,0, + 13234,13235,7,6,0,0,13235,13236,7,7,0,0,13236,13237,5,95,0,0,13237, + 13238,7,25,0,0,13238,13239,7,3,0,0,13239,13240,7,11,0,0,13240,13241, + 7,11,0,0,13241,13242,7,9,0,0,13242,13243,7,19,0,0,13243,13244,7, + 8,0,0,13244,13245,7,4,0,0,13245,13246,5,95,0,0,13246,13247,7,11, + 0,0,13247,13248,7,6,0,0,13248,13249,7,8,0,0,13249,13250,7,7,0,0, + 13250,13251,7,12,0,0,13251,13252,7,22,0,0,13252,13253,7,6,0,0,13253, + 13254,7,20,0,0,13254,2196,1,0,0,0,13255,13256,7,24,0,0,13256,13257, + 7,7,0,0,13257,13258,7,8,0,0,13258,13259,7,11,0,0,13259,13260,7,15, + 0,0,13260,13261,7,19,0,0,13261,13262,7,12,0,0,13262,2198,1,0,0,0, + 13263,13264,7,9,0,0,13264,13265,7,3,0,0,13265,13266,7,15,0,0,13266, + 13267,7,6,0,0,13267,13268,5,95,0,0,13268,13269,7,17,0,0,13269,13270, + 7,12,0,0,13270,13271,7,6,0,0,13271,13272,7,15,0,0,13272,13273,7, + 5,0,0,13273,13274,5,95,0,0,13274,13275,7,11,0,0,13275,13276,7,28, + 0,0,13276,13277,7,5,0,0,13277,13278,5,95,0,0,13278,13279,7,6,0,0, + 13279,13280,7,20,0,0,13280,13281,7,8,0,0,13281,13282,7,7,0,0,13282, + 13283,7,3,0,0,13283,13284,7,4,0,0,13284,13285,5,95,0,0,13285,13286, + 7,3,0,0,13286,13287,7,18,0,0,13287,13288,7,6,0,0,13288,13289,7,7, + 0,0,13289,13290,7,8,0,0,13290,13291,5,95,0,0,13291,13292,7,22,0, + 0,13292,13293,7,6,0,0,13293,13294,7,15,0,0,13294,13295,7,4,0,0,13295, + 13296,7,11,0,0,13296,2200,1,0,0,0,13297,13298,7,9,0,0,13298,13299, + 7,7,0,0,13299,13300,7,7,0,0,13300,13301,7,21,0,0,13301,13302,7,4, + 0,0,13302,13303,7,3,0,0,13303,13304,7,10,0,0,13304,2202,1,0,0,0, + 13305,13306,7,9,0,0,13306,13307,7,7,0,0,13307,13308,7,7,0,0,13308, + 13309,7,21,0,0,13309,13310,7,19,0,0,13310,13311,7,18,0,0,13311,13312, + 7,10,0,0,13312,13313,7,7,0,0,13313,13314,7,3,0,0,13314,13315,7,8, + 0,0,13315,2204,1,0,0,0,13316,13317,7,9,0,0,13317,13318,7,7,0,0,13318, + 13319,7,15,0,0,13319,13320,7,22,0,0,13320,13321,7,20,0,0,13321,13322, + 7,6,0,0,13322,13323,5,95,0,0,13323,13324,7,11,0,0,13324,13325,7, + 6,0,0,13325,13326,7,8,0,0,13326,13327,7,15,0,0,13327,13328,7,12, + 0,0,13328,13329,7,22,0,0,13329,2206,1,0,0,0,13330,13331,7,9,0,0, + 13331,13332,7,15,0,0,13332,13333,7,6,0,0,13333,13334,7,20,0,0,13334, + 13335,7,15,0,0,13335,13336,7,12,0,0,13336,2208,1,0,0,0,13337,13338, + 7,10,0,0,13338,13339,7,7,0,0,13339,13340,7,3,0,0,13340,13341,7,8, + 0,0,13341,13342,7,9,0,0,13342,13343,7,7,0,0,13343,13344,7,7,0,0, + 13344,13345,7,21,0,0,13345,2210,1,0,0,0,13346,13347,7,10,0,0,13347, + 2212,1,0,0,0,13348,13349,7,26,0,0,13349,2214,1,0,0,0,13350,13351, + 5,58,0,0,13351,13352,5,61,0,0,13352,2216,1,0,0,0,13353,13354,5,43, + 0,0,13354,13355,5,61,0,0,13355,2218,1,0,0,0,13356,13357,5,45,0,0, + 13357,13358,5,61,0,0,13358,2220,1,0,0,0,13359,13360,5,42,0,0,13360, + 13361,5,61,0,0,13361,2222,1,0,0,0,13362,13363,5,47,0,0,13363,13364, + 5,61,0,0,13364,2224,1,0,0,0,13365,13366,5,37,0,0,13366,13367,5,61, + 0,0,13367,2226,1,0,0,0,13368,13369,5,38,0,0,13369,13370,5,61,0,0, + 13370,2228,1,0,0,0,13371,13372,5,94,0,0,13372,13373,5,61,0,0,13373, + 2230,1,0,0,0,13374,13375,5,124,0,0,13375,13376,5,61,0,0,13376,2232, + 1,0,0,0,13377,13378,5,42,0,0,13378,2234,1,0,0,0,13379,13380,5,47, + 0,0,13380,2236,1,0,0,0,13381,13382,5,37,0,0,13382,2238,1,0,0,0,13383, + 13384,5,43,0,0,13384,2240,1,0,0,0,13385,13386,5,45,0,0,13386,2242, + 1,0,0,0,13387,13388,7,4,0,0,13388,13389,7,15,0,0,13389,13390,7,24, + 0,0,13390,2244,1,0,0,0,13391,13392,7,23,0,0,13392,13393,7,19,0,0, + 13393,13394,7,4,0,0,13394,2246,1,0,0,0,13395,13396,5,61,0,0,13396, + 2248,1,0,0,0,13397,13398,5,62,0,0,13398,2250,1,0,0,0,13399,13400, + 5,60,0,0,13400,2252,1,0,0,0,13401,13402,5,33,0,0,13402,2254,1,0, + 0,0,13403,13404,5,126,0,0,13404,2256,1,0,0,0,13405,13406,5,124,0, + 0,13406,2258,1,0,0,0,13407,13408,5,38,0,0,13408,2260,1,0,0,0,13409, + 13410,5,94,0,0,13410,2262,1,0,0,0,13411,13412,5,46,0,0,13412,2264, + 1,0,0,0,13413,13414,5,40,0,0,13414,2266,1,0,0,0,13415,13416,5,41, + 0,0,13416,2268,1,0,0,0,13417,13418,5,44,0,0,13418,2270,1,0,0,0,13419, + 13420,5,59,0,0,13420,2272,1,0,0,0,13421,13422,5,64,0,0,13422,2274, + 1,0,0,0,13423,13424,5,48,0,0,13424,2276,1,0,0,0,13425,13426,5,49, + 0,0,13426,2278,1,0,0,0,13427,13428,5,50,0,0,13428,2280,1,0,0,0,13429, + 13430,5,39,0,0,13430,2282,1,0,0,0,13431,13432,5,34,0,0,13432,2284, + 1,0,0,0,13433,13434,5,96,0,0,13434,2286,1,0,0,0,13435,13436,5,58, + 0,0,13436,2288,1,0,0,0,13437,13441,3,2281,1140,0,13438,13441,3,2283, + 1141,0,13439,13441,3,2285,1142,0,13440,13437,1,0,0,0,13440,13438, + 1,0,0,0,13440,13439,1,0,0,0,13441,2290,1,0,0,0,13442,13443,5,96, + 0,0,13443,13444,3,2325,1162,0,13444,13445,5,96,0,0,13445,2292,1, + 0,0,0,13446,13448,3,2339,1169,0,13447,13446,1,0,0,0,13448,13449, + 1,0,0,0,13449,13447,1,0,0,0,13449,13450,1,0,0,0,13450,13451,1,0, + 0,0,13451,13452,7,29,0,0,13452,2294,1,0,0,0,13453,13454,7,12,0,0, + 13454,13455,3,2333,1166,0,13455,2296,1,0,0,0,13456,13460,3,2331, + 1165,0,13457,13460,3,2333,1166,0,13458,13460,3,2335,1167,0,13459, + 13456,1,0,0,0,13459,13457,1,0,0,0,13459,13458,1,0,0,0,13460,2298, + 1,0,0,0,13461,13463,3,2339,1169,0,13462,13461,1,0,0,0,13463,13464, + 1,0,0,0,13464,13462,1,0,0,0,13464,13465,1,0,0,0,13465,2300,1,0,0, + 0,13466,13467,7,26,0,0,13467,13471,5,39,0,0,13468,13469,3,2337,1168, + 0,13469,13470,3,2337,1168,0,13470,13472,1,0,0,0,13471,13468,1,0, + 0,0,13472,13473,1,0,0,0,13473,13471,1,0,0,0,13473,13474,1,0,0,0, + 13474,13475,1,0,0,0,13475,13476,5,39,0,0,13476,13486,1,0,0,0,13477, + 13478,5,48,0,0,13478,13479,7,26,0,0,13479,13481,1,0,0,0,13480,13482, + 3,2337,1168,0,13481,13480,1,0,0,0,13482,13483,1,0,0,0,13483,13481, + 1,0,0,0,13483,13484,1,0,0,0,13484,13486,1,0,0,0,13485,13466,1,0, + 0,0,13485,13477,1,0,0,0,13486,2302,1,0,0,0,13487,13489,3,2339,1169, + 0,13488,13487,1,0,0,0,13489,13490,1,0,0,0,13490,13488,1,0,0,0,13490, + 13491,1,0,0,0,13491,13493,1,0,0,0,13492,13488,1,0,0,0,13492,13493, + 1,0,0,0,13493,13494,1,0,0,0,13494,13496,5,46,0,0,13495,13497,3,2339, + 1169,0,13496,13495,1,0,0,0,13497,13498,1,0,0,0,13498,13496,1,0,0, + 0,13498,13499,1,0,0,0,13499,13531,1,0,0,0,13500,13502,3,2339,1169, + 0,13501,13500,1,0,0,0,13502,13503,1,0,0,0,13503,13501,1,0,0,0,13503, + 13504,1,0,0,0,13504,13505,1,0,0,0,13505,13506,5,46,0,0,13506,13507, + 3,2327,1163,0,13507,13531,1,0,0,0,13508,13510,3,2339,1169,0,13509, + 13508,1,0,0,0,13510,13511,1,0,0,0,13511,13509,1,0,0,0,13511,13512, + 1,0,0,0,13512,13514,1,0,0,0,13513,13509,1,0,0,0,13513,13514,1,0, + 0,0,13514,13515,1,0,0,0,13515,13517,5,46,0,0,13516,13518,3,2339, + 1169,0,13517,13516,1,0,0,0,13518,13519,1,0,0,0,13519,13517,1,0,0, + 0,13519,13520,1,0,0,0,13520,13521,1,0,0,0,13521,13522,3,2327,1163, + 0,13522,13531,1,0,0,0,13523,13525,3,2339,1169,0,13524,13523,1,0, + 0,0,13525,13526,1,0,0,0,13526,13524,1,0,0,0,13526,13527,1,0,0,0, + 13527,13528,1,0,0,0,13528,13529,3,2327,1163,0,13529,13531,1,0,0, + 0,13530,13492,1,0,0,0,13530,13501,1,0,0,0,13530,13513,1,0,0,0,13530, + 13524,1,0,0,0,13531,2304,1,0,0,0,13532,13533,5,92,0,0,13533,13534, + 7,12,0,0,13534,2306,1,0,0,0,13535,13536,3,2341,1170,0,13536,2308, + 1,0,0,0,13537,13538,5,95,0,0,13538,13539,3,2325,1162,0,13539,2310, + 1,0,0,0,13540,13541,5,46,0,0,13541,13542,3,2329,1164,0,13542,2312, + 1,0,0,0,13543,13544,3,2329,1164,0,13544,2314,1,0,0,0,13545,13546, + 3,2335,1167,0,13546,2316,1,0,0,0,13547,13552,3,2333,1166,0,13548, + 13552,3,2331,1165,0,13549,13552,3,2335,1167,0,13550,13552,3,2329, + 1164,0,13551,13547,1,0,0,0,13551,13548,1,0,0,0,13551,13549,1,0,0, + 0,13551,13550,1,0,0,0,13552,13553,1,0,0,0,13553,13559,5,64,0,0,13554, + 13560,3,2333,1166,0,13555,13560,3,2331,1165,0,13556,13560,3,2335, + 1167,0,13557,13560,3,2329,1164,0,13558,13560,3,2319,1159,0,13559, + 13554,1,0,0,0,13559,13555,1,0,0,0,13559,13556,1,0,0,0,13559,13557, + 1,0,0,0,13559,13558,1,0,0,0,13560,2318,1,0,0,0,13561,13563,7,30, + 0,0,13562,13561,1,0,0,0,13563,13564,1,0,0,0,13564,13562,1,0,0,0, + 13564,13565,1,0,0,0,13565,13566,1,0,0,0,13566,13568,5,46,0,0,13567, + 13569,7,31,0,0,13568,13567,1,0,0,0,13569,13570,1,0,0,0,13570,13568, + 1,0,0,0,13570,13571,1,0,0,0,13571,13592,1,0,0,0,13572,13574,7,32, + 0,0,13573,13572,1,0,0,0,13574,13577,1,0,0,0,13575,13573,1,0,0,0, + 13575,13576,1,0,0,0,13576,13578,1,0,0,0,13577,13575,1,0,0,0,13578, + 13582,5,58,0,0,13579,13581,7,32,0,0,13580,13579,1,0,0,0,13581,13584, + 1,0,0,0,13582,13580,1,0,0,0,13582,13583,1,0,0,0,13583,13585,1,0, + 0,0,13584,13582,1,0,0,0,13585,13587,5,58,0,0,13586,13588,7,33,0, + 0,13587,13586,1,0,0,0,13588,13589,1,0,0,0,13589,13587,1,0,0,0,13589, + 13590,1,0,0,0,13590,13592,1,0,0,0,13591,13562,1,0,0,0,13591,13575, + 1,0,0,0,13592,2320,1,0,0,0,13593,13602,5,64,0,0,13594,13596,7,34, + 0,0,13595,13594,1,0,0,0,13596,13597,1,0,0,0,13597,13595,1,0,0,0, + 13597,13598,1,0,0,0,13598,13603,1,0,0,0,13599,13603,3,2333,1166, + 0,13600,13603,3,2331,1165,0,13601,13603,3,2335,1167,0,13602,13595, + 1,0,0,0,13602,13599,1,0,0,0,13602,13600,1,0,0,0,13602,13601,1,0, + 0,0,13603,2322,1,0,0,0,13604,13605,5,64,0,0,13605,13612,5,64,0,0, + 13606,13608,7,34,0,0,13607,13606,1,0,0,0,13608,13609,1,0,0,0,13609, + 13607,1,0,0,0,13609,13610,1,0,0,0,13610,13613,1,0,0,0,13611,13613, + 3,2335,1167,0,13612,13607,1,0,0,0,13612,13611,1,0,0,0,13613,2324, + 1,0,0,0,13614,13656,3,1491,745,0,13615,13656,3,1493,746,0,13616, + 13656,3,1495,747,0,13617,13656,3,451,225,0,13618,13656,3,1497,748, + 0,13619,13656,3,1499,749,0,13620,13656,3,1501,750,0,13621,13656, + 3,1503,751,0,13622,13656,3,1505,752,0,13623,13656,3,1507,753,0,13624, + 13656,3,1509,754,0,13625,13656,3,1511,755,0,13626,13656,3,1513,756, + 0,13627,13656,3,1515,757,0,13628,13656,3,1517,758,0,13629,13656, + 3,1521,760,0,13630,13656,3,1523,761,0,13631,13656,3,1525,762,0,13632, + 13656,3,1527,763,0,13633,13656,3,1529,764,0,13634,13656,3,1531,765, + 0,13635,13656,3,1533,766,0,13636,13656,3,1535,767,0,13637,13656, + 3,1537,768,0,13638,13656,3,1539,769,0,13639,13656,3,1541,770,0,13640, + 13656,3,1543,771,0,13641,13656,3,1545,772,0,13642,13656,3,1547,773, + 0,13643,13656,3,1549,774,0,13644,13656,3,1551,775,0,13645,13656, + 3,1553,776,0,13646,13656,3,1555,777,0,13647,13656,3,1557,778,0,13648, + 13656,3,1559,779,0,13649,13656,3,1561,780,0,13650,13656,3,1563,781, + 0,13651,13656,3,1565,782,0,13652,13656,3,1567,783,0,13653,13656, + 3,1569,784,0,13654,13656,3,1571,785,0,13655,13614,1,0,0,0,13655, + 13615,1,0,0,0,13655,13616,1,0,0,0,13655,13617,1,0,0,0,13655,13618, + 1,0,0,0,13655,13619,1,0,0,0,13655,13620,1,0,0,0,13655,13621,1,0, + 0,0,13655,13622,1,0,0,0,13655,13623,1,0,0,0,13655,13624,1,0,0,0, + 13655,13625,1,0,0,0,13655,13626,1,0,0,0,13655,13627,1,0,0,0,13655, + 13628,1,0,0,0,13655,13629,1,0,0,0,13655,13630,1,0,0,0,13655,13631, + 1,0,0,0,13655,13632,1,0,0,0,13655,13633,1,0,0,0,13655,13634,1,0, + 0,0,13655,13635,1,0,0,0,13655,13636,1,0,0,0,13655,13637,1,0,0,0, + 13655,13638,1,0,0,0,13655,13639,1,0,0,0,13655,13640,1,0,0,0,13655, + 13641,1,0,0,0,13655,13642,1,0,0,0,13655,13643,1,0,0,0,13655,13644, + 1,0,0,0,13655,13645,1,0,0,0,13655,13646,1,0,0,0,13655,13647,1,0, + 0,0,13655,13648,1,0,0,0,13655,13649,1,0,0,0,13655,13650,1,0,0,0, + 13655,13651,1,0,0,0,13655,13652,1,0,0,0,13655,13653,1,0,0,0,13655, + 13654,1,0,0,0,13656,2326,1,0,0,0,13657,13659,7,7,0,0,13658,13660, + 7,35,0,0,13659,13658,1,0,0,0,13659,13660,1,0,0,0,13660,13662,1,0, + 0,0,13661,13663,3,2339,1169,0,13662,13661,1,0,0,0,13663,13664,1, + 0,0,0,13664,13662,1,0,0,0,13664,13665,1,0,0,0,13665,2328,1,0,0,0, + 13666,13668,7,36,0,0,13667,13666,1,0,0,0,13668,13671,1,0,0,0,13669, + 13670,1,0,0,0,13669,13667,1,0,0,0,13670,13673,1,0,0,0,13671,13669, + 1,0,0,0,13672,13674,7,37,0,0,13673,13672,1,0,0,0,13674,13675,1,0, + 0,0,13675,13676,1,0,0,0,13675,13673,1,0,0,0,13676,13680,1,0,0,0, + 13677,13679,7,36,0,0,13678,13677,1,0,0,0,13679,13682,1,0,0,0,13680, + 13678,1,0,0,0,13680,13681,1,0,0,0,13681,2330,1,0,0,0,13682,13680, + 1,0,0,0,13683,13691,5,34,0,0,13684,13685,5,92,0,0,13685,13690,9, + 0,0,0,13686,13687,5,34,0,0,13687,13690,5,34,0,0,13688,13690,8,38, + 0,0,13689,13684,1,0,0,0,13689,13686,1,0,0,0,13689,13688,1,0,0,0, + 13690,13693,1,0,0,0,13691,13689,1,0,0,0,13691,13692,1,0,0,0,13692, + 13694,1,0,0,0,13693,13691,1,0,0,0,13694,13695,5,34,0,0,13695,2332, + 1,0,0,0,13696,13704,5,39,0,0,13697,13698,5,92,0,0,13698,13703,9, + 0,0,0,13699,13700,5,39,0,0,13700,13703,5,39,0,0,13701,13703,8,39, + 0,0,13702,13697,1,0,0,0,13702,13699,1,0,0,0,13702,13701,1,0,0,0, + 13703,13706,1,0,0,0,13704,13702,1,0,0,0,13704,13705,1,0,0,0,13705, + 13707,1,0,0,0,13706,13704,1,0,0,0,13707,13708,5,39,0,0,13708,2334, + 1,0,0,0,13709,13715,5,96,0,0,13710,13714,8,40,0,0,13711,13712,5, + 96,0,0,13712,13714,5,96,0,0,13713,13710,1,0,0,0,13713,13711,1,0, + 0,0,13714,13717,1,0,0,0,13715,13713,1,0,0,0,13715,13716,1,0,0,0, + 13716,13718,1,0,0,0,13717,13715,1,0,0,0,13718,13719,5,96,0,0,13719, + 2336,1,0,0,0,13720,13721,7,32,0,0,13721,2338,1,0,0,0,13722,13723, + 7,30,0,0,13723,2340,1,0,0,0,13724,13725,7,16,0,0,13725,13727,5,39, + 0,0,13726,13728,7,41,0,0,13727,13726,1,0,0,0,13728,13729,1,0,0,0, + 13729,13727,1,0,0,0,13729,13730,1,0,0,0,13730,13731,1,0,0,0,13731, + 13732,5,39,0,0,13732,2342,1,0,0,0,13733,13734,9,0,0,0,13734,13735, + 1,0,0,0,13735,13736,6,1171,2,0,13736,2344,1,0,0,0,58,0,2348,2359, + 2372,2386,2390,2395,2399,2403,2409,2413,2415,5556,5571,5573,9280, + 9307,13440,13449,13459,13464,13473,13483,13485,13490,13492,13498, + 13503,13511,13513,13519,13526,13530,13551,13559,13564,13570,13575, + 13582,13589,13591,13597,13602,13609,13612,13655,13659,13664,13669, + 13675,13680,13689,13691,13702,13704,13713,13715,13729,3,0,1,0,0, + 2,0,0,3,0 + ] + +class MySqlLexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + MYSQLCOMMENT = 2 + ERRORCHANNEL = 3 + + SPACE = 1 + SPEC_MYSQL_COMMENT = 2 + COMMENT_INPUT = 3 + LINE_COMMENT = 4 + ADD = 5 + ALL = 6 + ALTER = 7 + ALWAYS = 8 + ANALYZE = 9 + AND = 10 + ARRAY = 11 + AS = 12 + ASC = 13 + ATTRIBUTE = 14 + BEFORE = 15 + BETWEEN = 16 + BOTH = 17 + BUCKETS = 18 + BY = 19 + CALL = 20 + CASCADE = 21 + CASE = 22 + CAST = 23 + CHANGE = 24 + CHARACTER = 25 + CHECK = 26 + COLLATE = 27 + COLUMN = 28 + CONDITION = 29 + CONSTRAINT = 30 + CONTINUE = 31 + CONVERT = 32 + CREATE = 33 + CROSS = 34 + CURRENT = 35 + CURRENT_ROLE = 36 + CURRENT_USER = 37 + CURSOR = 38 + DATABASE = 39 + DATABASES = 40 + DECLARE = 41 + DEFAULT = 42 + DELAYED = 43 + DELETE = 44 + DESC = 45 + DESCRIBE = 46 + DETERMINISTIC = 47 + DIAGNOSTICS = 48 + DISTINCT = 49 + DISTINCTROW = 50 + DROP = 51 + EACH = 52 + ELSE = 53 + ELSEIF = 54 + EMPTY = 55 + ENCLOSED = 56 + ENFORCED = 57 + ESCAPED = 58 + EXCEPT = 59 + EXISTS = 60 + EXIT = 61 + EXPLAIN = 62 + FALSE = 63 + FETCH = 64 + FOR = 65 + FORCE = 66 + FOREIGN = 67 + FROM = 68 + FULLTEXT = 69 + GENERATED = 70 + GET = 71 + GRANT = 72 + GROUP = 73 + HAVING = 74 + HIGH_PRIORITY = 75 + HISTOGRAM = 76 + IF = 77 + IGNORE = 78 + IGNORED = 79 + IN = 80 + INDEX = 81 + INFILE = 82 + INNER = 83 + INOUT = 84 + INSERT = 85 + INTERVAL = 86 + INTO = 87 + IS = 88 + ITERATE = 89 + JOIN = 90 + KEY = 91 + KEYS = 92 + KILL = 93 + LATERAL = 94 + LEADING = 95 + LEAVE = 96 + LEFT = 97 + LIKE = 98 + LIMIT = 99 + LINEAR = 100 + LINES = 101 + LOAD = 102 + LOCK = 103 + LOCKED = 104 + LOOP = 105 + LOW_PRIORITY = 106 + MASTER_BIND = 107 + MASTER_SSL_VERIFY_SERVER_CERT = 108 + MATCH = 109 + MAXVALUE = 110 + MINVALUE = 111 + MODIFIES = 112 + NATURAL = 113 + NOT = 114 + NO_WRITE_TO_BINLOG = 115 + NULL_LITERAL = 116 + NUMBER = 117 + ON = 118 + OPTIMIZE = 119 + OPTION = 120 + OPTIONAL = 121 + OPTIONALLY = 122 + OR = 123 + ORDER = 124 + OUT = 125 + OUTER = 126 + OUTFILE = 127 + OVER = 128 + PARTITION = 129 + PRIMARY = 130 + PROCEDURE = 131 + PURGE = 132 + RANGE = 133 + READ = 134 + READS = 135 + REFERENCES = 136 + REGEXP = 137 + RELEASE = 138 + RENAME = 139 + REPEAT = 140 + REPLACE = 141 + REQUIRE = 142 + RESIGNAL = 143 + RESTRICT = 144 + RETAIN = 145 + RETURN = 146 + REVOKE = 147 + RIGHT = 148 + RLIKE = 149 + SCHEMA = 150 + SCHEMAS = 151 + SELECT = 152 + SET = 153 + SEPARATOR = 154 + SHOW = 155 + SIGNAL = 156 + SKIP_ = 157 + SKIP_QUERY_REWRITE = 158 + SPATIAL = 159 + SQL = 160 + SQLEXCEPTION = 161 + SQLSTATE = 162 + SQLWARNING = 163 + SQL_BIG_RESULT = 164 + SQL_CALC_FOUND_ROWS = 165 + SQL_SMALL_RESULT = 166 + SSL = 167 + STACKED = 168 + STARTING = 169 + STATEMENT = 170 + STRAIGHT_JOIN = 171 + TABLE = 172 + TERMINATED = 173 + THEN = 174 + TO = 175 + TRAILING = 176 + TRIGGER = 177 + TRUE = 178 + UNDO = 179 + UNION = 180 + UNIQUE = 181 + UNLOCK = 182 + UNSIGNED = 183 + UPDATE = 184 + USAGE = 185 + USE = 186 + USING = 187 + VALUES = 188 + WHEN = 189 + WHERE = 190 + WHILE = 191 + WITH = 192 + WRITE = 193 + XOR = 194 + ZEROFILL = 195 + TINYINT = 196 + SMALLINT = 197 + MEDIUMINT = 198 + MIDDLEINT = 199 + INT = 200 + INT1 = 201 + INT2 = 202 + INT3 = 203 + INT4 = 204 + INT8 = 205 + INTEGER = 206 + BIGINT = 207 + REAL = 208 + DOUBLE = 209 + PRECISION = 210 + FLOAT = 211 + FLOAT4 = 212 + FLOAT8 = 213 + DECIMAL = 214 + DEC = 215 + NUMERIC = 216 + DATE = 217 + TIME = 218 + TIMESTAMP = 219 + DATETIME = 220 + YEAR = 221 + CHAR = 222 + VARCHAR = 223 + NVARCHAR = 224 + NATIONAL = 225 + BINARY = 226 + VARBINARY = 227 + TINYBLOB = 228 + BLOB = 229 + MEDIUMBLOB = 230 + LONG = 231 + LONGBLOB = 232 + TINYTEXT = 233 + TEXT = 234 + MEDIUMTEXT = 235 + LONGTEXT = 236 + ENUM = 237 + VARYING = 238 + SERIAL = 239 + YEAR_MONTH = 240 + DAY_HOUR = 241 + DAY_MINUTE = 242 + DAY_SECOND = 243 + HOUR_MINUTE = 244 + HOUR_SECOND = 245 + MINUTE_SECOND = 246 + SECOND_MICROSECOND = 247 + MINUTE_MICROSECOND = 248 + HOUR_MICROSECOND = 249 + DAY_MICROSECOND = 250 + JSON_ARRAY = 251 + JSON_ARRAYAGG = 252 + JSON_ARRAY_APPEND = 253 + JSON_ARRAY_INSERT = 254 + JSON_CONTAINS = 255 + JSON_CONTAINS_PATH = 256 + JSON_DEPTH = 257 + JSON_EXTRACT = 258 + JSON_INSERT = 259 + JSON_KEYS = 260 + JSON_LENGTH = 261 + JSON_MERGE = 262 + JSON_MERGE_PATCH = 263 + JSON_MERGE_PRESERVE = 264 + JSON_OBJECT = 265 + JSON_OBJECTAGG = 266 + JSON_OVERLAPS = 267 + JSON_PRETTY = 268 + JSON_QUOTE = 269 + JSON_REMOVE = 270 + JSON_REPLACE = 271 + JSON_SCHEMA_VALID = 272 + JSON_SCHEMA_VALIDATION_REPORT = 273 + JSON_SEARCH = 274 + JSON_SET = 275 + JSON_STORAGE_FREE = 276 + JSON_STORAGE_SIZE = 277 + JSON_TABLE = 278 + JSON_TYPE = 279 + JSON_UNQUOTE = 280 + JSON_VALID = 281 + JSON_VALUE = 282 + NESTED = 283 + ORDINALITY = 284 + PATH = 285 + AVG = 286 + BIT_AND = 287 + BIT_OR = 288 + BIT_XOR = 289 + COUNT = 290 + CUME_DIST = 291 + DENSE_RANK = 292 + FIRST_VALUE = 293 + GROUP_CONCAT = 294 + LAG = 295 + LAST_VALUE = 296 + LEAD = 297 + MAX = 298 + MIN = 299 + NTILE = 300 + NTH_VALUE = 301 + PERCENT_RANK = 302 + RANK = 303 + ROW_NUMBER = 304 + STD = 305 + STDDEV = 306 + STDDEV_POP = 307 + STDDEV_SAMP = 308 + SUM = 309 + VAR_POP = 310 + VAR_SAMP = 311 + VARIANCE = 312 + CURRENT_DATE = 313 + CURRENT_TIME = 314 + CURRENT_TIMESTAMP = 315 + LOCALTIME = 316 + CURDATE = 317 + CURTIME = 318 + DATE_ADD = 319 + DATE_SUB = 320 + EXTRACT = 321 + LOCALTIMESTAMP = 322 + NOW = 323 + POSITION = 324 + SUBSTR = 325 + SUBSTRING = 326 + SYSDATE = 327 + TRIM = 328 + UTC_DATE = 329 + UTC_TIME = 330 + UTC_TIMESTAMP = 331 + ACCOUNT = 332 + ACTION = 333 + AFTER = 334 + AGGREGATE = 335 + ALGORITHM = 336 + ANY = 337 + AT = 338 + AUTHORS = 339 + AUTOCOMMIT = 340 + AUTOEXTEND_SIZE = 341 + AUTO_INCREMENT = 342 + AVG_ROW_LENGTH = 343 + BEGIN = 344 + BINLOG = 345 + BIT = 346 + BLOCK = 347 + BOOL = 348 + BOOLEAN = 349 + BTREE = 350 + CACHE = 351 + CASCADED = 352 + CHAIN = 353 + CHANGED = 354 + CHANNEL = 355 + CHECKSUM = 356 + PAGE_CHECKSUM = 357 + CIPHER = 358 + CLASS_ORIGIN = 359 + CLIENT = 360 + CLOSE = 361 + CLUSTERING = 362 + COALESCE = 363 + CODE = 364 + COLUMNS = 365 + COLUMN_FORMAT = 366 + COLUMN_NAME = 367 + COMMENT = 368 + COMMIT = 369 + COMPACT = 370 + COMPLETION = 371 + COMPRESSED = 372 + COMPRESSION = 373 + CONCURRENT = 374 + CONNECT = 375 + CONNECTION = 376 + CONSISTENT = 377 + CONSTRAINT_CATALOG = 378 + CONSTRAINT_SCHEMA = 379 + CONSTRAINT_NAME = 380 + CONTAINS = 381 + CONTEXT = 382 + CONTRIBUTORS = 383 + COPY = 384 + CPU = 385 + CYCLE = 386 + CURSOR_NAME = 387 + DATA = 388 + DATAFILE = 389 + DEALLOCATE = 390 + DEFAULT_AUTH = 391 + DEFINER = 392 + DELAY_KEY_WRITE = 393 + DES_KEY_FILE = 394 + DIRECTORY = 395 + DISABLE = 396 + DISCARD = 397 + DISK = 398 + DO = 399 + DUMPFILE = 400 + DUPLICATE = 401 + DYNAMIC = 402 + ENABLE = 403 + ENCRYPTED = 404 + ENCRYPTION = 405 + ENCRYPTION_KEY_ID = 406 + END = 407 + ENDS = 408 + ENGINE = 409 + ENGINES = 410 + ERROR = 411 + ERRORS = 412 + ESCAPE = 413 + EVEN = 414 + EVENT = 415 + EVENTS = 416 + EVERY = 417 + EXCHANGE = 418 + EXCLUSIVE = 419 + EXPIRE = 420 + EXPORT = 421 + EXTENDED = 422 + EXTENT_SIZE = 423 + FAILED_LOGIN_ATTEMPTS = 424 + FAST = 425 + FAULTS = 426 + FIELDS = 427 + FILE_BLOCK_SIZE = 428 + FILTER = 429 + FIRST = 430 + FIXED = 431 + FLUSH = 432 + FOLLOWING = 433 + FOLLOWS = 434 + FOUND = 435 + FULL = 436 + FUNCTION = 437 + GENERAL = 438 + GLOBAL = 439 + GRANTS = 440 + GROUP_REPLICATION = 441 + HANDLER = 442 + HASH = 443 + HELP = 444 + HISTORY = 445 + HOST = 446 + HOSTS = 447 + IDENTIFIED = 448 + IGNORE_SERVER_IDS = 449 + IMPORT = 450 + INCREMENT = 451 + INDEXES = 452 + INITIAL_SIZE = 453 + INPLACE = 454 + INSERT_METHOD = 455 + INSTALL = 456 + INSTANCE = 457 + INSTANT = 458 + INVISIBLE = 459 + INVOKER = 460 + IO = 461 + IO_THREAD = 462 + IPC = 463 + ISOLATION = 464 + ISSUER = 465 + JSON = 466 + KEY_BLOCK_SIZE = 467 + LANGUAGE = 468 + LAST = 469 + LEAVES = 470 + LESS = 471 + LEVEL = 472 + LIST = 473 + LOCAL = 474 + LOGFILE = 475 + LOGS = 476 + MASTER = 477 + MASTER_AUTO_POSITION = 478 + MASTER_CONNECT_RETRY = 479 + MASTER_DELAY = 480 + MASTER_HEARTBEAT_PERIOD = 481 + MASTER_HOST = 482 + MASTER_LOG_FILE = 483 + MASTER_LOG_POS = 484 + MASTER_PASSWORD = 485 + MASTER_PORT = 486 + MASTER_RETRY_COUNT = 487 + MASTER_SSL = 488 + MASTER_SSL_CA = 489 + MASTER_SSL_CAPATH = 490 + MASTER_SSL_CERT = 491 + MASTER_SSL_CIPHER = 492 + MASTER_SSL_CRL = 493 + MASTER_SSL_CRLPATH = 494 + MASTER_SSL_KEY = 495 + MASTER_TLS_VERSION = 496 + MASTER_USER = 497 + MAX_CONNECTIONS_PER_HOUR = 498 + MAX_QUERIES_PER_HOUR = 499 + MAX_ROWS = 500 + MAX_SIZE = 501 + MAX_UPDATES_PER_HOUR = 502 + MAX_USER_CONNECTIONS = 503 + MEDIUM = 504 + MEMBER = 505 + MERGE = 506 + MESSAGE_TEXT = 507 + MID = 508 + MIGRATE = 509 + MIN_ROWS = 510 + MODE = 511 + MODIFY = 512 + MUTEX = 513 + MYSQL = 514 + MYSQL_ERRNO = 515 + NAME = 516 + NAMES = 517 + NCHAR = 518 + NEVER = 519 + NEXT = 520 + NO = 521 + NOCACHE = 522 + NOCOPY = 523 + NOCYCLE = 524 + NOMAXVALUE = 525 + NOMINVALUE = 526 + NOWAIT = 527 + NODEGROUP = 528 + NONE = 529 + ODBC = 530 + OFFLINE = 531 + OFFSET = 532 + OF = 533 + OJ = 534 + OLD_PASSWORD = 535 + ONE = 536 + ONLINE = 537 + ONLY = 538 + OPEN = 539 + OPTIMIZER_COSTS = 540 + OPTIONS = 541 + OWNER = 542 + PACK_KEYS = 543 + PAGE = 544 + PAGE_COMPRESSED = 545 + PAGE_COMPRESSION_LEVEL = 546 + PARSER = 547 + PARTIAL = 548 + PARTITIONING = 549 + PARTITIONS = 550 + PASSWORD = 551 + PASSWORD_LOCK_TIME = 552 + PHASE = 553 + PLUGIN = 554 + PLUGIN_DIR = 555 + PLUGINS = 556 + PORT = 557 + PRECEDES = 558 + PRECEDING = 559 + PREPARE = 560 + PRESERVE = 561 + PREV = 562 + PROCESSLIST = 563 + PROFILE = 564 + PROFILES = 565 + PROXY = 566 + QUERY = 567 + QUICK = 568 + REBUILD = 569 + RECOVER = 570 + RECURSIVE = 571 + REDO_BUFFER_SIZE = 572 + REDUNDANT = 573 + RELAY = 574 + RELAY_LOG_FILE = 575 + RELAY_LOG_POS = 576 + RELAYLOG = 577 + REMOVE = 578 + REORGANIZE = 579 + REPAIR = 580 + REPLICATE_DO_DB = 581 + REPLICATE_DO_TABLE = 582 + REPLICATE_IGNORE_DB = 583 + REPLICATE_IGNORE_TABLE = 584 + REPLICATE_REWRITE_DB = 585 + REPLICATE_WILD_DO_TABLE = 586 + REPLICATE_WILD_IGNORE_TABLE = 587 + REPLICATION = 588 + RESET = 589 + RESTART = 590 + RESUME = 591 + RETURNED_SQLSTATE = 592 + RETURNING = 593 + RETURNS = 594 + REUSE = 595 + ROLE = 596 + ROLLBACK = 597 + ROLLUP = 598 + ROTATE = 599 + ROW = 600 + ROWS = 601 + ROW_FORMAT = 602 + RTREE = 603 + SAVEPOINT = 604 + SCHEDULE = 605 + SECURITY = 606 + SEQUENCE = 607 + SERVER = 608 + SESSION = 609 + SHARE = 610 + SHARED = 611 + SIGNED = 612 + SIMPLE = 613 + SLAVE = 614 + SLOW = 615 + SNAPSHOT = 616 + SOCKET = 617 + SOME = 618 + SONAME = 619 + SOUNDS = 620 + SOURCE = 621 + SQL_AFTER_GTIDS = 622 + SQL_AFTER_MTS_GAPS = 623 + SQL_BEFORE_GTIDS = 624 + SQL_BUFFER_RESULT = 625 + SQL_CACHE = 626 + SQL_NO_CACHE = 627 + SQL_THREAD = 628 + START = 629 + STARTS = 630 + STATS_AUTO_RECALC = 631 + STATS_PERSISTENT = 632 + STATS_SAMPLE_PAGES = 633 + STATUS = 634 + STOP = 635 + STORAGE = 636 + STORED = 637 + STRING = 638 + SUBCLASS_ORIGIN = 639 + SUBJECT = 640 + SUBPARTITION = 641 + SUBPARTITIONS = 642 + SUSPEND = 643 + SWAPS = 644 + SWITCHES = 645 + TABLE_NAME = 646 + TABLESPACE = 647 + TABLE_TYPE = 648 + TEMPORARY = 649 + TEMPTABLE = 650 + THAN = 651 + TRADITIONAL = 652 + TRANSACTION = 653 + TRANSACTIONAL = 654 + TRIGGERS = 655 + TRUNCATE = 656 + UNBOUNDED = 657 + UNDEFINED = 658 + UNDOFILE = 659 + UNDO_BUFFER_SIZE = 660 + UNINSTALL = 661 + UNKNOWN = 662 + UNTIL = 663 + UPGRADE = 664 + USER = 665 + USE_FRM = 666 + USER_RESOURCES = 667 + VALIDATION = 668 + VALUE = 669 + VARIABLES = 670 + VIEW = 671 + VIRTUAL = 672 + VISIBLE = 673 + WAIT = 674 + WARNINGS = 675 + WINDOW = 676 + WITHOUT = 677 + WORK = 678 + WRAPPER = 679 + X509 = 680 + XA = 681 + XML = 682 + YES = 683 + EUR = 684 + USA = 685 + JIS = 686 + ISO = 687 + INTERNAL = 688 + QUARTER = 689 + MONTH = 690 + DAY = 691 + HOUR = 692 + MINUTE = 693 + WEEK = 694 + SECOND = 695 + MICROSECOND = 696 + ADMIN = 697 + APPLICATION_PASSWORD_ADMIN = 698 + AUDIT_ABORT_EXEMPT = 699 + AUDIT_ADMIN = 700 + AUTHENTICATION_POLICY_ADMIN = 701 + BACKUP_ADMIN = 702 + BINLOG_ADMIN = 703 + BINLOG_ENCRYPTION_ADMIN = 704 + CLONE_ADMIN = 705 + CONNECTION_ADMIN = 706 + ENCRYPTION_KEY_ADMIN = 707 + EXECUTE = 708 + FILE = 709 + FIREWALL_ADMIN = 710 + FIREWALL_EXEMPT = 711 + FIREWALL_USER = 712 + FLUSH_OPTIMIZER_COSTS = 713 + FLUSH_STATUS = 714 + FLUSH_TABLES = 715 + FLUSH_USER_RESOURCES = 716 + GROUP_REPLICATION_ADMIN = 717 + INNODB_REDO_LOG_ARCHIVE = 718 + INNODB_REDO_LOG_ENABLE = 719 + INVOKE = 720 + LAMBDA = 721 + NDB_STORED_USER = 722 + PASSWORDLESS_USER_ADMIN = 723 + PERSIST_RO_VARIABLES_ADMIN = 724 + PRIVILEGES = 725 + PROCESS = 726 + RELOAD = 727 + REPLICATION_APPLIER = 728 + REPLICATION_SLAVE_ADMIN = 729 + RESOURCE_GROUP_ADMIN = 730 + RESOURCE_GROUP_USER = 731 + ROLE_ADMIN = 732 + ROUTINE = 733 + S3 = 734 + SERVICE_CONNECTION_ADMIN = 735 + SESSION_VARIABLES_ADMIN = 736 + SET_USER_ID = 737 + SHOW_ROUTINE = 738 + SHUTDOWN = 739 + SUPER = 740 + SYSTEM_VARIABLES_ADMIN = 741 + TABLES = 742 + TABLE_ENCRYPTION_ADMIN = 743 + VERSION_TOKEN_ADMIN = 744 + XA_RECOVER_ADMIN = 745 + ARMSCII8 = 746 + ASCII = 747 + BIG5 = 748 + CP1250 = 749 + CP1251 = 750 + CP1256 = 751 + CP1257 = 752 + CP850 = 753 + CP852 = 754 + CP866 = 755 + CP932 = 756 + DEC8 = 757 + EUCJPMS = 758 + EUCKR = 759 + GB18030 = 760 + GB2312 = 761 + GBK = 762 + GEOSTD8 = 763 + GREEK = 764 + HEBREW = 765 + HP8 = 766 + KEYBCS2 = 767 + KOI8R = 768 + KOI8U = 769 + LATIN1 = 770 + LATIN2 = 771 + LATIN5 = 772 + LATIN7 = 773 + MACCE = 774 + MACROMAN = 775 + SJIS = 776 + SWE7 = 777 + TIS620 = 778 + UCS2 = 779 + UJIS = 780 + UTF16 = 781 + UTF16LE = 782 + UTF32 = 783 + UTF8 = 784 + UTF8MB3 = 785 + UTF8MB4 = 786 + ARCHIVE = 787 + BLACKHOLE = 788 + CSV = 789 + FEDERATED = 790 + INNODB = 791 + MEMORY = 792 + MRG_MYISAM = 793 + MYISAM = 794 + NDB = 795 + NDBCLUSTER = 796 + PERFORMANCE_SCHEMA = 797 + TOKUDB = 798 + REPEATABLE = 799 + COMMITTED = 800 + UNCOMMITTED = 801 + SERIALIZABLE = 802 + GEOMETRYCOLLECTION = 803 + GEOMCOLLECTION = 804 + GEOMETRY = 805 + LINESTRING = 806 + MULTILINESTRING = 807 + MULTIPOINT = 808 + MULTIPOLYGON = 809 + POINT = 810 + POLYGON = 811 + ABS = 812 + ACOS = 813 + ADDDATE = 814 + ADDTIME = 815 + AES_DECRYPT = 816 + AES_ENCRYPT = 817 + AREA = 818 + ASBINARY = 819 + ASIN = 820 + ASTEXT = 821 + ASWKB = 822 + ASWKT = 823 + ASYMMETRIC_DECRYPT = 824 + ASYMMETRIC_DERIVE = 825 + ASYMMETRIC_ENCRYPT = 826 + ASYMMETRIC_SIGN = 827 + ASYMMETRIC_VERIFY = 828 + ATAN = 829 + ATAN2 = 830 + BENCHMARK = 831 + BIN = 832 + BIT_COUNT = 833 + BIT_LENGTH = 834 + BUFFER = 835 + CATALOG_NAME = 836 + CEIL = 837 + CEILING = 838 + CENTROID = 839 + CHARACTER_LENGTH = 840 + CHARSET = 841 + CHAR_LENGTH = 842 + COERCIBILITY = 843 + COLLATION = 844 + COMPRESS = 845 + CONCAT = 846 + CONCAT_WS = 847 + CONNECTION_ID = 848 + CONV = 849 + CONVERT_TZ = 850 + COS = 851 + COT = 852 + CRC32 = 853 + CREATE_ASYMMETRIC_PRIV_KEY = 854 + CREATE_ASYMMETRIC_PUB_KEY = 855 + CREATE_DH_PARAMETERS = 856 + CREATE_DIGEST = 857 + CROSSES = 858 + DATEDIFF = 859 + DATE_FORMAT = 860 + DAYNAME = 861 + DAYOFMONTH = 862 + DAYOFWEEK = 863 + DAYOFYEAR = 864 + DECODE = 865 + DEGREES = 866 + DES_DECRYPT = 867 + DES_ENCRYPT = 868 + DIMENSION = 869 + DISJOINT = 870 + ELT = 871 + ENCODE = 872 + ENCRYPT = 873 + ENDPOINT = 874 + ENGINE_ATTRIBUTE = 875 + ENVELOPE = 876 + EQUALS = 877 + EXP = 878 + EXPORT_SET = 879 + EXTERIORRING = 880 + EXTRACTVALUE = 881 + FIELD = 882 + FIND_IN_SET = 883 + FLOOR = 884 + FORMAT = 885 + FOUND_ROWS = 886 + FROM_BASE64 = 887 + FROM_DAYS = 888 + FROM_UNIXTIME = 889 + GEOMCOLLFROMTEXT = 890 + GEOMCOLLFROMWKB = 891 + GEOMETRYCOLLECTIONFROMTEXT = 892 + GEOMETRYCOLLECTIONFROMWKB = 893 + GEOMETRYFROMTEXT = 894 + GEOMETRYFROMWKB = 895 + GEOMETRYN = 896 + GEOMETRYTYPE = 897 + GEOMFROMTEXT = 898 + GEOMFROMWKB = 899 + GET_FORMAT = 900 + GET_LOCK = 901 + GLENGTH = 902 + GREATEST = 903 + GTID_SUBSET = 904 + GTID_SUBTRACT = 905 + HEX = 906 + IFNULL = 907 + INET6_ATON = 908 + INET6_NTOA = 909 + INET_ATON = 910 + INET_NTOA = 911 + INSTR = 912 + INTERIORRINGN = 913 + INTERSECTS = 914 + ISCLOSED = 915 + ISEMPTY = 916 + ISNULL = 917 + ISSIMPLE = 918 + IS_FREE_LOCK = 919 + IS_IPV4 = 920 + IS_IPV4_COMPAT = 921 + IS_IPV4_MAPPED = 922 + IS_IPV6 = 923 + IS_USED_LOCK = 924 + LAST_INSERT_ID = 925 + LCASE = 926 + LEAST = 927 + LENGTH = 928 + LINEFROMTEXT = 929 + LINEFROMWKB = 930 + LINESTRINGFROMTEXT = 931 + LINESTRINGFROMWKB = 932 + LN = 933 + LOAD_FILE = 934 + LOCATE = 935 + LOG = 936 + LOG10 = 937 + LOG2 = 938 + LOWER = 939 + LPAD = 940 + LTRIM = 941 + MAKEDATE = 942 + MAKETIME = 943 + MAKE_SET = 944 + MASTER_POS_WAIT = 945 + MBRCONTAINS = 946 + MBRDISJOINT = 947 + MBREQUAL = 948 + MBRINTERSECTS = 949 + MBROVERLAPS = 950 + MBRTOUCHES = 951 + MBRWITHIN = 952 + MD5 = 953 + MLINEFROMTEXT = 954 + MLINEFROMWKB = 955 + MONTHNAME = 956 + MPOINTFROMTEXT = 957 + MPOINTFROMWKB = 958 + MPOLYFROMTEXT = 959 + MPOLYFROMWKB = 960 + MULTILINESTRINGFROMTEXT = 961 + MULTILINESTRINGFROMWKB = 962 + MULTIPOINTFROMTEXT = 963 + MULTIPOINTFROMWKB = 964 + MULTIPOLYGONFROMTEXT = 965 + MULTIPOLYGONFROMWKB = 966 + NAME_CONST = 967 + NULLIF = 968 + NUMGEOMETRIES = 969 + NUMINTERIORRINGS = 970 + NUMPOINTS = 971 + OCT = 972 + OCTET_LENGTH = 973 + ORD = 974 + OVERLAPS = 975 + PERIOD_ADD = 976 + PERIOD_DIFF = 977 + PI = 978 + POINTFROMTEXT = 979 + POINTFROMWKB = 980 + POINTN = 981 + POLYFROMTEXT = 982 + POLYFROMWKB = 983 + POLYGONFROMTEXT = 984 + POLYGONFROMWKB = 985 + POW = 986 + POWER = 987 + QUOTE = 988 + RADIANS = 989 + RAND = 990 + RANDOM = 991 + RANDOM_BYTES = 992 + RELEASE_LOCK = 993 + REVERSE = 994 + ROUND = 995 + ROW_COUNT = 996 + RPAD = 997 + RTRIM = 998 + SEC_TO_TIME = 999 + SECONDARY_ENGINE_ATTRIBUTE = 1000 + SESSION_USER = 1001 + SHA = 1002 + SHA1 = 1003 + SHA2 = 1004 + SCHEMA_NAME = 1005 + SIGN = 1006 + SIN = 1007 + SLEEP = 1008 + SOUNDEX = 1009 + SQL_THREAD_WAIT_AFTER_GTIDS = 1010 + SQRT = 1011 + SRID = 1012 + STARTPOINT = 1013 + STRCMP = 1014 + STR_TO_DATE = 1015 + ST_AREA = 1016 + ST_ASBINARY = 1017 + ST_ASTEXT = 1018 + ST_ASWKB = 1019 + ST_ASWKT = 1020 + ST_BUFFER = 1021 + ST_CENTROID = 1022 + ST_CONTAINS = 1023 + ST_CROSSES = 1024 + ST_DIFFERENCE = 1025 + ST_DIMENSION = 1026 + ST_DISJOINT = 1027 + ST_DISTANCE = 1028 + ST_ENDPOINT = 1029 + ST_ENVELOPE = 1030 + ST_EQUALS = 1031 + ST_EXTERIORRING = 1032 + ST_GEOMCOLLFROMTEXT = 1033 + ST_GEOMCOLLFROMTXT = 1034 + ST_GEOMCOLLFROMWKB = 1035 + ST_GEOMETRYCOLLECTIONFROMTEXT = 1036 + ST_GEOMETRYCOLLECTIONFROMWKB = 1037 + ST_GEOMETRYFROMTEXT = 1038 + ST_GEOMETRYFROMWKB = 1039 + ST_GEOMETRYN = 1040 + ST_GEOMETRYTYPE = 1041 + ST_GEOMFROMTEXT = 1042 + ST_GEOMFROMWKB = 1043 + ST_INTERIORRINGN = 1044 + ST_INTERSECTION = 1045 + ST_INTERSECTS = 1046 + ST_ISCLOSED = 1047 + ST_ISEMPTY = 1048 + ST_ISSIMPLE = 1049 + ST_LINEFROMTEXT = 1050 + ST_LINEFROMWKB = 1051 + ST_LINESTRINGFROMTEXT = 1052 + ST_LINESTRINGFROMWKB = 1053 + ST_NUMGEOMETRIES = 1054 + ST_NUMINTERIORRING = 1055 + ST_NUMINTERIORRINGS = 1056 + ST_NUMPOINTS = 1057 + ST_OVERLAPS = 1058 + ST_POINTFROMTEXT = 1059 + ST_POINTFROMWKB = 1060 + ST_POINTN = 1061 + ST_POLYFROMTEXT = 1062 + ST_POLYFROMWKB = 1063 + ST_POLYGONFROMTEXT = 1064 + ST_POLYGONFROMWKB = 1065 + ST_SRID = 1066 + ST_STARTPOINT = 1067 + ST_SYMDIFFERENCE = 1068 + ST_TOUCHES = 1069 + ST_UNION = 1070 + ST_WITHIN = 1071 + ST_X = 1072 + ST_Y = 1073 + SUBDATE = 1074 + SUBSTRING_INDEX = 1075 + SUBTIME = 1076 + SYSTEM_USER = 1077 + TAN = 1078 + TIMEDIFF = 1079 + TIMESTAMPADD = 1080 + TIMESTAMPDIFF = 1081 + TIME_FORMAT = 1082 + TIME_TO_SEC = 1083 + TOUCHES = 1084 + TO_BASE64 = 1085 + TO_DAYS = 1086 + TO_SECONDS = 1087 + TP_CONNECTION_ADMIN = 1088 + UCASE = 1089 + UNCOMPRESS = 1090 + UNCOMPRESSED_LENGTH = 1091 + UNHEX = 1092 + UNIX_TIMESTAMP = 1093 + UPDATEXML = 1094 + UPPER = 1095 + UUID = 1096 + UUID_SHORT = 1097 + VALIDATE_PASSWORD_STRENGTH = 1098 + VERSION = 1099 + WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 1100 + WEEKDAY = 1101 + WEEKOFYEAR = 1102 + WEIGHT_STRING = 1103 + WITHIN = 1104 + YEARWEEK = 1105 + Y_FUNCTION = 1106 + X_FUNCTION = 1107 + VAR_ASSIGN = 1108 + PLUS_ASSIGN = 1109 + MINUS_ASSIGN = 1110 + MULT_ASSIGN = 1111 + DIV_ASSIGN = 1112 + MOD_ASSIGN = 1113 + AND_ASSIGN = 1114 + XOR_ASSIGN = 1115 + OR_ASSIGN = 1116 + STAR = 1117 + DIVIDE = 1118 + MODULE = 1119 + PLUS = 1120 + MINUS = 1121 + DIV = 1122 + MOD = 1123 + EQUAL_SYMBOL = 1124 + GREATER_SYMBOL = 1125 + LESS_SYMBOL = 1126 + EXCLAMATION_SYMBOL = 1127 + BIT_NOT_OP = 1128 + BIT_OR_OP = 1129 + BIT_AND_OP = 1130 + BIT_XOR_OP = 1131 + DOT = 1132 + LR_BRACKET = 1133 + RR_BRACKET = 1134 + COMMA = 1135 + SEMI = 1136 + AT_SIGN = 1137 + ZERO_DECIMAL = 1138 + ONE_DECIMAL = 1139 + TWO_DECIMAL = 1140 + SINGLE_QUOTE_SYMB = 1141 + DOUBLE_QUOTE_SYMB = 1142 + REVERSE_QUOTE_SYMB = 1143 + COLON_SYMB = 1144 + CHARSET_REVERSE_QOUTE_STRING = 1145 + FILESIZE_LITERAL = 1146 + START_NATIONAL_STRING_LITERAL = 1147 + STRING_LITERAL = 1148 + DECIMAL_LITERAL = 1149 + HEXADECIMAL_LITERAL = 1150 + REAL_LITERAL = 1151 + NULL_SPEC_LITERAL = 1152 + BIT_STRING = 1153 + STRING_CHARSET_NAME = 1154 + DOT_ID = 1155 + ID = 1156 + REVERSE_QUOTE_ID = 1157 + STRING_USER_NAME = 1158 + IP_ADDRESS = 1159 + LOCAL_ID = 1160 + GLOBAL_ID = 1161 + ERROR_RECONGNIGION = 1162 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", u"MYSQLCOMMENT", + u"ERRORCHANNEL" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", "'ANALYZE'", "'AND'", + "'ARRAY'", "'AS'", "'ASC'", "'ATTRIBUTE'", "'BEFORE'", "'BETWEEN'", + "'BOTH'", "'BUCKETS'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", + "'CAST'", "'CHANGE'", "'CHARACTER'", "'CHECK'", "'COLLATE'", + "'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", "'CONVERT'", + "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_ROLE'", "'CURRENT_USER'", + "'CURSOR'", "'DATABASE'", "'DATABASES'", "'DECLARE'", "'DEFAULT'", + "'DELAYED'", "'DELETE'", "'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", + "'DIAGNOSTICS'", "'DISTINCT'", "'DISTINCTROW'", "'DROP'", "'EACH'", + "'ELSE'", "'ELSEIF'", "'EMPTY'", "'ENCLOSED'", "'ENFORCED'", + "'ESCAPED'", "'EXCEPT'", "'EXISTS'", "'EXIT'", "'EXPLAIN'", + "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", "'FOREIGN'", "'FROM'", + "'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", "'GROUP'", + "'HAVING'", "'HIGH_PRIORITY'", "'HISTOGRAM'", "'IF'", "'IGNORE'", + "'IGNORED'", "'IN'", "'INDEX'", "'INFILE'", "'INNER'", "'INOUT'", + "'INSERT'", "'INTERVAL'", "'INTO'", "'IS'", "'ITERATE'", "'JOIN'", + "'KEY'", "'KEYS'", "'KILL'", "'LATERAL'", "'LEADING'", "'LEAVE'", + "'LEFT'", "'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", + "'LOCK'", "'LOCKED'", "'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", + "'MASTER_SSL_VERIFY_SERVER_CERT'", "'MATCH'", "'MAXVALUE'", + "'MINVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", + "'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", "'OPTIONAL'", + "'OPTIONALLY'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTFILE'", + "'OVER'", "'PARTITION'", "'PRIMARY'", "'PROCEDURE'", "'PURGE'", + "'RANGE'", "'READ'", "'READS'", "'REFERENCES'", "'REGEXP'", + "'RELEASE'", "'RENAME'", "'REPEAT'", "'REPLACE'", "'REQUIRE'", + "'RESIGNAL'", "'RESTRICT'", "'RETAIN'", "'RETURN'", "'REVOKE'", + "'RIGHT'", "'RLIKE'", "'SCHEMA'", "'SCHEMAS'", "'SELECT'", "'SET'", + "'SEPARATOR'", "'SHOW'", "'SIGNAL'", "'SKIP'", "'SKIP_QUERY_REWRITE'", + "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", "'SQLWARNING'", + "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'", + "'SSL'", "'STACKED'", "'STARTING'", "'STATEMENT'", "'STRAIGHT_JOIN'", + "'TABLE'", "'TERMINATED'", "'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", + "'TRUE'", "'UNDO'", "'UNION'", "'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", + "'UPDATE'", "'USAGE'", "'USE'", "'USING'", "'VALUES'", "'WHEN'", + "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'", "'ZEROFILL'", + "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'", "'INT'", + "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'", + "'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", + "'FLOAT4'", "'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", + "'TIME'", "'TIMESTAMP'", "'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", + "'NVARCHAR'", "'NATIONAL'", "'BINARY'", "'VARBINARY'", "'TINYBLOB'", + "'BLOB'", "'MEDIUMBLOB'", "'LONG'", "'LONGBLOB'", "'TINYTEXT'", + "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'", "'VARYING'", + "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", "'DAY_SECOND'", + "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'", + "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", + "'JSON_ARRAY'", "'JSON_ARRAYAGG'", "'JSON_ARRAY_APPEND'", "'JSON_ARRAY_INSERT'", + "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'", "'JSON_DEPTH'", "'JSON_EXTRACT'", + "'JSON_INSERT'", "'JSON_KEYS'", "'JSON_LENGTH'", "'JSON_MERGE'", + "'JSON_MERGE_PATCH'", "'JSON_MERGE_PRESERVE'", "'JSON_OBJECT'", + "'JSON_OBJECTAGG'", "'JSON_OVERLAPS'", "'JSON_PRETTY'", "'JSON_QUOTE'", + "'JSON_REMOVE'", "'JSON_REPLACE'", "'JSON_SCHEMA_VALID'", "'JSON_SCHEMA_VALIDATION_REPORT'", + "'JSON_SEARCH'", "'JSON_SET'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", + "'JSON_TABLE'", "'JSON_TYPE'", "'JSON_UNQUOTE'", "'JSON_VALID'", + "'JSON_VALUE'", "'NESTED'", "'ORDINALITY'", "'PATH'", "'AVG'", + "'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'", "'CUME_DIST'", + "'DENSE_RANK'", "'FIRST_VALUE'", "'GROUP_CONCAT'", "'LAG'", + "'LAST_VALUE'", "'LEAD'", "'MAX'", "'MIN'", "'NTILE'", "'NTH_VALUE'", + "'PERCENT_RANK'", "'RANK'", "'ROW_NUMBER'", "'STD'", "'STDDEV'", + "'STDDEV_POP'", "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", "'VAR_SAMP'", + "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", + "'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'", "'DATE_SUB'", + "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", "'SUBSTR'", + "'SUBSTRING'", "'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", + "'UTC_TIMESTAMP'", "'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", + "'ALGORITHM'", "'ANY'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", + "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", "'AVG_ROW_LENGTH'", + "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", "'BOOLEAN'", + "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", "'CHANGED'", + "'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", "'CIPHER'", "'CLASS_ORIGIN'", + "'CLIENT'", "'CLOSE'", "'CLUSTERING'", "'COALESCE'", "'CODE'", + "'COLUMNS'", "'COLUMN_FORMAT'", "'COLUMN_NAME'", "'COMMENT'", + "'COMMIT'", "'COMPACT'", "'COMPLETION'", "'COMPRESSED'", "'CONCURRENT'", + "'CONNECT'", "'CONNECTION'", "'CONSISTENT'", "'CONSTRAINT_CATALOG'", + "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", "'CONTAINS'", "'CONTEXT'", + "'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CYCLE'", "'CURSOR_NAME'", + "'DATA'", "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'", + "'DELAY_KEY_WRITE'", "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", + "'DISCARD'", "'DISK'", "'DO'", "'DUMPFILE'", "'DUPLICATE'", + "'DYNAMIC'", "'ENABLE'", "'ENCRYPTED'", "'ENCRYPTION'", "'ENCRYPTION_KEY_ID'", + "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", "'ERRORS'", + "'ESCAPE'", "'EVEN'", "'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'", + "'EXCLUSIVE'", "'EXPIRE'", "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", + "'FAILED_LOGIN_ATTEMPTS'", "'FAST'", "'FAULTS'", "'FIELDS'", + "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", "'FIXED'", "'FLUSH'", + "'FOLLOWING'", "'FOLLOWS'", "'FOUND'", "'FULL'", "'FUNCTION'", + "'GENERAL'", "'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", + "'HANDLER'", "'HASH'", "'HELP'", "'HISTORY'", "'HOST'", "'HOSTS'", + "'IDENTIFIED'", "'IGNORE_SERVER_IDS'", "'IMPORT'", "'INCREMENT'", + "'INDEXES'", "'INITIAL_SIZE'", "'INPLACE'", "'INSERT_METHOD'", + "'INSTALL'", "'INSTANCE'", "'INSTANT'", "'INVISIBLE'", "'INVOKER'", + "'IO'", "'IO_THREAD'", "'IPC'", "'ISOLATION'", "'ISSUER'", "'JSON'", + "'KEY_BLOCK_SIZE'", "'LANGUAGE'", "'LAST'", "'LEAVES'", "'LESS'", + "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", "'LOGS'", "'MASTER'", + "'MASTER_AUTO_POSITION'", "'MASTER_CONNECT_RETRY'", "'MASTER_DELAY'", + "'MASTER_HEARTBEAT_PERIOD'", "'MASTER_HOST'", "'MASTER_LOG_FILE'", + "'MASTER_LOG_POS'", "'MASTER_PASSWORD'", "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", + "'MASTER_SSL'", "'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", + "'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", + "'MASTER_SSL_KEY'", "'MASTER_TLS_VERSION'", "'MASTER_USER'", + "'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", + "'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'", "'MAX_USER_CONNECTIONS'", + "'MEDIUM'", "'MEMBER'", "'MERGE'", "'MESSAGE_TEXT'", "'MID'", + "'MIGRATE'", "'MIN_ROWS'", "'MODE'", "'MODIFY'", "'MUTEX'", + "'MYSQL'", "'MYSQL_ERRNO'", "'NAME'", "'NAMES'", "'NCHAR'", + "'NEVER'", "'NEXT'", "'NO'", "'NOCACHE'", "'NOCOPY'", "'NOCYCLE'", + "'NOMAXVALUE'", "'NOMINVALUE'", "'NOWAIT'", "'NODEGROUP'", "'NONE'", + "'ODBC'", "'OFFLINE'", "'OFFSET'", "'OF'", "'OJ'", "'OLD_PASSWORD'", + "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", "'OPTIMIZER_COSTS'", + "'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", "'PAGE_COMPRESSED'", + "'PAGE_COMPRESSION_LEVEL'", "'PARSER'", "'PARTIAL'", "'PARTITIONING'", + "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_LOCK_TIME'", "'PHASE'", + "'PLUGIN'", "'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", + "'PRECEDING'", "'PREPARE'", "'PRESERVE'", "'PREV'", "'PROCESSLIST'", + "'PROFILE'", "'PROFILES'", "'PROXY'", "'QUERY'", "'QUICK'", + "'REBUILD'", "'RECOVER'", "'RECURSIVE'", "'REDO_BUFFER_SIZE'", + "'REDUNDANT'", "'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", + "'RELAYLOG'", "'REMOVE'", "'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", + "'REPLICATE_DO_TABLE'", "'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", + "'REPLICATE_REWRITE_DB'", "'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", + "'REPLICATION'", "'RESET'", "'RESTART'", "'RESUME'", "'RETURNED_SQLSTATE'", + "'RETURNING'", "'RETURNS'", "'REUSE'", "'ROLE'", "'ROLLBACK'", + "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'", "'RTREE'", + "'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SEQUENCE'", "'SERVER'", + "'SESSION'", "'SHARE'", "'SHARED'", "'SIGNED'", "'SIMPLE'", + "'SLAVE'", "'SLOW'", "'SNAPSHOT'", "'SOCKET'", "'SOME'", "'SONAME'", + "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", "'SQL_AFTER_MTS_GAPS'", + "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", "'SQL_CACHE'", + "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", "'STATS_AUTO_RECALC'", + "'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", + "'STORAGE'", "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", + "'SUBPARTITION'", "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", + "'SWITCHES'", "'TABLE_NAME'", "'TABLESPACE'", "'TABLE_TYPE'", + "'TEMPORARY'", "'TEMPTABLE'", "'THAN'", "'TRADITIONAL'", "'TRANSACTION'", + "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'", "'UNBOUNDED'", + "'UNDEFINED'", "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'", + "'UNKNOWN'", "'UNTIL'", "'UPGRADE'", "'USER'", "'USE_FRM'", + "'USER_RESOURCES'", "'VALIDATION'", "'VALUE'", "'VARIABLES'", + "'VIEW'", "'VIRTUAL'", "'VISIBLE'", "'WAIT'", "'WARNINGS'", + "'WINDOW'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", "'XA'", + "'XML'", "'YES'", "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", + "'QUARTER'", "'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", + "'SECOND'", "'MICROSECOND'", "'ADMIN'", "'APPLICATION_PASSWORD_ADMIN'", + "'AUDIT_ABORT_EXEMPT'", "'AUDIT_ADMIN'", "'AUTHENTICATION_POLICY_ADMIN'", + "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", + "'CLONE_ADMIN'", "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", + "'EXECUTE'", "'FILE'", "'FIREWALL_ADMIN'", "'FIREWALL_EXEMPT'", + "'FIREWALL_USER'", "'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", + "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", "'GROUP_REPLICATION_ADMIN'", + "'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", "'INVOKE'", + "'LAMBDA'", "'NDB_STORED_USER'", "'PASSWORDLESS_USER_ADMIN'", + "'PERSIST_RO_VARIABLES_ADMIN'", "'PRIVILEGES'", "'PROCESS'", + "'RELOAD'", "'REPLICATION_APPLIER'", "'REPLICATION_SLAVE_ADMIN'", + "'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", "'ROLE_ADMIN'", + "'ROUTINE'", "'S3'", "'SERVICE_CONNECTION_ADMIN'", "'SET_USER_ID'", + "'SHOW_ROUTINE'", "'SHUTDOWN'", "'SUPER'", "'SYSTEM_VARIABLES_ADMIN'", + "'TABLES'", "'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", + "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", "'BIG5'", "'CP1250'", + "'CP1251'", "'CP1256'", "'CP1257'", "'CP850'", "'CP852'", "'CP866'", + "'CP932'", "'DEC8'", "'EUCJPMS'", "'EUCKR'", "'GB18030'", "'GB2312'", + "'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", "'HP8'", "'KEYBCS2'", + "'KOI8R'", "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", "'LATIN7'", + "'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", "'UCS2'", + "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", "'UTF8'", "'UTF8MB3'", + "'UTF8MB4'", "'ARCHIVE'", "'BLACKHOLE'", "'CSV'", "'FEDERATED'", + "'INNODB'", "'MEMORY'", "'MRG_MYISAM'", "'MYISAM'", "'NDB'", + "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", "'TOKUDB'", "'REPEATABLE'", + "'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", "'GEOMETRYCOLLECTION'", + "'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", "'MULTILINESTRING'", + "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", "'ABS'", + "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", + "'AREA'", "'ASBINARY'", "'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", + "'ASYMMETRIC_DECRYPT'", "'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", + "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", "'ATAN'", "'ATAN2'", + "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", "'BUFFER'", + "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'", + "'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", + "'COMPRESS'", "'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", + "'CONV'", "'CONVERT_TZ'", "'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", + "'CREATE_ASYMMETRIC_PUB_KEY'", "'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", + "'CROSSES'", "'DATEDIFF'", "'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", + "'DAYOFWEEK'", "'DAYOFYEAR'", "'DECODE'", "'DEGREES'", "'DES_DECRYPT'", + "'DES_ENCRYPT'", "'DIMENSION'", "'DISJOINT'", "'ELT'", "'ENCODE'", + "'ENCRYPT'", "'ENDPOINT'", "'ENGINE_ATTRIBUTE'", "'ENVELOPE'", + "'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'", + "'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", "'FOUND_ROWS'", + "'FROM_BASE64'", "'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", + "'GEOMCOLLFROMWKB'", "'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", + "'GEOMETRYFROMTEXT'", "'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", + "'GEOMFROMTEXT'", "'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", + "'GLENGTH'", "'GREATEST'", "'GTID_SUBSET'", "'GTID_SUBTRACT'", + "'HEX'", "'IFNULL'", "'INET6_ATON'", "'INET6_NTOA'", "'INET_ATON'", + "'INET_NTOA'", "'INSTR'", "'INTERIORRINGN'", "'INTERSECTS'", + "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", "'ISSIMPLE'", "'IS_FREE_LOCK'", + "'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", "'IS_IPV6'", + "'IS_USED_LOCK'", "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", + "'LENGTH'", "'LINEFROMTEXT'", "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", + "'LINESTRINGFROMWKB'", "'LN'", "'LOAD_FILE'", "'LOCATE'", "'LOG'", + "'LOG10'", "'LOG2'", "'LOWER'", "'LPAD'", "'LTRIM'", "'MAKEDATE'", + "'MAKETIME'", "'MAKE_SET'", "'MASTER_POS_WAIT'", "'MBRCONTAINS'", + "'MBRDISJOINT'", "'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", + "'MBRTOUCHES'", "'MBRWITHIN'", "'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", + "'MONTHNAME'", "'MPOINTFROMTEXT'", "'MPOINTFROMWKB'", "'MPOLYFROMTEXT'", + "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", "'MULTILINESTRINGFROMWKB'", + "'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", "'MULTIPOLYGONFROMTEXT'", + "'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", "'NUMGEOMETRIES'", + "'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", + "'ORD'", "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", + "'POINTFROMTEXT'", "'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", + "'POLYFROMWKB'", "'POLYGONFROMTEXT'", "'POLYGONFROMWKB'", "'POW'", + "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", "'RANDOM'", "'RANDOM_BYTES'", + "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", "'ROW_COUNT'", "'RPAD'", + "'RTRIM'", "'SEC_TO_TIME'", "'SECONDARY_ENGINE_ATTRIBUTE'", + "'SESSION_USER'", "'SHA'", "'SHA1'", "'SHA2'", "'SCHEMA_NAME'", + "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", "'SQL_THREAD_WAIT_AFTER_GTIDS'", + "'SQRT'", "'SRID'", "'STARTPOINT'", "'STRCMP'", "'STR_TO_DATE'", + "'ST_AREA'", "'ST_ASBINARY'", "'ST_ASTEXT'", "'ST_ASWKB'", "'ST_ASWKT'", + "'ST_BUFFER'", "'ST_CENTROID'", "'ST_CONTAINS'", "'ST_CROSSES'", + "'ST_DIFFERENCE'", "'ST_DIMENSION'", "'ST_DISJOINT'", "'ST_DISTANCE'", + "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'", "'ST_EXTERIORRING'", + "'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", + "'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", + "'ST_GEOMETRYFROMTEXT'", "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", + "'ST_GEOMETRYTYPE'", "'ST_GEOMFROMTEXT'", "'ST_GEOMFROMWKB'", + "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", "'ST_INTERSECTS'", + "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", "'ST_LINEFROMTEXT'", + "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", + "'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", + "'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'", + "'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", + "'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", + "'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", + "'SUBDATE'", "'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", + "'TAN'", "'TIMEDIFF'", "'TIMESTAMPADD'", "'TIMESTAMPDIFF'", + "'TIME_FORMAT'", "'TIME_TO_SEC'", "'TOUCHES'", "'TO_BASE64'", + "'TO_DAYS'", "'TO_SECONDS'", "'TP_CONNECTION_ADMIN'", "'UCASE'", + "'UNCOMPRESS'", "'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", + "'UPDATEXML'", "'UPPER'", "'UUID'", "'UUID_SHORT'", "'VALIDATE_PASSWORD_STRENGTH'", + "'VERSION'", "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", "'WEEKDAY'", + "'WEEKOFYEAR'", "'WEIGHT_STRING'", "'WITHIN'", "'YEARWEEK'", + "'Y'", "'X'", "':='", "'+='", "'-='", "'*='", "'/='", "'%='", + "'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'-'", "'DIV'", + "'MOD'", "'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", "'^'", + "'.'", "'('", "')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", + "'''", "'\"'", "'`'", "':'" ] + + symbolicNames = [ "", + "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", + "ADD", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "ARRAY", + "AS", "ASC", "ATTRIBUTE", "BEFORE", "BETWEEN", "BOTH", "BUCKETS", + "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", "CHARACTER", + "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", + "CONVERT", "CREATE", "CROSS", "CURRENT", "CURRENT_ROLE", "CURRENT_USER", + "CURSOR", "DATABASE", "DATABASES", "DECLARE", "DEFAULT", "DELAYED", + "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", "DIAGNOSTICS", + "DISTINCT", "DISTINCTROW", "DROP", "EACH", "ELSE", "ELSEIF", + "EMPTY", "ENCLOSED", "ENFORCED", "ESCAPED", "EXCEPT", "EXISTS", + "EXIT", "EXPLAIN", "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN", + "FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", "GROUP", "HAVING", + "HIGH_PRIORITY", "HISTOGRAM", "IF", "IGNORE", "IGNORED", "IN", + "INDEX", "INFILE", "INNER", "INOUT", "INSERT", "INTERVAL", "INTO", + "IS", "ITERATE", "JOIN", "KEY", "KEYS", "KILL", "LATERAL", "LEADING", + "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", + "LOCK", "LOCKED", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", "MAXVALUE", "MINVALUE", "MODIFIES", "NATURAL", "NOT", + "NO_WRITE_TO_BINLOG", "NULL_LITERAL", "NUMBER", "ON", "OPTIMIZE", + "OPTION", "OPTIONAL", "OPTIONALLY", "OR", "ORDER", "OUT", "OUTER", + "OUTFILE", "OVER", "PARTITION", "PRIMARY", "PROCEDURE", "PURGE", + "RANGE", "READ", "READS", "REFERENCES", "REGEXP", "RELEASE", + "RENAME", "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", + "RETAIN", "RETURN", "REVOKE", "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", + "SELECT", "SET", "SEPARATOR", "SHOW", "SIGNAL", "SKIP_", "SKIP_QUERY_REWRITE", + "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", + "SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", + "SSL", "STACKED", "STARTING", "STATEMENT", "STRAIGHT_JOIN", + "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", + "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE", + "USAGE", "USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", + "WITH", "WRITE", "XOR", "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", + "MIDDLEINT", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", + "INTEGER", "BIGINT", "REAL", "DOUBLE", "PRECISION", "FLOAT", + "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC", "DATE", "TIME", + "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR", + "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", + "LONG", "LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", + "ENUM", "VARYING", "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", + "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND", + "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", + "DAY_MICROSECOND", "JSON_ARRAY", "JSON_ARRAYAGG", "JSON_ARRAY_APPEND", + "JSON_ARRAY_INSERT", "JSON_CONTAINS", "JSON_CONTAINS_PATH", + "JSON_DEPTH", "JSON_EXTRACT", "JSON_INSERT", "JSON_KEYS", "JSON_LENGTH", + "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT", + "JSON_OBJECTAGG", "JSON_OVERLAPS", "JSON_PRETTY", "JSON_QUOTE", + "JSON_REMOVE", "JSON_REPLACE", "JSON_SCHEMA_VALID", "JSON_SCHEMA_VALIDATION_REPORT", + "JSON_SEARCH", "JSON_SET", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", + "JSON_TABLE", "JSON_TYPE", "JSON_UNQUOTE", "JSON_VALID", "JSON_VALUE", + "NESTED", "ORDINALITY", "PATH", "AVG", "BIT_AND", "BIT_OR", + "BIT_XOR", "COUNT", "CUME_DIST", "DENSE_RANK", "FIRST_VALUE", + "GROUP_CONCAT", "LAG", "LAST_VALUE", "LEAD", "MAX", "MIN", "NTILE", + "NTH_VALUE", "PERCENT_RANK", "RANK", "ROW_NUMBER", "STD", "STDDEV", + "STDDEV_POP", "STDDEV_SAMP", "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", + "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "LOCALTIME", + "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", "EXTRACT", "LOCALTIMESTAMP", + "NOW", "POSITION", "SUBSTR", "SUBSTRING", "SYSDATE", "TRIM", + "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", "ACTION", + "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", + "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", "BEGIN", + "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN", "BTREE", "CACHE", + "CASCADED", "CHAIN", "CHANGED", "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", + "CIPHER", "CLASS_ORIGIN", "CLIENT", "CLOSE", "CLUSTERING", "COALESCE", + "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", "COMMENT", + "COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", + "CONCURRENT", "CONNECT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", + "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", + "CONTRIBUTORS", "COPY", "CPU", "CYCLE", "CURSOR_NAME", "DATA", + "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", "DELAY_KEY_WRITE", + "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", "DISK", "DO", + "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTED", "ENCRYPTION", + "ENCRYPTION_KEY_ID", "END", "ENDS", "ENGINE", "ENGINES", "ERROR", + "ERRORS", "ESCAPE", "EVEN", "EVENT", "EVENTS", "EVERY", "EXCHANGE", + "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", "EXTENT_SIZE", + "FAILED_LOGIN_ATTEMPTS", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", + "FILTER", "FIRST", "FIXED", "FLUSH", "FOLLOWING", "FOLLOWS", + "FOUND", "FULL", "FUNCTION", "GENERAL", "GLOBAL", "GRANTS", + "GROUP_REPLICATION", "HANDLER", "HASH", "HELP", "HISTORY", "HOST", + "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INCREMENT", + "INDEXES", "INITIAL_SIZE", "INPLACE", "INSERT_METHOD", "INSTALL", + "INSTANCE", "INSTANT", "INVISIBLE", "INVOKER", "IO", "IO_THREAD", + "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE", "LANGUAGE", + "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE", + "LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", + "MASTER_DELAY", "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", + "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", + "MASTER_SSL", "MASTER_SSL_CA", "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", + "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", + "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", "MAX_CONNECTIONS_PER_HOUR", + "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", "MAX_UPDATES_PER_HOUR", + "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", "MESSAGE_TEXT", + "MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX", "MYSQL", + "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", + "NOCACHE", "NOCOPY", "NOCYCLE", "NOMAXVALUE", "NOMINVALUE", + "NOWAIT", "NODEGROUP", "NONE", "ODBC", "OFFLINE", "OFFSET", + "OF", "OJ", "OLD_PASSWORD", "ONE", "ONLINE", "ONLY", "OPEN", + "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", "PAGE", + "PAGE_COMPRESSED", "PAGE_COMPRESSION_LEVEL", "PARSER", "PARTIAL", + "PARTITIONING", "PARTITIONS", "PASSWORD", "PASSWORD_LOCK_TIME", + "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", + "PRECEDING", "PREPARE", "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", + "PROFILES", "PROXY", "QUERY", "QUICK", "REBUILD", "RECOVER", + "RECURSIVE", "REDO_BUFFER_SIZE", "REDUNDANT", "RELAY", "RELAY_LOG_FILE", + "RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE", "REPAIR", + "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", + "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", + "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", "RESTART", + "RESUME", "RETURNED_SQLSTATE", "RETURNING", "RETURNS", "REUSE", + "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW", "ROWS", "ROW_FORMAT", + "RTREE", "SAVEPOINT", "SCHEDULE", "SECURITY", "SEQUENCE", "SERVER", + "SESSION", "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", + "SNAPSHOT", "SOCKET", "SOME", "SONAME", "SOUNDS", "SOURCE", + "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", "SQL_BEFORE_GTIDS", + "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", + "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", + "STATS_SAMPLE_PAGES", "STATUS", "STOP", "STORAGE", "STORED", + "STRING", "SUBCLASS_ORIGIN", "SUBJECT", "SUBPARTITION", "SUBPARTITIONS", + "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", "TABLESPACE", + "TABLE_TYPE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", + "TRANSACTION", "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNBOUNDED", + "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", "UNINSTALL", "UNKNOWN", + "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", "VALIDATION", + "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", + "WARNINGS", "WINDOW", "WITHOUT", "WORK", "WRAPPER", "X509", + "XA", "XML", "YES", "EUR", "USA", "JIS", "ISO", "INTERNAL", + "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", + "MICROSECOND", "ADMIN", "APPLICATION_PASSWORD_ADMIN", "AUDIT_ABORT_EXEMPT", + "AUDIT_ADMIN", "AUTHENTICATION_POLICY_ADMIN", "BACKUP_ADMIN", + "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", "CLONE_ADMIN", "CONNECTION_ADMIN", + "ENCRYPTION_KEY_ADMIN", "EXECUTE", "FILE", "FIREWALL_ADMIN", + "FIREWALL_EXEMPT", "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", + "FLUSH_STATUS", "FLUSH_TABLES", "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", + "INNODB_REDO_LOG_ARCHIVE", "INNODB_REDO_LOG_ENABLE", "INVOKE", + "LAMBDA", "NDB_STORED_USER", "PASSWORDLESS_USER_ADMIN", "PERSIST_RO_VARIABLES_ADMIN", + "PRIVILEGES", "PROCESS", "RELOAD", "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", + "RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", "ROLE_ADMIN", + "ROUTINE", "S3", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SHUTDOWN", "SUPER", "SYSTEM_VARIABLES_ADMIN", + "TABLES", "TABLE_ENCRYPTION_ADMIN", "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", + "ARMSCII8", "ASCII", "BIG5", "CP1250", "CP1251", "CP1256", "CP1257", + "CP850", "CP852", "CP866", "CP932", "DEC8", "EUCJPMS", "EUCKR", + "GB18030", "GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", "HP8", + "KEYBCS2", "KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", + "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620", "UCS2", "UJIS", + "UTF16", "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", + "BLACKHOLE", "CSV", "FEDERATED", "INNODB", "MEMORY", "MRG_MYISAM", + "MYISAM", "NDB", "NDBCLUSTER", "PERFORMANCE_SCHEMA", "TOKUDB", + "REPEATABLE", "COMMITTED", "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", + "GEOMCOLLECTION", "GEOMETRY", "LINESTRING", "MULTILINESTRING", + "MULTIPOINT", "MULTIPOLYGON", "POINT", "POLYGON", "ABS", "ACOS", + "ADDDATE", "ADDTIME", "AES_DECRYPT", "AES_ENCRYPT", "AREA", + "ASBINARY", "ASIN", "ASTEXT", "ASWKB", "ASWKT", "ASYMMETRIC_DECRYPT", + "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", + "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT", + "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", "CENTROID", + "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", + "COLLATION", "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", + "CONV", "CONVERT_TZ", "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", + "CREATE_ASYMMETRIC_PUB_KEY", "CREATE_DH_PARAMETERS", "CREATE_DIGEST", + "CROSSES", "DATEDIFF", "DATE_FORMAT", "DAYNAME", "DAYOFMONTH", + "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", "DES_DECRYPT", + "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", "ENCRYPT", + "ENDPOINT", "ENGINE_ATTRIBUTE", "ENVELOPE", "EQUALS", "EXP", + "EXPORT_SET", "EXTERIORRING", "EXTRACTVALUE", "FIELD", "FIND_IN_SET", + "FLOOR", "FORMAT", "FOUND_ROWS", "FROM_BASE64", "FROM_DAYS", + "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", "GEOMETRYCOLLECTIONFROMTEXT", + "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", "GEOMETRYFROMWKB", + "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", + "GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", + "GTID_SUBTRACT", "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", + "INET_ATON", "INET_NTOA", "INSTR", "INTERIORRINGN", "INTERSECTS", + "ISCLOSED", "ISEMPTY", "ISNULL", "ISSIMPLE", "IS_FREE_LOCK", + "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", "IS_IPV6", "IS_USED_LOCK", + "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", "LINEFROMTEXT", + "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", "LN", + "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", + "LTRIM", "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", + "MBRCONTAINS", "MBRDISJOINT", "MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", + "MBRTOUCHES", "MBRWITHIN", "MD5", "MLINEFROMTEXT", "MLINEFROMWKB", + "MONTHNAME", "MPOINTFROMTEXT", "MPOINTFROMWKB", "MPOLYFROMTEXT", + "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", "MULTILINESTRINGFROMWKB", + "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT", + "MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", "NUMGEOMETRIES", + "NUMINTERIORRINGS", "NUMPOINTS", "OCT", "OCTET_LENGTH", "ORD", + "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", "PI", "POINTFROMTEXT", + "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", "POLYGONFROMTEXT", + "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", "RAND", + "RANDOM", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", + "ROW_COUNT", "RPAD", "RTRIM", "SEC_TO_TIME", "SECONDARY_ENGINE_ATTRIBUTE", + "SESSION_USER", "SHA", "SHA1", "SHA2", "SCHEMA_NAME", "SIGN", + "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", "SQRT", + "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", + "ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", + "ST_CONTAINS", "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", + "ST_DISJOINT", "ST_DISTANCE", "ST_ENDPOINT", "ST_ENVELOPE", + "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", "ST_GEOMCOLLFROMTXT", + "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", "ST_GEOMETRYCOLLECTIONFROMWKB", + "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", "ST_GEOMETRYN", + "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", "ST_INTERIORRINGN", + "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", "ST_ISEMPTY", + "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", + "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", + "ST_NUMINTERIORRINGS", "ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", + "ST_POINTFROMWKB", "ST_POINTN", "ST_POLYFROMTEXT", "ST_POLYFROMWKB", + "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", "ST_SRID", "ST_STARTPOINT", + "ST_SYMDIFFERENCE", "ST_TOUCHES", "ST_UNION", "ST_WITHIN", "ST_X", + "ST_Y", "SUBDATE", "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER", + "TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", + "TIME_TO_SEC", "TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", + "TP_CONNECTION_ADMIN", "UCASE", "UNCOMPRESS", "UNCOMPRESSED_LENGTH", + "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", "UPPER", "UUID", "UUID_SHORT", + "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", + "Y_FUNCTION", "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", + "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "STAR", "DIVIDE", "MODULE", "PLUS", "MINUS", "DIV", + "MOD", "EQUAL_SYMBOL", "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", + "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", "BIT_XOR_OP", "DOT", + "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", "AT_SIGN", "ZERO_DECIMAL", + "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", "DOUBLE_QUOTE_SYMB", + "REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", + "FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", + "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", "REVERSE_QUOTE_ID", + "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION" ] + + ruleNames = [ "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", + "ADD", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "ARRAY", + "AS", "ASC", "ATTRIBUTE", "BEFORE", "BETWEEN", "BOTH", + "BUCKETS", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", + "CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONDITION", + "CONSTRAINT", "CONTINUE", "CONVERT", "CREATE", "CROSS", + "CURRENT", "CURRENT_ROLE", "CURRENT_USER", "CURSOR", "DATABASE", + "DATABASES", "DECLARE", "DEFAULT", "DELAYED", "DELETE", + "DESC", "DESCRIBE", "DETERMINISTIC", "DIAGNOSTICS", "DISTINCT", + "DISTINCTROW", "DROP", "EACH", "ELSE", "ELSEIF", "EMPTY", + "ENCLOSED", "ENFORCED", "ESCAPED", "EXCEPT", "EXISTS", + "EXIT", "EXPLAIN", "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN", + "FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", "GROUP", + "HAVING", "HIGH_PRIORITY", "HISTOGRAM", "IF", "IGNORE", + "IGNORED", "IN", "INDEX", "INFILE", "INNER", "INOUT", + "INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", + "KEY", "KEYS", "KILL", "LATERAL", "LEADING", "LEAVE", + "LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", "LOCK", + "LOCKED", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", "MAXVALUE", "MINVALUE", "MODIFIES", "NATURAL", + "NOT", "NO_WRITE_TO_BINLOG", "NULL_LITERAL", "NUMBER", + "ON", "OPTIMIZE", "OPTION", "OPTIONAL", "OPTIONALLY", + "OR", "ORDER", "OUT", "OUTER", "OUTFILE", "OVER", "PARTITION", + "PRIMARY", "PROCEDURE", "PURGE", "RANGE", "READ", "READS", + "REFERENCES", "REGEXP", "RELEASE", "RENAME", "REPEAT", + "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", "RETAIN", + "RETURN", "REVOKE", "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", + "SELECT", "SET", "SEPARATOR", "SHOW", "SIGNAL", "SKIP_", + "SKIP_QUERY_REWRITE", "SPATIAL", "SQL", "SQLEXCEPTION", + "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", + "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", "STATEMENT", + "STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", + "TRAILING", "TRIGGER", "TRUE", "UNDO", "UNION", "UNIQUE", + "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", "USE", "USING", + "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE", "XOR", + "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", + "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", + "BIGINT", "REAL", "DOUBLE", "PRECISION", "FLOAT", "FLOAT4", + "FLOAT8", "DECIMAL", "DEC", "NUMERIC", "DATE", "TIME", + "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR", + "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", + "MEDIUMBLOB", "LONG", "LONGBLOB", "TINYTEXT", "TEXT", + "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", "SERIAL", + "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", + "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", + "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND", + "JSON_ARRAY", "JSON_ARRAYAGG", "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", + "JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_DEPTH", "JSON_EXTRACT", + "JSON_INSERT", "JSON_KEYS", "JSON_LENGTH", "JSON_MERGE", + "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT", + "JSON_OBJECTAGG", "JSON_OVERLAPS", "JSON_PRETTY", "JSON_QUOTE", + "JSON_REMOVE", "JSON_REPLACE", "JSON_SCHEMA_VALID", "JSON_SCHEMA_VALIDATION_REPORT", + "JSON_SEARCH", "JSON_SET", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", + "JSON_TABLE", "JSON_TYPE", "JSON_UNQUOTE", "JSON_VALID", + "JSON_VALUE", "NESTED", "ORDINALITY", "PATH", "AVG", "BIT_AND", + "BIT_OR", "BIT_XOR", "COUNT", "CUME_DIST", "DENSE_RANK", + "FIRST_VALUE", "GROUP_CONCAT", "LAG", "LAST_VALUE", "LEAD", + "MAX", "MIN", "NTILE", "NTH_VALUE", "PERCENT_RANK", "RANK", + "ROW_NUMBER", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", + "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", + "CURRENT_TIME", "CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", + "CURTIME", "DATE_ADD", "DATE_SUB", "EXTRACT", "LOCALTIMESTAMP", + "NOW", "POSITION", "SUBSTR", "SUBSTRING", "SYSDATE", "TRIM", + "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", "ACTION", + "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", + "AUTOCOMMIT", "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", + "BEGIN", "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN", + "BTREE", "CACHE", "CASCADED", "CHAIN", "CHANGED", "CHANNEL", + "CHECKSUM", "PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", + "CLIENT", "CLOSE", "CLUSTERING", "COALESCE", "CODE", "COLUMNS", + "COLUMN_FORMAT", "COLUMN_NAME", "COMMENT", "COMMIT", "COMPACT", + "COMPLETION", "COMPRESSED", "COMPRESSION", "CONCURRENT", + "CONNECT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", + "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", + "CONTRIBUTORS", "COPY", "CPU", "CYCLE", "CURSOR_NAME", + "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", + "DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", + "DISCARD", "DISK", "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", + "ENABLE", "ENCRYPTED", "ENCRYPTION", "ENCRYPTION_KEY_ID", + "END", "ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", + "ESCAPE", "EVEN", "EVENT", "EVENTS", "EVERY", "EXCHANGE", + "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", "EXTENT_SIZE", + "FAILED_LOGIN_ATTEMPTS", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", + "FILTER", "FIRST", "FIXED", "FLUSH", "FOLLOWING", "FOLLOWS", + "FOUND", "FULL", "FUNCTION", "GENERAL", "GLOBAL", "GRANTS", + "GROUP_REPLICATION", "HANDLER", "HASH", "HELP", "HISTORY", + "HOST", "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", + "INCREMENT", "INDEXES", "INITIAL_SIZE", "INPLACE", "INSERT_METHOD", + "INSTALL", "INSTANCE", "INSTANT", "INVISIBLE", "INVOKER", + "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", + "KEY_BLOCK_SIZE", "LANGUAGE", "LAST", "LEAVES", "LESS", + "LEVEL", "LIST", "LOCAL", "LOGFILE", "LOGS", "MASTER", + "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", + "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", + "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", + "MASTER_SSL", "MASTER_SSL_CA", "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", + "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", + "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", + "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", + "MAX_SIZE", "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", + "MEDIUM", "MEMBER", "MERGE", "MESSAGE_TEXT", "MID", "MIGRATE", + "MIN_ROWS", "MODE", "MODIFY", "MUTEX", "MYSQL", "MYSQL_ERRNO", + "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", "NOCACHE", + "NOCOPY", "NOCYCLE", "NOMAXVALUE", "NOMINVALUE", "NOWAIT", + "NODEGROUP", "NONE", "ODBC", "OFFLINE", "OFFSET", "OF", + "OJ", "OLD_PASSWORD", "ONE", "ONLINE", "ONLY", "OPEN", + "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", "PAGE", + "PAGE_COMPRESSED", "PAGE_COMPRESSION_LEVEL", "PARSER", + "PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", "PASSWORD_LOCK_TIME", + "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", + "PRECEDING", "PREPARE", "PRESERVE", "PREV", "PROCESSLIST", + "PROFILE", "PROFILES", "PROXY", "QUERY", "QUICK", "REBUILD", + "RECOVER", "RECURSIVE", "REDO_BUFFER_SIZE", "REDUNDANT", + "RELAY", "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", + "REMOVE", "REORGANIZE", "REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", + "REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", + "REPLICATE_WILD_DO_TABLE", "REPLICATE_WILD_IGNORE_TABLE", + "REPLICATION", "RESET", "RESTART", "RESUME", "RETURNED_SQLSTATE", + "RETURNING", "RETURNS", "REUSE", "ROLE", "ROLLBACK", "ROLLUP", + "ROTATE", "ROW", "ROWS", "ROW_FORMAT", "RTREE", "SAVEPOINT", + "SCHEDULE", "SECURITY", "SEQUENCE", "SERVER", "SESSION", + "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", + "SNAPSHOT", "SOCKET", "SOME", "SONAME", "SOUNDS", "SOURCE", + "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", "SQL_BEFORE_GTIDS", + "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", + "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", + "STATS_SAMPLE_PAGES", "STATUS", "STOP", "STORAGE", "STORED", + "STRING", "SUBCLASS_ORIGIN", "SUBJECT", "SUBPARTITION", + "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", + "TABLESPACE", "TABLE_TYPE", "TEMPORARY", "TEMPTABLE", + "THAN", "TRADITIONAL", "TRANSACTION", "TRANSACTIONAL", + "TRIGGERS", "TRUNCATE", "UNBOUNDED", "UNDEFINED", "UNDOFILE", + "UNDO_BUFFER_SIZE", "UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", + "USER", "USE_FRM", "USER_RESOURCES", "VALIDATION", "VALUE", + "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", "WARNINGS", + "WINDOW", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", + "XML", "YES", "EUR", "USA", "JIS", "ISO", "INTERNAL", + "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", + "MICROSECOND", "ADMIN", "APPLICATION_PASSWORD_ADMIN", + "AUDIT_ABORT_EXEMPT", "AUDIT_ADMIN", "AUTHENTICATION_POLICY_ADMIN", + "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", + "CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", + "EXECUTE", "FILE", "FIREWALL_ADMIN", "FIREWALL_EXEMPT", + "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", "FLUSH_STATUS", + "FLUSH_TABLES", "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", + "INNODB_REDO_LOG_ARCHIVE", "INNODB_REDO_LOG_ENABLE", "INVOKE", + "LAMBDA", "NDB_STORED_USER", "PASSWORDLESS_USER_ADMIN", + "PERSIST_RO_VARIABLES_ADMIN", "PRIVILEGES", "PROCESS", + "RELOAD", "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", + "RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", "ROLE_ADMIN", + "ROUTINE", "S3", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SHUTDOWN", "SUPER", "SYSTEM_VARIABLES_ADMIN", + "TABLES", "TABLE_ENCRYPTION_ADMIN", "VERSION_TOKEN_ADMIN", + "XA_RECOVER_ADMIN", "ARMSCII8", "ASCII", "BIG5", "CP1250", + "CP1251", "CP1256", "CP1257", "CP850", "CP852", "CP866", + "CP932", "DEC8", "EUCJPMS", "EUCKR", "GB18030", "GB2312", + "GBK", "GEOSTD8", "GREEK", "HEBREW", "HP8", "KEYBCS2", + "KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", + "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620", "UCS2", + "UJIS", "UTF16", "UTF16LE", "UTF32", "UTF8", "UTF8MB3", + "UTF8MB4", "ARCHIVE", "BLACKHOLE", "CSV", "FEDERATED", + "INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", "NDBCLUSTER", + "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE", "COMMITTED", + "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", "GEOMCOLLECTION", + "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", + "MULTIPOLYGON", "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", + "ADDTIME", "AES_DECRYPT", "AES_ENCRYPT", "AREA", "ASBINARY", + "ASIN", "ASTEXT", "ASWKB", "ASWKT", "ASYMMETRIC_DECRYPT", + "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", + "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", + "BIT_COUNT", "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", + "CEILING", "CENTROID", "CHARACTER_LENGTH", "CHARSET", + "CHAR_LENGTH", "COERCIBILITY", "COLLATION", "COMPRESS", + "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ", + "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", + "CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", + "DATE_FORMAT", "DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", + "DECODE", "DEGREES", "DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", + "DISJOINT", "ELT", "ENCODE", "ENCRYPT", "ENDPOINT", "ENGINE_ATTRIBUTE", + "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING", + "EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", + "FOUND_ROWS", "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", + "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", "GEOMETRYCOLLECTIONFROMTEXT", + "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", "GEOMETRYFROMWKB", + "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", + "GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", + "GTID_SUBTRACT", "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", + "INET_ATON", "INET_NTOA", "INSTR", "INTERIORRINGN", "INTERSECTS", + "ISCLOSED", "ISEMPTY", "ISNULL", "ISSIMPLE", "IS_FREE_LOCK", + "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", "IS_IPV6", + "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", + "LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", + "LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", + "LPAD", "LTRIM", "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", + "MBRCONTAINS", "MBRDISJOINT", "MBREQUAL", "MBRINTERSECTS", + "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", "MD5", "MLINEFROMTEXT", + "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", "MPOINTFROMWKB", + "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", + "MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", + "MULTIPOLYGONFROMTEXT", "MULTIPOLYGONFROMWKB", "NAME_CONST", + "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", "NUMPOINTS", + "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", + "PERIOD_DIFF", "PI", "POINTFROMTEXT", "POINTFROMWKB", + "POINTN", "POLYFROMTEXT", "POLYFROMWKB", "POLYGONFROMTEXT", + "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", + "RAND", "RANDOM", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", + "ROUND", "ROW_COUNT", "RPAD", "RTRIM", "SEC_TO_TIME", + "SECONDARY_ENGINE_ATTRIBUTE", "SESSION_USER", "SHA", "SHA1", + "SHA2", "SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", + "SQL_THREAD_WAIT_AFTER_GTIDS", "SQRT", "SRID", "STARTPOINT", + "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", "ST_ASTEXT", + "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", + "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", + "ST_DISTANCE", "ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", + "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", "ST_GEOMCOLLFROMTXT", + "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", + "ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", + "ST_GEOMETRYFROMWKB", "ST_GEOMETRYN", "ST_GEOMETRYTYPE", + "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", "ST_INTERIORRINGN", + "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", "ST_ISEMPTY", + "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", + "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", + "ST_NUMINTERIORRINGS", "ST_NUMPOINTS", "ST_OVERLAPS", + "ST_POINTFROMTEXT", "ST_POINTFROMWKB", "ST_POINTN", "ST_POLYFROMTEXT", + "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", + "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", + "ST_UNION", "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", + "SUBTIME", "SYSTEM_USER", "TAN", "TIMEDIFF", "TIMESTAMPADD", + "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC", "TOUCHES", + "TO_BASE64", "TO_DAYS", "TO_SECONDS", "TP_CONNECTION_ADMIN", + "UCASE", "UNCOMPRESS", "UNCOMPRESSED_LENGTH", "UNHEX", + "UNIX_TIMESTAMP", "UPDATEXML", "UPPER", "UUID", "UUID_SHORT", + "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", + "Y_FUNCTION", "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", + "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", "DIVIDE", + "MODULE", "PLUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", + "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", + "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", "BIT_XOR_OP", + "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", "AT_SIGN", + "ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", + "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", "COLON_SYMB", + "QUOTE_SYMB", "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL", + "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL", + "HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", + "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", "REVERSE_QUOTE_ID", + "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", + "CHARSET_NAME", "EXPONENT_NUM_PART", "ID_LITERAL", "DQUOTA_STRING", + "SQUOTA_STRING", "BQUOTA_STRING", "HEX_DIGIT", "DEC_DIGIT", + "BIT_STRING_L", "ERROR_RECONGNIGION" ] + + grammarFileName = "MySqlLexer.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.0") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/pymysqlreplication/ddl_parser/MySqlParser.g4 b/pymysqlreplication/ddl_parser/MySqlParser.g4 new file mode 100644 index 00000000..d6e32f71 --- /dev/null +++ b/pymysqlreplication/ddl_parser/MySqlParser.g4 @@ -0,0 +1,2852 @@ +/* +MySQL (Positive Technologies) grammar +The MIT License (MIT). +Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +parser grammar MySqlParser; + +options { tokenVocab=MySqlLexer; } + + +// Top Level Description + +root + : sqlStatements? (MINUS MINUS)? EOF + ; + +sqlStatements + : (sqlStatement (MINUS MINUS)? SEMI? | emptyStatement_)* + (sqlStatement ((MINUS MINUS)? SEMI)? | emptyStatement_) + ; + +sqlStatement + : ddlStatement | dmlStatement | transactionStatement + | replicationStatement | preparedStatement + | administrationStatement | utilityStatement + ; + +emptyStatement_ + : SEMI + ; + +ddlStatement + : createDatabase | createEvent | createIndex + | createLogfileGroup | createProcedure | createFunction + | createServer | createTable | createTablespaceInnodb + | createTablespaceNdb | createTrigger | createView | createRole + | alterDatabase | alterEvent | alterFunction + | alterInstance | alterLogfileGroup | alterProcedure + | alterServer | alterTable | alterTablespace | alterView + | dropDatabase | dropEvent | dropIndex + | dropLogfileGroup | dropProcedure | dropFunction + | dropServer | dropTable | dropTablespace + | dropTrigger | dropView | dropRole | setRole + | renameTable | truncateTable + ; + +dmlStatement + : selectStatement | insertStatement | updateStatement + | deleteStatement | replaceStatement | callStatement + | loadDataStatement | loadXmlStatement | doStatement + | handlerStatement | valuesStatement | withStatement + | tableStatement + ; + +transactionStatement + : startTransaction + | beginWork | commitWork | rollbackWork + | savepointStatement | rollbackStatement + | releaseStatement | lockTables | unlockTables + ; + +replicationStatement + : changeMaster | changeReplicationFilter | purgeBinaryLogs + | resetMaster | resetSlave | startSlave | stopSlave + | startGroupReplication | stopGroupReplication + | xaStartTransaction | xaEndTransaction | xaPrepareStatement + | xaCommitWork | xaRollbackWork | xaRecoverWork + ; + +preparedStatement + : prepareStatement | executeStatement | deallocatePrepare + ; + +// remark: NOT INCLUDED IN sqlStatement, but include in body +// of routine's statements +compoundStatement + : blockStatement + | caseStatement | ifStatement | leaveStatement + | loopStatement | repeatStatement | whileStatement + | iterateStatement | returnStatement | cursorStatement + ; + +administrationStatement + : alterUser | createUser | dropUser | grantStatement + | grantProxy | renameUser | revokeStatement + | revokeProxy | analyzeTable | checkTable + | checksumTable | optimizeTable | repairTable + | createUdfunction | installPlugin | uninstallPlugin + | setStatement | showStatement | binlogStatement + | cacheIndexStatement | flushStatement | killStatement + | loadIndexIntoCache | resetStatement + | shutdownStatement + ; + +utilityStatement + : simpleDescribeStatement | fullDescribeStatement + | helpStatement | useStatement | signalStatement + | resignalStatement | diagnosticsStatement + ; + + +// Data Definition Language + +// Create statements + +createDatabase + : CREATE dbFormat=(DATABASE | SCHEMA) + ifNotExists? uid createDatabaseOption* + ; + +createEvent + : CREATE ownerStatement? EVENT ifNotExists? fullId + ON SCHEDULE scheduleExpression + (ON COMPLETION NOT? PRESERVE)? enableType? + (COMMENT STRING_LITERAL)? + DO routineBody + ; + +createIndex + : CREATE + intimeAction=(ONLINE | OFFLINE)? + indexCategory=(UNIQUE | FULLTEXT | SPATIAL)? INDEX + uid indexType? + ON tableName indexColumnNames + indexOption* + ( + ALGORITHM EQUAL_SYMBOL? algType=(DEFAULT | INPLACE | COPY) + | LOCK EQUAL_SYMBOL? lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) + )* + ; + +createLogfileGroup + : CREATE LOGFILE GROUP uid + ADD UNDOFILE undoFile=STRING_LITERAL + (INITIAL_SIZE '='? initSize=fileSizeLiteral)? + (UNDO_BUFFER_SIZE '='? undoSize=fileSizeLiteral)? + (REDO_BUFFER_SIZE '='? redoSize=fileSizeLiteral)? + (NODEGROUP '='? uid)? + WAIT? + (COMMENT '='? comment=STRING_LITERAL)? + ENGINE '='? engineName + ; + +createProcedure + : CREATE ownerStatement? + PROCEDURE fullId + '(' procedureParameter? (',' procedureParameter)* ')' + routineOption* + routineBody + ; + +createFunction + : CREATE ownerStatement? AGGREGATE? + FUNCTION ifNotExists? fullId + '(' functionParameter? (',' functionParameter)* ')' + RETURNS dataType + routineOption* + (routineBody | returnStatement) + ; + +createRole + : CREATE ROLE ifNotExists? roleName (',' roleName)* + ; + +createServer + : CREATE SERVER uid + FOREIGN DATA WRAPPER wrapperName=(MYSQL | STRING_LITERAL) + OPTIONS '(' serverOption (',' serverOption)* ')' + ; + +createTable + : CREATE TEMPORARY? TABLE ifNotExists? + tableName + ( + LIKE tableName + | '(' LIKE parenthesisTable=tableName ')' + ) #copyCreateTable + | CREATE TEMPORARY? TABLE ifNotExists? + tableName createDefinitions? + ( tableOption (','? tableOption)* )? + partitionDefinitions? keyViolate=(IGNORE | REPLACE)? + AS? selectStatement #queryCreateTable + | CREATE TEMPORARY? TABLE ifNotExists? + tableName createDefinitions + ( tableOption (','? tableOption)* )? + partitionDefinitions? #columnCreateTable + ; + +createTablespaceInnodb + : CREATE TABLESPACE uid + ADD DATAFILE datafile=STRING_LITERAL + (FILE_BLOCK_SIZE '=' fileBlockSize=fileSizeLiteral)? + (ENGINE '='? engineName)? + ; + +createTablespaceNdb + : CREATE TABLESPACE uid + ADD DATAFILE datafile=STRING_LITERAL + USE LOGFILE GROUP uid + (EXTENT_SIZE '='? extentSize=fileSizeLiteral)? + (INITIAL_SIZE '='? initialSize=fileSizeLiteral)? + (AUTOEXTEND_SIZE '='? autoextendSize=fileSizeLiteral)? + (MAX_SIZE '='? maxSize=fileSizeLiteral)? + (NODEGROUP '='? uid)? + WAIT? + (COMMENT '='? comment=STRING_LITERAL)? + ENGINE '='? engineName + ; + +createTrigger + : CREATE ownerStatement? + TRIGGER thisTrigger=fullId + triggerTime=(BEFORE | AFTER) + triggerEvent=(INSERT | UPDATE | DELETE) + ON tableName FOR EACH ROW + (triggerPlace=(FOLLOWS | PRECEDES) otherTrigger=fullId)? + routineBody + ; + +withClause + : WITH RECURSIVE? commonTableExpressions + ; + +commonTableExpressions + : cteName ('(' cteColumnName (',' cteColumnName)* ')')? AS '(' dmlStatement ')' + (',' commonTableExpressions)? + ; + +cteName + : uid + ; + +cteColumnName + : uid + ; + +createView + : CREATE orReplace? + ( + ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE) + )? + ownerStatement? + (SQL SECURITY secContext=(DEFINER | INVOKER))? + VIEW fullId ('(' uidList ')')? AS + ( + '(' withClause? selectStatement ')' + | + withClause? selectStatement (WITH checkOption=(CASCADED | LOCAL)? CHECK OPTION)? + ) + ; + + +// details + +createDatabaseOption + : DEFAULT? charSet '='? (charsetName | DEFAULT) + | DEFAULT? COLLATE '='? collationName + | DEFAULT? ENCRYPTION '='? STRING_LITERAL + | READ ONLY '='? (DEFAULT | ZERO_DECIMAL | ONE_DECIMAL) + ; + +charSet + : CHARACTER SET + | CHARSET + | CHAR SET + ; + +ownerStatement + : DEFINER '=' (userName | CURRENT_USER ( '(' ')')?) + ; + +scheduleExpression + : AT timestampValue intervalExpr* #preciseSchedule + | EVERY (decimalLiteral | expression) intervalType + ( + STARTS startTimestamp=timestampValue + (startIntervals+=intervalExpr)* + )? + ( + ENDS endTimestamp=timestampValue + (endIntervals+=intervalExpr)* + )? #intervalSchedule + ; + +timestampValue + : CURRENT_TIMESTAMP + | stringLiteral + | decimalLiteral + | expression + ; + +intervalExpr + : '+' INTERVAL (decimalLiteral | expression) intervalType + ; + +intervalType + : intervalTypeBase + | YEAR | YEAR_MONTH | DAY_HOUR | DAY_MINUTE + | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND + | SECOND_MICROSECOND | MINUTE_MICROSECOND + | HOUR_MICROSECOND | DAY_MICROSECOND + ; + +enableType + : ENABLE | DISABLE | DISABLE ON SLAVE + ; + +indexType + : USING (BTREE | HASH) + ; + +indexOption + : KEY_BLOCK_SIZE EQUAL_SYMBOL? fileSizeLiteral + | indexType + | WITH PARSER uid + | COMMENT STRING_LITERAL + | (VISIBLE | INVISIBLE) + | ENGINE_ATTRIBUTE EQUAL_SYMBOL? STRING_LITERAL + | SECONDARY_ENGINE_ATTRIBUTE EQUAL_SYMBOL? STRING_LITERAL + ; + +procedureParameter + : direction=(IN | OUT | INOUT)? uid dataType + ; + +functionParameter + : uid dataType + ; + +routineOption + : COMMENT STRING_LITERAL #routineComment + | LANGUAGE SQL #routineLanguage + | NOT? DETERMINISTIC #routineBehavior + | ( + CONTAINS SQL | NO SQL | READS SQL DATA + | MODIFIES SQL DATA + ) #routineData + | SQL SECURITY context=(DEFINER | INVOKER) #routineSecurity + ; + +serverOption + : HOST STRING_LITERAL + | DATABASE STRING_LITERAL + | USER STRING_LITERAL + | PASSWORD STRING_LITERAL + | SOCKET STRING_LITERAL + | OWNER STRING_LITERAL + | PORT decimalLiteral + ; + +createDefinitions + : '(' createDefinition (',' createDefinition)* ')' + ; + +createDefinition + : fullColumnName columnDefinition #columnDeclaration + | tableConstraint NOT? ENFORCED? #constraintDeclaration + | indexColumnDefinition #indexDeclaration + ; + +columnDefinition + : dataType columnConstraint* NOT? ENFORCED? + ; + +columnConstraint + : nullNotnull #nullColumnConstraint + | DEFAULT defaultValue #defaultColumnConstraint + | VISIBLE #visibilityColumnConstraint + | INVISIBLE #invisibilityColumnConstraint + | (AUTO_INCREMENT | ON UPDATE currentTimestamp) #autoIncrementColumnConstraint + | PRIMARY? KEY #primaryKeyColumnConstraint + | UNIQUE KEY? #uniqueKeyColumnConstraint + | COMMENT STRING_LITERAL #commentColumnConstraint + | COLUMN_FORMAT colformat=(FIXED | DYNAMIC | DEFAULT) #formatColumnConstraint + | STORAGE storageval=(DISK | MEMORY | DEFAULT) #storageColumnConstraint + | referenceDefinition #referenceColumnConstraint + | COLLATE collationName #collateColumnConstraint + | (GENERATED ALWAYS)? AS '(' expression ')' (VIRTUAL | STORED)? #generatedColumnConstraint + | SERIAL DEFAULT VALUE #serialDefaultColumnConstraint + | (CONSTRAINT name=uid?)? + CHECK '(' expression ')' #checkColumnConstraint + ; + +tableConstraint + : (CONSTRAINT name=uid?)? + PRIMARY KEY index=uid? indexType? + indexColumnNames indexOption* #primaryKeyTableConstraint + | (CONSTRAINT name=uid?)? + UNIQUE indexFormat=(INDEX | KEY)? index=uid? + indexType? indexColumnNames indexOption* #uniqueKeyTableConstraint + | (CONSTRAINT name=uid?)? + FOREIGN KEY index=uid? indexColumnNames + referenceDefinition #foreignKeyTableConstraint + | (CONSTRAINT name=uid?)? + CHECK '(' expression ')' #checkTableConstraint + ; + +referenceDefinition + : REFERENCES tableName indexColumnNames? + (MATCH matchType=(FULL | PARTIAL | SIMPLE))? + referenceAction? + ; + +referenceAction + : ON DELETE onDelete=referenceControlType + ( + ON UPDATE onUpdate=referenceControlType + )? + | ON UPDATE onUpdate=referenceControlType + ( + ON DELETE onDelete=referenceControlType + )? + ; + +referenceControlType + : RESTRICT | CASCADE | SET NULL_LITERAL | NO ACTION | SET DEFAULT + ; + +indexColumnDefinition + : indexFormat=(INDEX | KEY) uid? indexType? + indexColumnNames indexOption* #simpleIndexDeclaration + | (FULLTEXT | SPATIAL) + indexFormat=(INDEX | KEY)? uid? + indexColumnNames indexOption* #specialIndexDeclaration + ; + +tableOption + : ENGINE '='? engineName? #tableOptionEngine + | ENGINE_ATTRIBUTE '='? STRING_LITERAL #tableOptionEngineAttribute + | AUTOEXTEND_SIZE '='? decimalLiteral #tableOptionAutoextendSize + | AUTO_INCREMENT '='? decimalLiteral #tableOptionAutoIncrement + | AVG_ROW_LENGTH '='? decimalLiteral #tableOptionAverage + | DEFAULT? charSet '='? (charsetName|DEFAULT) #tableOptionCharset + | (CHECKSUM | PAGE_CHECKSUM) '='? boolValue=('0' | '1') #tableOptionChecksum + | DEFAULT? COLLATE '='? collationName #tableOptionCollate + | COMMENT '='? STRING_LITERAL #tableOptionComment + | COMPRESSION '='? (STRING_LITERAL | ID) #tableOptionCompression + | CONNECTION '='? STRING_LITERAL #tableOptionConnection + | (DATA | INDEX) DIRECTORY '='? STRING_LITERAL #tableOptionDataDirectory + | DELAY_KEY_WRITE '='? boolValue=('0' | '1') #tableOptionDelay + | ENCRYPTION '='? STRING_LITERAL #tableOptionEncryption + | (PAGE_COMPRESSED | STRING_LITERAL) '='? ('0' | '1') #tableOptionPageCompressed + | (PAGE_COMPRESSION_LEVEL | STRING_LITERAL) '='? decimalLiteral #tableOptionPageCompressionLevel + | ENCRYPTION_KEY_ID '='? decimalLiteral #tableOptionEncryptionKeyId + | INDEX DIRECTORY '='? STRING_LITERAL #tableOptionIndexDirectory + | INSERT_METHOD '='? insertMethod=(NO | FIRST | LAST) #tableOptionInsertMethod + | KEY_BLOCK_SIZE '='? fileSizeLiteral #tableOptionKeyBlockSize + | MAX_ROWS '='? decimalLiteral #tableOptionMaxRows + | MIN_ROWS '='? decimalLiteral #tableOptionMinRows + | PACK_KEYS '='? extBoolValue=('0' | '1' | DEFAULT) #tableOptionPackKeys + | PASSWORD '='? STRING_LITERAL #tableOptionPassword + | ROW_FORMAT '='? + rowFormat=( + DEFAULT | DYNAMIC | FIXED | COMPRESSED + | REDUNDANT | COMPACT | ID + ) #tableOptionRowFormat + | START TRANSACTION #tableOptionStartTransaction + | SECONDARY_ENGINE_ATTRIBUTE '='? STRING_LITERAL #tableOptionSecondaryEngineAttribute + | STATS_AUTO_RECALC '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionRecalculation + | STATS_PERSISTENT '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionPersistent + | STATS_SAMPLE_PAGES '='? (DEFAULT | decimalLiteral) #tableOptionSamplePage + | TABLESPACE uid tablespaceStorage? #tableOptionTablespace + | TABLE_TYPE '=' tableType #tableOptionTableType + | tablespaceStorage #tableOptionTablespace + | TRANSACTIONAL '='? ('0' | '1') #tableOptionTransactional + | UNION '='? '(' tables ')' #tableOptionUnion + ; + +tableType + : MYSQL | ODBC + ; + +tablespaceStorage + : STORAGE (DISK | MEMORY | DEFAULT) + ; + +partitionDefinitions + : PARTITION BY partitionFunctionDefinition + (PARTITIONS count=decimalLiteral)? + ( + SUBPARTITION BY subpartitionFunctionDefinition + (SUBPARTITIONS subCount=decimalLiteral)? + )? + ('(' partitionDefinition (',' partitionDefinition)* ')')? + ; + +partitionFunctionDefinition + : LINEAR? HASH '(' expression ')' #partitionFunctionHash + | LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))? + '(' uidList? ')' #partitionFunctionKey // Optional uidList for MySQL only + | RANGE ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionRange + | LIST ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionList + ; + +subpartitionFunctionDefinition + : LINEAR? HASH '(' expression ')' #subPartitionFunctionHash + | LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))? + '(' uidList ')' #subPartitionFunctionKey + ; + +partitionDefinition + : PARTITION uid VALUES LESS THAN + '(' + partitionDefinerAtom (',' partitionDefinerAtom)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionComparison + | PARTITION uid VALUES LESS THAN + partitionDefinerAtom partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionComparison + | PARTITION uid VALUES IN + '(' + partitionDefinerAtom (',' partitionDefinerAtom)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionListAtom + | PARTITION uid VALUES IN + '(' + partitionDefinerVector (',' partitionDefinerVector)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionListVector + | PARTITION uid partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionSimple + ; + +partitionDefinerAtom + : constant | expression | MAXVALUE + ; + +partitionDefinerVector + : '(' partitionDefinerAtom (',' partitionDefinerAtom)+ ')' + ; + +subpartitionDefinition + : SUBPARTITION uid partitionOption* + ; + +partitionOption + : DEFAULT? STORAGE? ENGINE '='? engineName #partitionOptionEngine + | COMMENT '='? comment=STRING_LITERAL #partitionOptionComment + | DATA DIRECTORY '='? dataDirectory=STRING_LITERAL #partitionOptionDataDirectory + | INDEX DIRECTORY '='? indexDirectory=STRING_LITERAL #partitionOptionIndexDirectory + | MAX_ROWS '='? maxRows=decimalLiteral #partitionOptionMaxRows + | MIN_ROWS '='? minRows=decimalLiteral #partitionOptionMinRows + | TABLESPACE '='? tablespace=uid #partitionOptionTablespace + | NODEGROUP '='? nodegroup=uid #partitionOptionNodeGroup + ; + +// Alter statements + +alterDatabase + : ALTER dbFormat=(DATABASE | SCHEMA) uid? + createDatabaseOption+ #alterSimpleDatabase + | ALTER dbFormat=(DATABASE | SCHEMA) uid + UPGRADE DATA DIRECTORY NAME #alterUpgradeName + ; + +alterEvent + : ALTER ownerStatement? + EVENT fullId + (ON SCHEDULE scheduleExpression)? + (ON COMPLETION NOT? PRESERVE)? + (RENAME TO fullId)? enableType? + (COMMENT STRING_LITERAL)? + (DO routineBody)? + ; + +alterFunction + : ALTER FUNCTION fullId routineOption* + ; + +alterInstance + : ALTER INSTANCE ROTATE INNODB MASTER KEY + ; + +alterLogfileGroup + : ALTER LOGFILE GROUP uid + ADD UNDOFILE STRING_LITERAL + (INITIAL_SIZE '='? fileSizeLiteral)? + WAIT? ENGINE '='? engineName + ; + +alterProcedure + : ALTER PROCEDURE fullId routineOption* + ; + +alterServer + : ALTER SERVER uid OPTIONS + '(' serverOption (',' serverOption)* ')' + ; + +alterTable + : ALTER intimeAction=(ONLINE | OFFLINE)? + IGNORE? TABLE tableName waitNowaitClause? + (alterSpecification (',' alterSpecification)*)? + partitionDefinitions? + ; + +alterTablespace + : ALTER TABLESPACE uid + objectAction=(ADD | DROP) DATAFILE STRING_LITERAL + (INITIAL_SIZE '=' fileSizeLiteral)? + WAIT? + ENGINE '='? engineName + ; + +alterView + : ALTER + ( + ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE) + )? + ownerStatement? + (SQL SECURITY secContext=(DEFINER | INVOKER))? + VIEW fullId ('(' uidList ')')? AS selectStatement + (WITH checkOpt=(CASCADED | LOCAL)? CHECK OPTION)? + ; + +// details + +alterSpecification + : tableOption (','? tableOption)* #alterByTableOption + | ADD COLUMN? uid columnDefinition (FIRST | AFTER uid)? #alterByAddColumn + | ADD COLUMN? + '(' + uid columnDefinition ( ',' uid columnDefinition)* + ')' #alterByAddColumns + | ADD indexFormat=(INDEX | KEY) uid? indexType? + indexColumnNames indexOption* #alterByAddIndex + | ADD (CONSTRAINT name=uid?)? PRIMARY KEY index=uid? + indexType? indexColumnNames indexOption* #alterByAddPrimaryKey + | ADD (CONSTRAINT name=uid?)? UNIQUE + indexFormat=(INDEX | KEY)? indexName=uid? + indexType? indexColumnNames indexOption* #alterByAddUniqueKey + | ADD keyType=(FULLTEXT | SPATIAL) + indexFormat=(INDEX | KEY)? uid? + indexColumnNames indexOption* #alterByAddSpecialIndex + | ADD (CONSTRAINT name=uid?)? FOREIGN KEY + indexName=uid? indexColumnNames referenceDefinition #alterByAddForeignKey + | ADD (CONSTRAINT name=uid?)? CHECK ( uid | stringLiteral | '(' expression ')' ) + NOT? ENFORCED? #alterByAddCheckTableConstraint + | ALTER (CONSTRAINT name=uid?)? CHECK ( uid | stringLiteral | '(' expression ')' ) + NOT? ENFORCED? #alterByAlterCheckTableConstraint + | ADD (CONSTRAINT name=uid?)? CHECK '(' expression ')' #alterByAddCheckTableConstraint + | ALGORITHM '='? algType=(DEFAULT | INSTANT | INPLACE | COPY) #alterBySetAlgorithm + | ALTER COLUMN? uid + (SET DEFAULT defaultValue | DROP DEFAULT) #alterByChangeDefault + | CHANGE COLUMN? oldColumn=uid + newColumn=uid columnDefinition + (FIRST | AFTER afterColumn=uid)? #alterByChangeColumn + | RENAME COLUMN oldColumn=uid TO newColumn=uid #alterByRenameColumn + | LOCK '='? lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) #alterByLock + | MODIFY COLUMN? + uid columnDefinition (FIRST | AFTER uid)? #alterByModifyColumn + | DROP COLUMN? uid RESTRICT? #alterByDropColumn + | DROP (CONSTRAINT | CHECK) uid #alterByDropConstraintCheck + | DROP PRIMARY KEY #alterByDropPrimaryKey + | DROP indexFormat=(INDEX | KEY) uid #alterByDropIndex + | RENAME indexFormat=(INDEX | KEY) uid TO uid #alterByRenameIndex + | ALTER COLUMN? uid ( + SET DEFAULT ( stringLiteral | '(' expression ')' ) + | SET (VISIBLE | INVISIBLE) + | DROP DEFAULT) #alterByAlterColumnDefault + | ALTER INDEX uid (VISIBLE | INVISIBLE) #alterByAlterIndexVisibility + | DROP FOREIGN KEY uid #alterByDropForeignKey + | DISABLE KEYS #alterByDisableKeys + | ENABLE KEYS #alterByEnableKeys + | RENAME renameFormat=(TO | AS)? (uid | fullId) #alterByRename + | ORDER BY uidList #alterByOrder + | CONVERT TO (CHARSET | CHARACTER SET) charsetName + (COLLATE collationName)? #alterByConvertCharset + | DEFAULT? CHARACTER SET '=' charsetName + (COLLATE '=' collationName)? #alterByDefaultCharset + | DISCARD TABLESPACE #alterByDiscardTablespace + | IMPORT TABLESPACE #alterByImportTablespace + | FORCE #alterByForce + | validationFormat=(WITHOUT | WITH) VALIDATION #alterByValidate + | ADD COLUMN? + '(' createDefinition (',' createDefinition)* ')' #alterByAddDefinitions + | alterPartitionSpecification #alterPartition + ; + +alterPartitionSpecification + : ADD PARTITION + '(' partitionDefinition (',' partitionDefinition)* ')' #alterByAddPartition + | DROP PARTITION uidList #alterByDropPartition + | DISCARD PARTITION (uidList | ALL) TABLESPACE #alterByDiscardPartition + | IMPORT PARTITION (uidList | ALL) TABLESPACE #alterByImportPartition + | TRUNCATE PARTITION (uidList | ALL) #alterByTruncatePartition + | COALESCE PARTITION decimalLiteral #alterByCoalescePartition + | REORGANIZE PARTITION uidList + INTO '(' partitionDefinition (',' partitionDefinition)* ')' #alterByReorganizePartition + | EXCHANGE PARTITION uid WITH TABLE tableName + (validationFormat=(WITH | WITHOUT) VALIDATION)? #alterByExchangePartition + | ANALYZE PARTITION (uidList | ALL) #alterByAnalyzePartition + | CHECK PARTITION (uidList | ALL) #alterByCheckPartition + | OPTIMIZE PARTITION (uidList | ALL) #alterByOptimizePartition + | REBUILD PARTITION (uidList | ALL) #alterByRebuildPartition + | REPAIR PARTITION (uidList | ALL) #alterByRepairPartition + | REMOVE PARTITIONING #alterByRemovePartitioning + | UPGRADE PARTITIONING #alterByUpgradePartitioning + ; + +// Drop statements + +dropDatabase + : DROP dbFormat=(DATABASE | SCHEMA) ifExists? uid + ; + +dropEvent + : DROP EVENT ifExists? fullId + ; + +dropIndex + : DROP INDEX intimeAction=(ONLINE | OFFLINE)? + uid ON tableName + ( + ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY) + | LOCK '='? + lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) + )* + ; + +dropLogfileGroup + : DROP LOGFILE GROUP uid ENGINE '=' engineName + ; + +dropProcedure + : DROP PROCEDURE ifExists? fullId + ; + +dropFunction + : DROP FUNCTION ifExists? fullId + ; + +dropServer + : DROP SERVER ifExists? uid + ; + +dropTable + : DROP TEMPORARY? TABLE ifExists? + tables dropType=(RESTRICT | CASCADE)? + ; + +dropTablespace + : DROP TABLESPACE uid (ENGINE '='? engineName)? + ; + +dropTrigger + : DROP TRIGGER ifExists? fullId + ; + +dropView + : DROP VIEW ifExists? + fullId (',' fullId)* dropType=(RESTRICT | CASCADE)? + ; + +dropRole + : DROP ROLE ifExists? roleName (',' roleName)* + ; + +setRole + : SET DEFAULT ROLE (NONE | ALL | roleName (',' roleName)*) + TO (userName | uid) (',' (userName | uid))* + | SET ROLE roleOption + ; + +// Other DDL statements + +renameTable + : RENAME TABLE + renameTableClause (',' renameTableClause)* + ; + +renameTableClause + : tableName TO tableName + ; + +truncateTable + : TRUNCATE TABLE? tableName + ; + + +// Data Manipulation Language + +// Primary DML Statements + + +callStatement + : CALL fullId + ( + '(' (constants | expressions)? ')' + )? + ; + +deleteStatement + : singleDeleteStatement | multipleDeleteStatement + ; + +doStatement + : DO expressions + ; + +handlerStatement + : handlerOpenStatement + | handlerReadIndexStatement + | handlerReadStatement + | handlerCloseStatement + ; + +insertStatement + : INSERT + priority=(LOW_PRIORITY | DELAYED | HIGH_PRIORITY)? + IGNORE? INTO? tableName + (PARTITION '(' partitions=uidList? ')' )? + ( + ('(' columns=fullColumnNameList ')')? insertStatementValue (AS? uid)? + | SET + setFirst=updatedElement + (',' setElements+=updatedElement)* + ) + ( + ON DUPLICATE KEY UPDATE + duplicatedFirst=updatedElement + (',' duplicatedElements+=updatedElement)* + )? + ; + +loadDataStatement + : LOAD DATA + priority=(LOW_PRIORITY | CONCURRENT)? + LOCAL? INFILE filename=STRING_LITERAL + violation=(REPLACE | IGNORE)? + INTO TABLE tableName + (PARTITION '(' uidList ')' )? + (CHARACTER SET charset=charsetName)? + ( + fieldsFormat=(FIELDS | COLUMNS) + selectFieldsInto+ + )? + ( + LINES + selectLinesInto+ + )? + ( + IGNORE decimalLiteral linesFormat=(LINES | ROWS) + )? + ( '(' assignmentField (',' assignmentField)* ')' )? + (SET updatedElement (',' updatedElement)*)? + ; + +loadXmlStatement + : LOAD XML + priority=(LOW_PRIORITY | CONCURRENT)? + LOCAL? INFILE filename=STRING_LITERAL + violation=(REPLACE | IGNORE)? + INTO TABLE tableName + (CHARACTER SET charset=charsetName)? + (ROWS IDENTIFIED BY '<' tag=STRING_LITERAL '>')? + ( IGNORE decimalLiteral linesFormat=(LINES | ROWS) )? + ( '(' assignmentField (',' assignmentField)* ')' )? + (SET updatedElement (',' updatedElement)*)? + ; + +replaceStatement + : REPLACE priority=(LOW_PRIORITY | DELAYED)? + INTO? tableName + (PARTITION '(' partitions=uidList ')' )? + ( + ('(' columns=uidList ')')? insertStatementValue + | SET + setFirst=updatedElement + (',' setElements+=updatedElement)* + ) + ; + +selectStatement + : querySpecification lockClause? #simpleSelect + | queryExpression lockClause? #parenthesisSelect + | querySpecificationNointo unionStatement+ + ( + UNION unionType=(ALL | DISTINCT)? + (querySpecification | queryExpression) + )? + orderByClause? limitClause? lockClause? #unionSelect + | queryExpressionNointo unionParenthesis+ + ( + UNION unionType=(ALL | DISTINCT)? + queryExpression + )? + orderByClause? limitClause? lockClause? #unionParenthesisSelect + | querySpecificationNointo (',' lateralStatement)+ #withLateralStatement + ; + +updateStatement + : singleUpdateStatement | multipleUpdateStatement + ; + +// https://dev.mysql.com/doc/refman/8.0/en/values.html +valuesStatement + : VALUES + '(' expressionsWithDefaults? ')' + (',' '(' expressionsWithDefaults? ')')* + ; + +// details + +insertStatementValue + : selectStatement + | insertFormat=(VALUES | VALUE) + '(' expressionsWithDefaults? ')' + (',' '(' expressionsWithDefaults? ')')* + ; + +updatedElement + : fullColumnName '=' (expression | DEFAULT) + ; + +assignmentField + : uid | LOCAL_ID + ; + +lockClause + : FOR UPDATE | LOCK IN SHARE MODE + ; + +// Detailed DML Statements + +singleDeleteStatement + : DELETE priority=LOW_PRIORITY? QUICK? IGNORE? + FROM tableName (AS? uid)? + (PARTITION '(' uidList ')' )? + (WHERE expression)? + orderByClause? (LIMIT limitClauseAtom)? + ; + +multipleDeleteStatement + : DELETE priority=LOW_PRIORITY? QUICK? IGNORE? + ( + tableName ('.' '*')? ( ',' tableName ('.' '*')? )* + FROM tableSources + | FROM + tableName ('.' '*')? ( ',' tableName ('.' '*')? )* + USING tableSources + ) + (WHERE expression)? + ; + +handlerOpenStatement + : HANDLER tableName OPEN (AS? uid)? + ; + +handlerReadIndexStatement + : HANDLER tableName READ index=uid + ( + comparisonOperator '(' constants ')' + | moveOrder=(FIRST | NEXT | PREV | LAST) + ) + (WHERE expression)? (LIMIT limitClauseAtom)? + ; + +handlerReadStatement + : HANDLER tableName READ moveOrder=(FIRST | NEXT) + (WHERE expression)? (LIMIT limitClauseAtom)? + ; + +handlerCloseStatement + : HANDLER tableName CLOSE + ; + +singleUpdateStatement + : UPDATE priority=LOW_PRIORITY? IGNORE? tableName (AS? uid)? + SET updatedElement (',' updatedElement)* + (WHERE expression)? orderByClause? limitClause? + ; + +multipleUpdateStatement + : UPDATE priority=LOW_PRIORITY? IGNORE? tableSources + SET updatedElement (',' updatedElement)* + (WHERE expression)? + ; + +// details + +orderByClause + : ORDER BY orderByExpression (',' orderByExpression)* + ; + +orderByExpression + : expression order=(ASC | DESC)? + ; + +tableSources + : tableSource (',' tableSource)* + ; + +tableSource + : tableSourceItem joinPart* #tableSourceBase + | '(' tableSourceItem joinPart* ')' #tableSourceNested + | jsonTable #tableJson + ; + +tableSourceItem + : tableName + (PARTITION '(' uidList ')' )? (AS? alias=uid)? + (indexHint (',' indexHint)* )? #atomTableItem + | ( + selectStatement + | '(' parenthesisSubquery=selectStatement ')' + ) + AS? alias=uid #subqueryTableItem + | '(' tableSources ')' #tableSourcesItem + ; + +indexHint + : indexHintAction=(USE | IGNORE | FORCE) + keyFormat=(INDEX|KEY) ( FOR indexHintType)? + '(' uidList ')' + ; + +indexHintType + : JOIN | ORDER BY | GROUP BY + ; + +joinPart + : (INNER | CROSS)? JOIN LATERAL? tableSourceItem joinSpec* #innerJoin + | STRAIGHT_JOIN tableSourceItem (ON expression)* #straightJoin + | (LEFT | RIGHT) OUTER? JOIN LATERAL? tableSourceItem joinSpec* #outerJoin + | NATURAL ((LEFT | RIGHT) OUTER?)? JOIN tableSourceItem #naturalJoin + ; + +joinSpec + : (ON expression) + | USING '(' uidList ')' + ; + +// Select Statement's Details + +queryExpression + : '(' querySpecification ')' + | '(' queryExpression ')' + ; + +queryExpressionNointo + : '(' querySpecificationNointo ')' + | '(' queryExpressionNointo ')' + ; + +querySpecification + : SELECT selectSpec* selectElements selectIntoExpression? + fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? + | SELECT selectSpec* selectElements + fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? selectIntoExpression? + ; + +querySpecificationNointo + : SELECT selectSpec* selectElements + fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? + ; + +unionParenthesis + : UNION unionType=(ALL | DISTINCT)? queryExpressionNointo + ; + +unionStatement + : UNION unionType=(ALL | DISTINCT)? + (querySpecificationNointo | queryExpressionNointo) + ; + +lateralStatement + : LATERAL (querySpecificationNointo | + queryExpressionNointo | + ('(' (querySpecificationNointo | queryExpressionNointo) ')' (AS? uid)?) + ) + ; + +// JSON + +// https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html +jsonTable + : JSON_TABLE '(' + STRING_LITERAL ',' + STRING_LITERAL + COLUMNS '(' jsonColumnList ')' + ')' (AS? uid)? + ; + +jsonColumnList + : jsonColumn (',' jsonColumn)* + ; + +jsonColumn + : fullColumnName ( FOR ORDINALITY + | dataType ( PATH STRING_LITERAL jsonOnEmpty? jsonOnError? + | EXISTS PATH STRING_LITERAL ) ) + | NESTED PATH? STRING_LITERAL COLUMNS '(' jsonColumnList ')' + ; + +jsonOnEmpty + : (NULL_LITERAL | ERROR | DEFAULT defaultValue) ON EMPTY + ; + +jsonOnError + : (NULL_LITERAL | ERROR | DEFAULT defaultValue) ON ERROR + ; + +// details + +selectSpec + : (ALL | DISTINCT | DISTINCTROW) + | HIGH_PRIORITY | STRAIGHT_JOIN | SQL_SMALL_RESULT + | SQL_BIG_RESULT | SQL_BUFFER_RESULT + | (SQL_CACHE | SQL_NO_CACHE) + | SQL_CALC_FOUND_ROWS + ; + +selectElements + : (star='*' | selectElement ) (',' selectElement)* + ; + +selectElement + : fullId '.' '*' #selectStarElement + | fullColumnName (AS? uid)? #selectColumnElement + | functionCall (AS? uid)? #selectFunctionElement + | (LOCAL_ID VAR_ASSIGN)? expression (AS? uid)? #selectExpressionElement + ; + +selectIntoExpression + : INTO assignmentField (',' assignmentField )* #selectIntoVariables + | INTO DUMPFILE STRING_LITERAL #selectIntoDumpFile + | ( + INTO OUTFILE filename=STRING_LITERAL + (CHARACTER SET charset=charsetName)? + ( + fieldsFormat=(FIELDS | COLUMNS) + selectFieldsInto+ + )? + ( + LINES selectLinesInto+ + )? + ) #selectIntoTextFile + ; + +selectFieldsInto + : TERMINATED BY terminationField=STRING_LITERAL + | OPTIONALLY? ENCLOSED BY enclosion=STRING_LITERAL + | ESCAPED BY escaping=STRING_LITERAL + ; + +selectLinesInto + : STARTING BY starting=STRING_LITERAL + | TERMINATED BY terminationLine=STRING_LITERAL + ; + +fromClause + : (FROM tableSources)? + (WHERE whereExpr=expression)? + ; + +groupByClause + : GROUP BY + groupByItem (',' groupByItem)* + (WITH ROLLUP)? + ; + +havingClause + : HAVING havingExpr=expression + ; + +windowClause + : WINDOW windowName AS '(' windowSpec ')' (',' windowName AS '(' windowSpec ')')* + ; + +groupByItem + : expression order=(ASC | DESC)? + ; + +limitClause + : LIMIT + ( + (offset=limitClauseAtom ',')? limit=limitClauseAtom + | limit=limitClauseAtom OFFSET offset=limitClauseAtom + ) + ; + +limitClauseAtom + : decimalLiteral | mysqlVariable | simpleId + ; + + +// Transaction's Statements + +startTransaction + : START TRANSACTION (transactionMode (',' transactionMode)* )? + ; + +beginWork + : BEGIN WORK? + ; + +commitWork + : COMMIT WORK? + (AND nochain=NO? CHAIN)? + (norelease=NO? RELEASE)? + ; + +rollbackWork + : ROLLBACK WORK? + (AND nochain=NO? CHAIN)? + (norelease=NO? RELEASE)? + ; + +savepointStatement + : SAVEPOINT uid + ; + +rollbackStatement + : ROLLBACK WORK? TO SAVEPOINT? uid + ; + +releaseStatement + : RELEASE SAVEPOINT uid + ; + +lockTables + : LOCK (TABLE | TABLES) lockTableElement (',' lockTableElement)* waitNowaitClause? + ; + +unlockTables + : UNLOCK TABLES + ; + + +// details + +setAutocommitStatement + : SET AUTOCOMMIT '=' autocommitValue=('0' | '1') + ; + +setTransactionStatement + : SET transactionContext=(GLOBAL | SESSION)? TRANSACTION + transactionOption (',' transactionOption)* + ; + +transactionMode + : WITH CONSISTENT SNAPSHOT + | READ WRITE + | READ ONLY + ; + +lockTableElement + : tableName (AS? uid)? lockAction + ; + +lockAction + : READ LOCAL? | LOW_PRIORITY? WRITE + ; + +transactionOption + : ISOLATION LEVEL transactionLevel + | READ WRITE + | READ ONLY + ; + +transactionLevel + : REPEATABLE READ + | READ COMMITTED + | READ UNCOMMITTED + | SERIALIZABLE + ; + + +// Replication's Statements + +// Base Replication + +changeMaster + : CHANGE MASTER TO + masterOption (',' masterOption)* channelOption? + ; + +changeReplicationFilter + : CHANGE REPLICATION FILTER + replicationFilter (',' replicationFilter)* + ; + +purgeBinaryLogs + : PURGE purgeFormat=(BINARY | MASTER) LOGS + ( + TO fileName=STRING_LITERAL + | BEFORE timeValue=STRING_LITERAL + ) + ; + +resetMaster + : RESET MASTER + ; + +resetSlave + : RESET SLAVE ALL? channelOption? + ; + +startSlave + : START SLAVE (threadType (',' threadType)*)? + (UNTIL untilOption)? + connectionOption* channelOption? + ; + +stopSlave + : STOP SLAVE (threadType (',' threadType)*)? + ; + +startGroupReplication + : START GROUP_REPLICATION + ; + +stopGroupReplication + : STOP GROUP_REPLICATION + ; + +// details + +masterOption + : stringMasterOption '=' STRING_LITERAL #masterStringOption + | decimalMasterOption '=' decimalLiteral #masterDecimalOption + | boolMasterOption '=' boolVal=('0' | '1') #masterBoolOption + | MASTER_HEARTBEAT_PERIOD '=' REAL_LITERAL #masterRealOption + | IGNORE_SERVER_IDS '=' '(' (uid (',' uid)*)? ')' #masterUidListOption + ; + +stringMasterOption + : MASTER_BIND | MASTER_HOST | MASTER_USER | MASTER_PASSWORD + | MASTER_LOG_FILE | RELAY_LOG_FILE | MASTER_SSL_CA + | MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CRL + | MASTER_SSL_CRLPATH | MASTER_SSL_KEY | MASTER_SSL_CIPHER + | MASTER_TLS_VERSION + ; +decimalMasterOption + : MASTER_PORT | MASTER_CONNECT_RETRY | MASTER_RETRY_COUNT + | MASTER_DELAY | MASTER_LOG_POS | RELAY_LOG_POS + ; + +boolMasterOption + : MASTER_AUTO_POSITION | MASTER_SSL + | MASTER_SSL_VERIFY_SERVER_CERT + ; + +channelOption + : FOR CHANNEL STRING_LITERAL + ; + +replicationFilter + : REPLICATE_DO_DB '=' '(' uidList ')' #doDbReplication + | REPLICATE_IGNORE_DB '=' '(' uidList ')' #ignoreDbReplication + | REPLICATE_DO_TABLE '=' '(' tables ')' #doTableReplication + | REPLICATE_IGNORE_TABLE '=' '(' tables ')' #ignoreTableReplication + | REPLICATE_WILD_DO_TABLE '=' '(' simpleStrings ')' #wildDoTableReplication + | REPLICATE_WILD_IGNORE_TABLE + '=' '(' simpleStrings ')' #wildIgnoreTableReplication + | REPLICATE_REWRITE_DB '=' + '(' tablePair (',' tablePair)* ')' #rewriteDbReplication + ; + +tablePair + : '(' firstTable=tableName ',' secondTable=tableName ')' + ; + +threadType + : IO_THREAD | SQL_THREAD + ; + +untilOption + : gtids=(SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS) + '=' gtuidSet #gtidsUntilOption + | MASTER_LOG_FILE '=' STRING_LITERAL + ',' MASTER_LOG_POS '=' decimalLiteral #masterLogUntilOption + | RELAY_LOG_FILE '=' STRING_LITERAL + ',' RELAY_LOG_POS '=' decimalLiteral #relayLogUntilOption + | SQL_AFTER_MTS_GAPS #sqlGapsUntilOption + ; + +connectionOption + : USER '=' conOptUser=STRING_LITERAL #userConnectionOption + | PASSWORD '=' conOptPassword=STRING_LITERAL #passwordConnectionOption + | DEFAULT_AUTH '=' conOptDefAuth=STRING_LITERAL #defaultAuthConnectionOption + | PLUGIN_DIR '=' conOptPluginDir=STRING_LITERAL #pluginDirConnectionOption + ; + +gtuidSet + : uuidSet (',' uuidSet)* + | STRING_LITERAL + ; + + +// XA Transactions + +xaStartTransaction + : XA xaStart=(START | BEGIN) xid xaAction=(JOIN | RESUME)? + ; + +xaEndTransaction + : XA END xid (SUSPEND (FOR MIGRATE)?)? + ; + +xaPrepareStatement + : XA PREPARE xid + ; + +xaCommitWork + : XA COMMIT xid (ONE PHASE)? + ; + +xaRollbackWork + : XA ROLLBACK xid + ; + +xaRecoverWork + : XA RECOVER (CONVERT xid)? + ; + + +// Prepared Statements + +prepareStatement + : PREPARE uid FROM + (query=STRING_LITERAL | variable=LOCAL_ID) + ; + +executeStatement + : EXECUTE uid (USING userVariables)? + ; + +deallocatePrepare + : dropFormat=(DEALLOCATE | DROP) PREPARE uid + ; + + +// Compound Statements + +routineBody + : blockStatement | sqlStatement + ; + +// details + +blockStatement + : (uid ':')? BEGIN + (declareVariable SEMI)* + (declareCondition SEMI)* + (declareCursor SEMI)* + (declareHandler SEMI)* + procedureSqlStatement* + END uid? + ; + +caseStatement + : CASE (uid | expression)? caseAlternative+ + (ELSE procedureSqlStatement+)? + END CASE + ; + +ifStatement + : IF expression + THEN thenStatements+=procedureSqlStatement+ + elifAlternative* + (ELSE elseStatements+=procedureSqlStatement+ )? + END IF + ; + +iterateStatement + : ITERATE uid + ; + +leaveStatement + : LEAVE uid + ; + +loopStatement + : (uid ':')? + LOOP procedureSqlStatement+ + END LOOP uid? + ; + +repeatStatement + : (uid ':')? + REPEAT procedureSqlStatement+ + UNTIL expression + END REPEAT uid? + ; + +returnStatement + : RETURN expression + ; + +whileStatement + : (uid ':')? + WHILE expression + DO procedureSqlStatement+ + END WHILE uid? + ; + +cursorStatement + : CLOSE uid #CloseCursor + | FETCH (NEXT? FROM)? uid INTO uidList #FetchCursor + | OPEN uid #OpenCursor + ; + +// details + +declareVariable + : DECLARE uidList dataType (DEFAULT expression)? + ; + +declareCondition + : DECLARE uid CONDITION FOR + ( decimalLiteral | SQLSTATE VALUE? STRING_LITERAL) + ; + +declareCursor + : DECLARE uid CURSOR FOR selectStatement + ; + +declareHandler + : DECLARE handlerAction=(CONTINUE | EXIT | UNDO) + HANDLER FOR + handlerConditionValue (',' handlerConditionValue)* + routineBody + ; + +handlerConditionValue + : decimalLiteral #handlerConditionCode + | SQLSTATE VALUE? STRING_LITERAL #handlerConditionState + | uid #handlerConditionName + | SQLWARNING #handlerConditionWarning + | NOT FOUND #handlerConditionNotfound + | SQLEXCEPTION #handlerConditionException + ; + +procedureSqlStatement + : (compoundStatement | sqlStatement) SEMI + ; + +caseAlternative + : WHEN (constant | expression) + THEN procedureSqlStatement+ + ; + +elifAlternative + : ELSEIF expression + THEN procedureSqlStatement+ + ; + +// Administration Statements + +// Account management statements + +alterUser + : ALTER USER + userSpecification (',' userSpecification)* #alterUserMysqlV56 + | ALTER USER ifExists? + userAuthOption (',' userAuthOption)* + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH userResourceOption+)? + (userPasswordOption | userLockOption)* + (COMMENT STRING_LITERAL | ATTRIBUTE STRING_LITERAL)? #alterUserMysqlV80 + | ALTER USER ifExists? + (userName | uid) DEFAULT ROLE roleOption #alterUserMysqlV80 + ; + +createUser + : CREATE USER userAuthOption (',' userAuthOption)* #createUserMysqlV56 + | CREATE USER ifNotExists? + userAuthOption (',' userAuthOption)* + (DEFAULT ROLE roleOption)? + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH userResourceOption+)? + (userPasswordOption | userLockOption)* + (COMMENT STRING_LITERAL | ATTRIBUTE STRING_LITERAL)? #createUserMysqlV80 + ; + +dropUser + : DROP USER ifExists? userName (',' userName)* + ; + +grantStatement + : GRANT privelegeClause (',' privelegeClause)* + ON + privilegeObject=(TABLE | FUNCTION | PROCEDURE)? + privilegeLevel + TO userAuthOption (',' userAuthOption)* + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH (GRANT OPTION | userResourceOption)* )? + (AS userName WITH ROLE roleOption)? + | GRANT (userName | uid) (',' (userName | uid))* + TO (userName | uid) (',' (userName | uid))* + (WITH ADMIN OPTION)? + ; + +roleOption + : DEFAULT + | NONE + | ALL (EXCEPT userName (',' userName)*)? + | userName (',' userName)* + ; + +grantProxy + : GRANT PROXY ON fromFirst=userName + TO toFirst=userName (',' toOther+=userName)* + (WITH GRANT OPTION)? + ; + +renameUser + : RENAME USER + renameUserClause (',' renameUserClause)* + ; + +revokeStatement + : REVOKE privelegeClause (',' privelegeClause)* + ON + privilegeObject=(TABLE | FUNCTION | PROCEDURE)? + privilegeLevel + FROM userName (',' userName)* #detailRevoke + | REVOKE ALL PRIVILEGES? ',' GRANT OPTION + FROM userName (',' userName)* #shortRevoke + | REVOKE (userName | uid) (',' (userName | uid))* + FROM (userName | uid) (',' (userName | uid))* #roleRevoke + ; + +revokeProxy + : REVOKE PROXY ON onUser=userName + FROM fromFirst=userName (',' fromOther+=userName)* + ; + +setPasswordStatement + : SET PASSWORD (FOR userName)? + '=' ( passwordFunctionClause | STRING_LITERAL) + ; + +// details + +userSpecification + : userName userPasswordOption + ; + +userAuthOption + : userName IDENTIFIED BY PASSWORD hashed=STRING_LITERAL #hashAuthOption + | userName IDENTIFIED BY RANDOM PASSWORD authOptionClause #randomAuthOption + | userName IDENTIFIED BY STRING_LITERAL authOptionClause #stringAuthOption + | userName IDENTIFIED WITH authenticationRule #moduleAuthOption + | userName #simpleAuthOption + ; + +authOptionClause + : (REPLACE STRING_LITERAL)? (RETAIN CURRENT PASSWORD)? + ; + +authenticationRule + : authPlugin + ((BY | USING | AS) (STRING_LITERAL | RANDOM PASSWORD) + authOptionClause)? #module + | authPlugin + USING passwordFunctionClause #passwordModuleOption + ; + +tlsOption + : SSL + | X509 + | CIPHER STRING_LITERAL + | ISSUER STRING_LITERAL + | SUBJECT STRING_LITERAL + ; + +userResourceOption + : MAX_QUERIES_PER_HOUR decimalLiteral + | MAX_UPDATES_PER_HOUR decimalLiteral + | MAX_CONNECTIONS_PER_HOUR decimalLiteral + | MAX_USER_CONNECTIONS decimalLiteral + ; + +userPasswordOption + : PASSWORD EXPIRE + (expireType=DEFAULT + | expireType=NEVER + | expireType=INTERVAL decimalLiteral DAY + )? + | PASSWORD HISTORY (DEFAULT | decimalLiteral) + | PASSWORD REUSE INTERVAL (DEFAULT | decimalLiteral DAY) + | PASSWORD REQUIRE CURRENT (OPTIONAL | DEFAULT)? + | FAILED_LOGIN_ATTEMPTS decimalLiteral + | PASSWORD_LOCK_TIME (decimalLiteral | UNBOUNDED) + ; + +userLockOption + : ACCOUNT lockType=(LOCK | UNLOCK) + ; + +privelegeClause + : privilege ( '(' uidList ')' )? + ; + +privilege + : ALL PRIVILEGES? + | ALTER ROUTINE? + | CREATE + (TEMPORARY TABLES | ROUTINE | VIEW | USER | TABLESPACE | ROLE)? + | DELETE | DROP (ROLE)? | EVENT | EXECUTE | FILE | GRANT OPTION + | INDEX | INSERT | LOCK TABLES | PROCESS | PROXY + | REFERENCES | RELOAD + | REPLICATION (CLIENT | SLAVE) + | SELECT + | SHOW (VIEW | DATABASES) + | SHUTDOWN | SUPER | TRIGGER | UPDATE | USAGE + | APPLICATION_PASSWORD_ADMIN | AUDIT_ABORT_EXEMPT | AUDIT_ADMIN | AUTHENTICATION_POLICY_ADMIN | BACKUP_ADMIN | BINLOG_ADMIN | BINLOG_ENCRYPTION_ADMIN | CLONE_ADMIN + | CONNECTION_ADMIN | ENCRYPTION_KEY_ADMIN | FIREWALL_ADMIN | FIREWALL_EXEMPT | FIREWALL_USER | FLUSH_OPTIMIZER_COSTS + | FLUSH_STATUS | FLUSH_TABLES | FLUSH_USER_RESOURCES | GROUP_REPLICATION_ADMIN + | INNODB_REDO_LOG_ARCHIVE | INNODB_REDO_LOG_ENABLE | NDB_STORED_USER | PASSWORDLESS_USER_ADMIN | PERSIST_RO_VARIABLES_ADMIN | REPLICATION_APPLIER + | REPLICATION_SLAVE_ADMIN | RESOURCE_GROUP_ADMIN | RESOURCE_GROUP_USER | ROLE_ADMIN + | SERVICE_CONNECTION_ADMIN + | SESSION_VARIABLES_ADMIN | SET_USER_ID | SKIP_QUERY_REWRITE | SHOW_ROUTINE | SYSTEM_USER | SYSTEM_VARIABLES_ADMIN + | TABLE_ENCRYPTION_ADMIN | TP_CONNECTION_ADMIN | VERSION_TOKEN_ADMIN | XA_RECOVER_ADMIN + // MySQL on Amazon RDS + | LOAD FROM S3 | SELECT INTO S3 | INVOKE LAMBDA + ; + +privilegeLevel + : '*' #currentSchemaPriviLevel + | '*' '.' '*' #globalPrivLevel + | uid '.' '*' #definiteSchemaPrivLevel + | uid '.' uid #definiteFullTablePrivLevel + | uid dottedId #definiteFullTablePrivLevel2 + | uid #definiteTablePrivLevel + ; + +renameUserClause + : fromFirst=userName TO toFirst=userName + ; + +// Table maintenance statements + +analyzeTable + : ANALYZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + (TABLE | TABLES) tables + ( UPDATE HISTOGRAM ON fullColumnName (',' fullColumnName)* (WITH decimalLiteral BUCKETS)? )? + ( DROP HISTOGRAM ON fullColumnName (',' fullColumnName)* )? + ; + +checkTable + : CHECK TABLE tables checkTableOption* + ; + +checksumTable + : CHECKSUM TABLE tables actionOption=(QUICK | EXTENDED)? + ; + +optimizeTable + : OPTIMIZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + (TABLE | TABLES) tables + ; + +repairTable + : REPAIR actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + TABLE tables + QUICK? EXTENDED? USE_FRM? + ; + +// details + +checkTableOption + : FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED + ; + + +// Plugin and udf statements + +createUdfunction + : CREATE AGGREGATE? FUNCTION ifNotExists? uid + RETURNS returnType=(STRING | INTEGER | REAL | DECIMAL) + SONAME STRING_LITERAL + ; + +installPlugin + : INSTALL PLUGIN uid SONAME STRING_LITERAL + ; + +uninstallPlugin + : UNINSTALL PLUGIN uid + ; + + +// Set and show statements + +setStatement + : SET variableClause ('=' | ':=') (expression | ON) + (',' variableClause ('=' | ':=') (expression | ON))* #setVariable + | SET charSet (charsetName | DEFAULT) #setCharset + | SET NAMES + (charsetName (COLLATE collationName)? | DEFAULT) #setNames + | setPasswordStatement #setPassword + | setTransactionStatement #setTransaction + | setAutocommitStatement #setAutocommit + | SET fullId ('=' | ':=') expression + (',' fullId ('=' | ':=') expression)* #setNewValueInsideTrigger + ; + +showStatement + : SHOW logFormat=(BINARY | MASTER) LOGS #showMasterLogs + | SHOW logFormat=(BINLOG | RELAYLOG) + EVENTS (IN filename=STRING_LITERAL)? + (FROM fromPosition=decimalLiteral)? + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + )? #showLogEvents + | SHOW showCommonEntity showFilter? #showObjectFilter + | SHOW FULL? columnsFormat=(COLUMNS | FIELDS) + tableFormat=(FROM | IN) tableName + (schemaFormat=(FROM | IN) uid)? showFilter? #showColumns + | SHOW CREATE schemaFormat=(DATABASE | SCHEMA) + ifNotExists? uid #showCreateDb + | SHOW CREATE + namedEntity=( + EVENT | FUNCTION | PROCEDURE + | TABLE | TRIGGER | VIEW + ) + fullId #showCreateFullIdObject + | SHOW CREATE USER userName #showCreateUser + | SHOW ENGINE engineName engineOption=(STATUS | MUTEX) #showEngine + | SHOW showGlobalInfoClause #showGlobalInfo + | SHOW errorFormat=(ERRORS | WARNINGS) + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + )? #showErrors + | SHOW COUNT '(' '*' ')' errorFormat=(ERRORS | WARNINGS) #showCountErrors + | SHOW showSchemaEntity + (schemaFormat=(FROM | IN) uid)? showFilter? #showSchemaFilter + | SHOW routine=(FUNCTION | PROCEDURE) CODE fullId #showRoutine + | SHOW GRANTS (FOR userName)? #showGrants + | SHOW indexFormat=(INDEX | INDEXES | KEYS) + tableFormat=(FROM | IN) tableName + (schemaFormat=(FROM | IN) uid)? (WHERE expression)? #showIndexes + | SHOW OPEN TABLES ( schemaFormat=(FROM | IN) uid)? + showFilter? #showOpenTables + | SHOW PROFILE showProfileType (',' showProfileType)* + (FOR QUERY queryCount=decimalLiteral)? + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + ) #showProfile + | SHOW SLAVE STATUS (FOR CHANNEL STRING_LITERAL)? #showSlaveStatus + ; + +// details + +variableClause + : LOCAL_ID | GLOBAL_ID | ( ('@' '@')? (GLOBAL | SESSION | LOCAL) )? uid + ; + +showCommonEntity + : CHARACTER SET | COLLATION | DATABASES | SCHEMAS + | FUNCTION STATUS | PROCEDURE STATUS + | (GLOBAL | SESSION)? (STATUS | VARIABLES) + ; + +showFilter + : LIKE STRING_LITERAL + | WHERE expression + ; + +showGlobalInfoClause + : STORAGE? ENGINES | MASTER STATUS | PLUGINS + | PRIVILEGES | FULL? PROCESSLIST | PROFILES + | SLAVE HOSTS | AUTHORS | CONTRIBUTORS + ; + +showSchemaEntity + : EVENTS | TABLE STATUS | FULL? TABLES | TRIGGERS + ; + +showProfileType + : ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY + | PAGE FAULTS | SOURCE | SWAPS + ; + + +// Other administrative statements + +binlogStatement + : BINLOG STRING_LITERAL + ; + +cacheIndexStatement + : CACHE INDEX tableIndexes (',' tableIndexes)* + ( PARTITION '(' (uidList | ALL) ')' )? + IN schema=uid + ; + +flushStatement + : FLUSH flushFormat=(NO_WRITE_TO_BINLOG | LOCAL)? + flushOption (',' flushOption)* + ; + +killStatement + : KILL connectionFormat=(CONNECTION | QUERY)? expression + ; + +loadIndexIntoCache + : LOAD INDEX INTO CACHE + loadedTableIndexes (',' loadedTableIndexes)* + ; + +// remark reset (maser | slave) describe in replication's +// statements section +resetStatement + : RESET QUERY CACHE + ; + +shutdownStatement + : SHUTDOWN + ; + +// details + +tableIndexes + : tableName ( indexFormat=(INDEX | KEY)? '(' uidList ')' )? + ; + +flushOption + : ( + DES_KEY_FILE | HOSTS + | ( + BINARY | ENGINE | ERROR | GENERAL | RELAY | SLOW + )? LOGS + | OPTIMIZER_COSTS | PRIVILEGES | QUERY CACHE | STATUS + | USER_RESOURCES | TABLES (WITH READ LOCK)? + ) #simpleFlushOption + | RELAY LOGS channelOption? #channelFlushOption + | (TABLE | TABLES) tables? flushTableOption? #tableFlushOption + ; + +flushTableOption + : WITH READ LOCK + | FOR EXPORT + ; + +loadedTableIndexes + : tableName + ( PARTITION '(' (partitionList=uidList | ALL) ')' )? + ( indexFormat=(INDEX | KEY)? '(' indexList=uidList ')' )? + (IGNORE LEAVES)? + ; + + +// Utility Statements + + +simpleDescribeStatement + : command=(EXPLAIN | DESCRIBE | DESC) tableName + (column=uid | pattern=STRING_LITERAL)? + ; + +fullDescribeStatement + : command=(EXPLAIN | DESCRIBE | DESC) + ( + formatType=(EXTENDED | PARTITIONS | FORMAT ) + '=' + formatValue=(TRADITIONAL | JSON) + )? + describeObjectClause + ; + +helpStatement + : HELP STRING_LITERAL + ; + +useStatement + : USE uid + ; + +signalStatement + : SIGNAL ( ( SQLSTATE VALUE? stringLiteral ) | ID | REVERSE_QUOTE_ID ) + ( SET signalConditionInformation ( ',' signalConditionInformation)* )? + ; + +resignalStatement + : RESIGNAL ( ( SQLSTATE VALUE? stringLiteral ) | ID | REVERSE_QUOTE_ID )? + ( SET signalConditionInformation ( ',' signalConditionInformation)* )? + ; + +signalConditionInformation + : ( CLASS_ORIGIN + | SUBCLASS_ORIGIN + | MESSAGE_TEXT + | MYSQL_ERRNO + | CONSTRAINT_CATALOG + | CONSTRAINT_SCHEMA + | CONSTRAINT_NAME + | CATALOG_NAME + | SCHEMA_NAME + | TABLE_NAME + | COLUMN_NAME + | CURSOR_NAME + ) '=' ( stringLiteral | DECIMAL_LITERAL | mysqlVariable | simpleId ) + ; + +withStatement + : WITH RECURSIVE? commonTableExpressions (',' commonTableExpressions)* + ; + +tableStatement + : TABLE tableName orderByClause? limitClause? + ; + +diagnosticsStatement + : GET ( CURRENT | STACKED )? DIAGNOSTICS ( + ( variableClause '=' ( NUMBER | ROW_COUNT ) ( ',' variableClause '=' ( NUMBER | ROW_COUNT ) )* ) + | ( CONDITION ( decimalLiteral | variableClause ) variableClause '=' diagnosticsConditionInformationName ( ',' variableClause '=' diagnosticsConditionInformationName )* ) + ) + ; + +diagnosticsConditionInformationName + : CLASS_ORIGIN + | SUBCLASS_ORIGIN + | RETURNED_SQLSTATE + | MESSAGE_TEXT + | MYSQL_ERRNO + | CONSTRAINT_CATALOG + | CONSTRAINT_SCHEMA + | CONSTRAINT_NAME + | CATALOG_NAME + | SCHEMA_NAME + | TABLE_NAME + | COLUMN_NAME + | CURSOR_NAME + ; + +// details + +describeObjectClause + : ( + selectStatement | deleteStatement | insertStatement + | replaceStatement | updateStatement + ) #describeStatements + | FOR CONNECTION uid #describeConnection + ; + + +// Common Clauses + +// DB Objects + +fullId + : uid (DOT_ID | '.' uid)? + ; + +tableName + : fullId + ; + +roleName + : userName | uid + ; + +fullColumnName + : uid (dottedId dottedId? )? + | .? dottedId dottedId? + ; + +indexColumnName + : ((uid | STRING_LITERAL) ('(' decimalLiteral ')')? | expression) sortType=(ASC | DESC)? + ; + +userName + : STRING_USER_NAME | ID | STRING_LITERAL | ADMIN | keywordsCanBeId; + +mysqlVariable + : LOCAL_ID + | GLOBAL_ID + ; + +charsetName + : BINARY + | charsetNameBase + | STRING_LITERAL + | CHARSET_REVERSE_QOUTE_STRING + ; + +collationName + : uid | STRING_LITERAL; + +engineName + : engineNameBase + | ID + | STRING_LITERAL + ; + +engineNameBase + : ARCHIVE | BLACKHOLE | CONNECT | CSV | FEDERATED | INNODB | MEMORY + | MRG_MYISAM | MYISAM | NDB | NDBCLUSTER | PERFORMANCE_SCHEMA | TOKUDB + ; + +uuidSet + : decimalLiteral '-' decimalLiteral '-' decimalLiteral + '-' decimalLiteral '-' decimalLiteral + (':' decimalLiteral '-' decimalLiteral)+ + ; + +xid + : globalTableUid=xuidStringId + ( + ',' qualifier=xuidStringId + (',' idFormat=decimalLiteral)? + )? + ; + +xuidStringId + : STRING_LITERAL + | BIT_STRING + | HEXADECIMAL_LITERAL+ + ; + +authPlugin + : uid | STRING_LITERAL + ; + +uid + : simpleId + //| DOUBLE_QUOTE_ID + //| REVERSE_QUOTE_ID + | CHARSET_REVERSE_QOUTE_STRING + | STRING_LITERAL + ; + +simpleId + : ID + | charsetNameBase + | transactionLevelBase + | engineNameBase + | privilegesBase + | intervalTypeBase + | dataTypeBase + | keywordsCanBeId + | scalarFunctionName + ; + +dottedId + : DOT_ID + | '.' uid + ; + + +// Literals + +decimalLiteral + : DECIMAL_LITERAL | ZERO_DECIMAL | ONE_DECIMAL | TWO_DECIMAL | REAL_LITERAL + ; + +fileSizeLiteral + : FILESIZE_LITERAL | decimalLiteral; + +stringLiteral + : ( + STRING_CHARSET_NAME? STRING_LITERAL + | START_NATIONAL_STRING_LITERAL + ) STRING_LITERAL+ + | ( + STRING_CHARSET_NAME? STRING_LITERAL + | START_NATIONAL_STRING_LITERAL + ) (COLLATE collationName)? + ; + +booleanLiteral + : TRUE | FALSE; + +hexadecimalLiteral + : STRING_CHARSET_NAME? HEXADECIMAL_LITERAL; + +nullNotnull + : NOT? (NULL_LITERAL | NULL_SPEC_LITERAL) + ; + +constant + : stringLiteral | decimalLiteral + | '-' decimalLiteral + | hexadecimalLiteral | booleanLiteral + | REAL_LITERAL | BIT_STRING + | NOT? nullLiteral=(NULL_LITERAL | NULL_SPEC_LITERAL) + ; + + +// Data Types + +dataType + : typeName=( + CHAR | CHARACTER | VARCHAR | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT + | NCHAR | NVARCHAR | LONG + ) + VARYING? + lengthOneDimension? BINARY? + (charSet charsetName)? + (COLLATE collationName | BINARY)? #stringDataType + | NATIONAL typeName=(CHAR | CHARACTER) VARYING + lengthOneDimension? BINARY? #nationalVaryingStringDataType + | NATIONAL typeName=(VARCHAR | CHARACTER | CHAR) + lengthOneDimension? BINARY? #nationalStringDataType + | NCHAR typeName=VARCHAR + lengthOneDimension? BINARY? #nationalStringDataType + | typeName=( + TINYINT | SMALLINT | MEDIUMINT | INT | INTEGER | BIGINT + | MIDDLEINT | INT1 | INT2 | INT3 | INT4 | INT8 + ) + lengthOneDimension? (SIGNED | UNSIGNED | ZEROFILL)* #dimensionDataType + | typeName=REAL + lengthTwoDimension? (SIGNED | UNSIGNED | ZEROFILL)* #dimensionDataType + | typeName=DOUBLE PRECISION? + lengthTwoDimension? (SIGNED | UNSIGNED | ZEROFILL)* #dimensionDataType + | typeName=(DECIMAL | DEC | FIXED | NUMERIC | FLOAT | FLOAT4 | FLOAT8) + lengthTwoOptionalDimension? (SIGNED | UNSIGNED | ZEROFILL)* #dimensionDataType + | typeName=( + DATE | TINYBLOB | MEDIUMBLOB | LONGBLOB + | BOOL | BOOLEAN | SERIAL + ) #simpleDataType + | typeName=( + BIT | TIME | TIMESTAMP | DATETIME | BINARY + | VARBINARY | BLOB | YEAR + ) + lengthOneDimension? #dimensionDataType + | typeName=(ENUM | SET) + collectionOptions BINARY? + (charSet charsetName)? #collectionDataType + | typeName=( + GEOMETRYCOLLECTION | GEOMCOLLECTION | LINESTRING | MULTILINESTRING + | MULTIPOINT | MULTIPOLYGON | POINT | POLYGON | JSON | GEOMETRY + ) (SRID decimalLiteral)? #spatialDataType + | typeName=LONG VARCHAR? + BINARY? + (charSet charsetName)? + (COLLATE collationName)? #longVarcharDataType // LONG VARCHAR is the same as LONG + | LONG VARBINARY #longVarbinaryDataType + ; + +collectionOptions + : '(' STRING_LITERAL (',' STRING_LITERAL)* ')' + ; + +convertedDataType + : + ( + typeName=(BINARY| NCHAR) lengthOneDimension? + | typeName=CHAR lengthOneDimension? (charSet charsetName)? + | typeName=(DATE | DATETIME | TIME | JSON | INT | INTEGER) + | typeName=(DECIMAL | DEC) lengthTwoOptionalDimension? + | (SIGNED | UNSIGNED) (INTEGER | INT)? + ) ARRAY? + ; + +lengthOneDimension + : '(' decimalLiteral ')' + ; + +lengthTwoDimension + : '(' decimalLiteral ',' decimalLiteral ')' + ; + +lengthTwoOptionalDimension + : '(' decimalLiteral (',' decimalLiteral)? ')' + ; + + +// Common Lists + +uidList + : uid (',' uid)* + ; + +fullColumnNameList + : fullColumnName (',' fullColumnName)* + ; + +tables + : tableName (',' tableName)* + ; + +indexColumnNames + : '(' indexColumnName (',' indexColumnName)* ')' + ; + +expressions + : expression (',' expression)* + ; + +expressionsWithDefaults + : expressionOrDefault (',' expressionOrDefault)* + ; + +constants + : constant (',' constant)* + ; + +simpleStrings + : STRING_LITERAL (',' STRING_LITERAL)* + ; + +userVariables + : LOCAL_ID (',' LOCAL_ID)* + ; + + +// Common Expressons + +defaultValue + : NULL_LITERAL + | CAST '(' expression AS convertedDataType ')' + | unaryOperator? constant + | currentTimestamp (ON UPDATE currentTimestamp)? + | '(' expression ')' + | '(' fullId ')' + ; + +currentTimestamp + : + ( + (CURRENT_TIMESTAMP | LOCALTIME | LOCALTIMESTAMP) + ('(' decimalLiteral? ')')? + | NOW '(' decimalLiteral? ')' + ) + ; + +expressionOrDefault + : expression | DEFAULT + ; + +ifExists + : IF EXISTS + ; + + +ifNotExists + : IF NOT EXISTS + ; + +orReplace + : OR REPLACE + ; + +waitNowaitClause + : WAIT decimalLiteral + | NOWAIT + ; + +// Functions + +functionCall + : specificFunction #specificFunctionCall + | aggregateWindowedFunction #aggregateFunctionCall + | nonAggregateWindowedFunction #nonAggregateFunctionCall + | scalarFunctionName '(' functionArgs? ')' #scalarFunctionCall + | fullId '(' functionArgs? ')' #udfFunctionCall + | passwordFunctionClause #passwordFunctionCall + ; + +specificFunction + : ( + CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP + | CURRENT_USER | LOCALTIME | UTC_TIMESTAMP | SCHEMA + ) ('(' ')')? #simpleFunctionCall + | CONVERT '(' expression separator=',' convertedDataType ')' #dataTypeFunctionCall + | CONVERT '(' expression USING charsetName ')' #dataTypeFunctionCall + | CAST '(' expression AS convertedDataType ')' #dataTypeFunctionCall + | VALUES '(' fullColumnName ')' #valuesFunctionCall + | CASE expression caseFuncAlternative+ + (ELSE elseArg=functionArg)? END #caseExpressionFunctionCall + | CASE caseFuncAlternative+ + (ELSE elseArg=functionArg)? END #caseFunctionCall + | CHAR '(' functionArgs (USING charsetName)? ')' #charFunctionCall + | POSITION + '(' + ( + positionString=stringLiteral + | positionExpression=expression + ) + IN + ( + inString=stringLiteral + | inExpression=expression + ) + ')' #positionFunctionCall + | (SUBSTR | SUBSTRING) + '(' + ( + sourceString=stringLiteral + | sourceExpression=expression + ) FROM + ( + fromDecimal=decimalLiteral + | fromExpression=expression + ) + ( + FOR + ( + forDecimal=decimalLiteral + | forExpression=expression + ) + )? + ')' #substrFunctionCall + | TRIM + '(' + positioinForm=(BOTH | LEADING | TRAILING) + ( + sourceString=stringLiteral + | sourceExpression=expression + )? + FROM + ( + fromString=stringLiteral + | fromExpression=expression + ) + ')' #trimFunctionCall + | TRIM + '(' + ( + sourceString=stringLiteral + | sourceExpression=expression + ) + FROM + ( + fromString=stringLiteral + | fromExpression=expression + ) + ')' #trimFunctionCall + | WEIGHT_STRING + '(' + (stringLiteral | expression) + (AS stringFormat=(CHAR | BINARY) + '(' decimalLiteral ')' )? levelsInWeightString? + ')' #weightFunctionCall + | EXTRACT + '(' + intervalType + FROM + ( + sourceString=stringLiteral + | sourceExpression=expression + ) + ')' #extractFunctionCall + | GET_FORMAT + '(' + datetimeFormat=(DATE | TIME | DATETIME) + ',' stringLiteral + ')' #getFormatFunctionCall + | JSON_VALUE + '(' expression + ',' expression + (RETURNING convertedDataType)? + jsonOnEmpty? + jsonOnError? + ')' #jsonValueFunctionCall + ; + +caseFuncAlternative + : WHEN condition=functionArg + THEN consequent=functionArg + ; + +levelsInWeightString + : LEVEL levelInWeightListElement + (',' levelInWeightListElement)* #levelWeightList + | LEVEL + firstLevel=decimalLiteral '-' lastLevel=decimalLiteral #levelWeightRange + ; + +levelInWeightListElement + : decimalLiteral orderType=(ASC | DESC | REVERSE)? + ; + +aggregateWindowedFunction + : (AVG | MAX | MIN | SUM) + '(' aggregator=(ALL | DISTINCT)? functionArg ')' overClause? + | COUNT '(' (starArg='*' | aggregator=ALL? functionArg | aggregator=DISTINCT functionArgs) ')' overClause? + | ( + BIT_AND | BIT_OR | BIT_XOR | STD | STDDEV | STDDEV_POP + | STDDEV_SAMP | VAR_POP | VAR_SAMP | VARIANCE + ) '(' aggregator=ALL? functionArg ')' overClause? + | GROUP_CONCAT '(' + aggregator=DISTINCT? functionArgs + (ORDER BY + orderByExpression (',' orderByExpression)* + )? (SEPARATOR separator=STRING_LITERAL)? + ')' + ; + +nonAggregateWindowedFunction + : (LAG | LEAD) '(' expression (',' decimalLiteral)? (',' decimalLiteral)? ')' overClause + | (FIRST_VALUE | LAST_VALUE) '(' expression ')' overClause + | (CUME_DIST | DENSE_RANK | PERCENT_RANK | RANK | ROW_NUMBER) '('')' overClause + | NTH_VALUE '(' expression ',' decimalLiteral ')' overClause + | NTILE '(' decimalLiteral ')' overClause + ; + +overClause + : OVER ('(' windowSpec ')' | windowName) + ; + +windowSpec + : windowName? partitionClause? orderByClause? frameClause? + ; + +windowName + : uid + ; + +frameClause + : frameUnits frameExtent + ; + +frameUnits + : ROWS + | RANGE + ; + +frameExtent + : frameRange + | frameBetween + ; + +frameBetween + : BETWEEN frameRange AND frameRange + ; + +frameRange + : CURRENT ROW + | UNBOUNDED (PRECEDING | FOLLOWING) + | expression (PRECEDING | FOLLOWING) + ; + +partitionClause + : PARTITION BY expression (',' expression)* + ; + +scalarFunctionName + : functionNameBase + | ASCII | CURDATE | CURRENT_DATE | CURRENT_TIME + | CURRENT_TIMESTAMP | CURTIME | DATE_ADD | DATE_SUB + | IF | INSERT | LOCALTIME | LOCALTIMESTAMP | MID | NOW + | REPEAT | REPLACE | SUBSTR | SUBSTRING | SYSDATE | TRIM + | UTC_DATE | UTC_TIME | UTC_TIMESTAMP + ; + +passwordFunctionClause + : functionName=(PASSWORD | OLD_PASSWORD) '(' functionArg ')' + ; + +functionArgs + : (constant | fullColumnName | functionCall | expression) + ( + ',' + (constant | fullColumnName | functionCall | expression) + )* + ; + +functionArg + : constant | fullColumnName | functionCall | expression + ; + + +// Expressions, predicates + +// Simplified approach for expression +expression + : notOperator=(NOT | '!') expression #notExpression + | expression logicalOperator expression #logicalExpression + | predicate IS NOT? testValue=(TRUE | FALSE | UNKNOWN) #isExpression + | predicate #predicateExpression + ; + +predicate + : predicate NOT? IN '(' (selectStatement | expressions) ')' #inPredicate + | predicate IS nullNotnull #isNullPredicate + | left=predicate comparisonOperator right=predicate #binaryComparisonPredicate + | predicate comparisonOperator + quantifier=(ALL | ANY | SOME) '(' selectStatement ')' #subqueryComparisonPredicate + | predicate NOT? BETWEEN predicate AND predicate #betweenPredicate + | predicate SOUNDS LIKE predicate #soundsLikePredicate + | predicate NOT? LIKE predicate (ESCAPE STRING_LITERAL)? #likePredicate + | predicate NOT? regex=(REGEXP | RLIKE) predicate #regexpPredicate + | predicate MEMBER OF '(' predicate ')' #jsonMemberOfPredicate + | expressionAtom #expressionAtomPredicate + ; + + +// Add in ASTVisitor nullNotnull in constant +expressionAtom + : constant #constantExpressionAtom + | fullColumnName #fullColumnNameExpressionAtom + | functionCall #functionCallExpressionAtom + | expressionAtom COLLATE collationName #collateExpressionAtom + | mysqlVariable #mysqlVariableExpressionAtom + | unaryOperator expressionAtom #unaryExpressionAtom + | BINARY expressionAtom #binaryExpressionAtom + | LOCAL_ID VAR_ASSIGN expressionAtom #variableAssignExpressionAtom + | '(' expression (',' expression)* ')' #nestedExpressionAtom + | ROW '(' expression (',' expression)+ ')' #nestedRowExpressionAtom + | EXISTS '(' selectStatement ')' #existsExpressionAtom + | '(' selectStatement ')' #subqueryExpressionAtom + | INTERVAL expression intervalType #intervalExpressionAtom + | left=expressionAtom bitOperator right=expressionAtom #bitExpressionAtom + | left=expressionAtom mathOperator right=expressionAtom #mathExpressionAtom + | left=expressionAtom jsonOperator right=expressionAtom #jsonExpressionAtom + ; + +unaryOperator + : '!' | '~' | '+' | '-' | NOT + ; + +comparisonOperator + : '=' | '>' | '<' | '<' '=' | '>' '=' + | '<' '>' | '!' '=' | '<' '=' '>' + ; + +logicalOperator + : AND | '&' '&' | XOR | OR | '|' '|' + ; + +bitOperator + : '<' '<' | '>' '>' | '&' | '^' | '|' + ; + +mathOperator + : '*' | '/' | '%' | DIV | MOD | '+' | '-' + ; + +jsonOperator + : '-' '>' | '-' '>' '>' + ; + +// Simple id sets +// (that keyword, which can be id) + +charsetNameBase + : ARMSCII8 | ASCII | BIG5 | BINARY | CP1250 | CP1251 | CP1256 | CP1257 + | CP850 | CP852 | CP866 | CP932 | DEC8 | EUCJPMS | EUCKR + | GB18030 | GB2312 | GBK | GEOSTD8 | GREEK | HEBREW | HP8 | KEYBCS2 + | KOI8R | KOI8U | LATIN1 | LATIN2 | LATIN5 | LATIN7 | MACCE + | MACROMAN | SJIS | SWE7 | TIS620 | UCS2 | UJIS | UTF16 + | UTF16LE | UTF32 | UTF8 | UTF8MB3 | UTF8MB4 + ; + +transactionLevelBase + : REPEATABLE | COMMITTED | UNCOMMITTED | SERIALIZABLE + ; + +privilegesBase + : TABLES | ROUTINE | EXECUTE | FILE | PROCESS + | RELOAD | SHUTDOWN | SUPER | PRIVILEGES + ; + +intervalTypeBase + : QUARTER | MONTH | DAY | HOUR + | MINUTE | WEEK | SECOND | MICROSECOND + ; + +dataTypeBase + : DATE | TIME | TIMESTAMP | DATETIME | YEAR | ENUM | TEXT + ; + +keywordsCanBeId + : ACCOUNT | ACTION | ADMIN | AFTER | AGGREGATE | ALGORITHM | ANY | ARRAY + | AT | AUDIT_ADMIN | AUDIT_ABORT_EXEMPT | AUTHORS | AUTOCOMMIT | AUTOEXTEND_SIZE + | AUTO_INCREMENT | AUTHENTICATION_POLICY_ADMIN | AVG | AVG_ROW_LENGTH | ATTRIBUTE + | BACKUP_ADMIN | BEGIN | BINLOG | BINLOG_ADMIN | BINLOG_ENCRYPTION_ADMIN | BIT | BIT_AND | BIT_OR | BIT_XOR + | BLOCK | BOOL | BOOLEAN | BTREE | BUCKETS | CACHE | CASCADED | CHAIN | CHANGED + | CHANNEL | CHECKSUM | PAGE_CHECKSUM | CATALOG_NAME | CIPHER + | CLASS_ORIGIN | CLIENT | CLONE_ADMIN | CLOSE | CLUSTERING | COALESCE | CODE + | COLUMNS | COLUMN_FORMAT | COLUMN_NAME | COMMENT | COMMIT | COMPACT + | COMPLETION | COMPRESSED | COMPRESSION | CONCURRENT | CONDITION | CONNECT + | CONNECTION | CONNECTION_ADMIN | CONSISTENT | CONSTRAINT_CATALOG | CONSTRAINT_NAME + | CONSTRAINT_SCHEMA | CONTAINS | CONTEXT + | CONTRIBUTORS | COPY | COUNT | CPU | CURRENT | CURRENT_USER | CURSOR_NAME + | DATA | DATAFILE | DEALLOCATE + | DEFAULT | DEFAULT_AUTH | DEFINER | DELAY_KEY_WRITE | DES_KEY_FILE | DIAGNOSTICS | DIRECTORY + | DISABLE | DISCARD | DISK | DO | DUMPFILE | DUPLICATE + | DYNAMIC | EMPTY | ENABLE | ENCRYPTION | ENCRYPTION_KEY_ADMIN | END | ENDS | ENGINE | ENGINE_ATTRIBUTE | ENGINES | ENFORCED + | ERROR | ERRORS | ESCAPE | EUR | EVEN | EVENT | EVENTS | EVERY | EXCEPT + | EXCHANGE | EXCLUSIVE | EXPIRE | EXPORT | EXTENDED | EXTENT_SIZE | FAILED_LOGIN_ATTEMPTS | FAST | FAULTS + | FIELDS | FILE_BLOCK_SIZE | FILTER | FIREWALL_ADMIN | FIREWALL_EXEMPT | FIREWALL_USER | FIRST | FIXED | FLUSH + | FOLLOWS | FOUND | FULL | FUNCTION | GENERAL | GLOBAL | GRANTS | GROUP | GROUP_CONCAT + | GROUP_REPLICATION | GROUP_REPLICATION_ADMIN | HANDLER | HASH | HELP | HISTORY | HOST | HOSTS | IDENTIFIED + | IGNORED | IGNORE_SERVER_IDS | IMPORT | INDEXES | INITIAL_SIZE | INNODB_REDO_LOG_ARCHIVE + | INPLACE | INSERT_METHOD | INSTALL | INSTANCE | INSTANT | INTERNAL | INVOKE | INVOKER | IO + | IO_THREAD | IPC | ISO | ISOLATION | ISSUER | JIS | JSON | KEY_BLOCK_SIZE + | LAMBDA | LANGUAGE | LAST | LATERAL | LEAVES | LESS | LEVEL | LIST | LOCAL + | LOGFILE | LOGS | MASTER | MASTER_AUTO_POSITION + | MASTER_CONNECT_RETRY | MASTER_DELAY + | MASTER_HEARTBEAT_PERIOD | MASTER_HOST | MASTER_LOG_FILE + | MASTER_LOG_POS | MASTER_PASSWORD | MASTER_PORT + | MASTER_RETRY_COUNT | MASTER_SSL | MASTER_SSL_CA + | MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CIPHER + | MASTER_SSL_CRL | MASTER_SSL_CRLPATH | MASTER_SSL_KEY + | MASTER_TLS_VERSION | MASTER_USER + | MAX_CONNECTIONS_PER_HOUR | MAX_QUERIES_PER_HOUR + | MAX | MAX_ROWS | MAX_SIZE | MAX_UPDATES_PER_HOUR + | MAX_USER_CONNECTIONS | MEDIUM | MEMBER | MEMORY | MERGE | MESSAGE_TEXT + | MID | MIGRATE + | MIN | MIN_ROWS | MODE | MODIFY | MUTEX | MYSQL | MYSQL_ERRNO | NAME | NAMES + | NCHAR | NDB_STORED_USER | NESTED | NEVER | NEXT | NO | NOCOPY | NODEGROUP | NONE | NOWAIT | NUMBER | ODBC | OFFLINE | OFFSET + | OF | OJ | OLD_PASSWORD | ONE | ONLINE | ONLY | OPEN | OPTIMIZER_COSTS + | OPTIONAL | OPTIONS | ORDER | ORDINALITY | OWNER | PACK_KEYS | PAGE | PARSER | PARTIAL + | PARTITIONING | PARTITIONS | PASSWORD | PASSWORDLESS_USER_ADMIN | PASSWORD_LOCK_TIME | PATH | PERSIST_RO_VARIABLES_ADMIN | PHASE | PLUGINS + | PLUGIN_DIR | PLUGIN | PORT | PRECEDES | PREPARE | PRESERVE | PREV | PRIMARY + | PROCESSLIST | PROFILE | PROFILES | PROXY | QUERY | QUICK + | REBUILD | RECOVER | RECURSIVE | REDO_BUFFER_SIZE | REDUNDANT + | RELAY | RELAYLOG | RELAY_LOG_FILE | RELAY_LOG_POS | REMOVE + | REORGANIZE | REPAIR | REPLICATE_DO_DB | REPLICATE_DO_TABLE + | REPLICATE_IGNORE_DB | REPLICATE_IGNORE_TABLE + | REPLICATE_REWRITE_DB | REPLICATE_WILD_DO_TABLE + | REPLICATE_WILD_IGNORE_TABLE | REPLICATION | REPLICATION_APPLIER | REPLICATION_SLAVE_ADMIN | RESET + | RESOURCE_GROUP_ADMIN | RESOURCE_GROUP_USER | RESUME + | RETURNED_SQLSTATE | RETURNS | REUSE | ROLE | ROLE_ADMIN | ROLLBACK | ROLLUP | ROTATE | ROW | ROWS + | ROW_FORMAT | RTREE | S3 | SAVEPOINT | SCHEDULE | SCHEMA_NAME | SECURITY | SECONDARY_ENGINE_ATTRIBUTE | SERIAL | SERVER + | SESSION | SESSION_VARIABLES_ADMIN | SET_USER_ID | SHARE | SHARED | SHOW_ROUTINE | SIGNED | SIMPLE | SLAVE + | SLOW | SKIP_QUERY_REWRITE | SNAPSHOT | SOCKET | SOME | SONAME | SOUNDS | SOURCE + | SQL_AFTER_GTIDS | SQL_AFTER_MTS_GAPS | SQL_BEFORE_GTIDS + | SQL_BUFFER_RESULT | SQL_CACHE | SQL_NO_CACHE | SQL_THREAD + | STACKED | START | STARTS | STATS_AUTO_RECALC | STATS_PERSISTENT + | STATS_SAMPLE_PAGES | STATUS | STD | STDDEV | STDDEV_POP | STDDEV_SAMP | STOP | STORAGE | STRING + | SUBCLASS_ORIGIN | SUBJECT | SUBPARTITION | SUBPARTITIONS | SUM | SUSPEND | SWAPS + | SWITCHES | SYSTEM_VARIABLES_ADMIN | TABLE_NAME | TABLESPACE | TABLE_ENCRYPTION_ADMIN | TABLE_TYPE + | TEMPORARY | TEMPTABLE | THAN | TP_CONNECTION_ADMIN | TRADITIONAL + | TRANSACTION | TRANSACTIONAL | TRIGGERS | TRUNCATE | UNBOUNDED | UNDEFINED | UNDOFILE + | UNDO_BUFFER_SIZE | UNINSTALL | UNKNOWN | UNTIL | UPGRADE | USA | USER | USE_FRM | USER_RESOURCES + | VALIDATION | VALUE | VAR_POP | VAR_SAMP | VARIABLES | VARIANCE | VERSION_TOKEN_ADMIN | VIEW | VIRTUAL + | WAIT | WARNINGS | WITHOUT | WORK | WRAPPER | X509 | XA | XA_RECOVER_ADMIN | XML + ; + +functionNameBase + : ABS | ACOS | ADDDATE | ADDTIME | AES_DECRYPT | AES_ENCRYPT + | AREA | ASBINARY | ASIN | ASTEXT | ASWKB | ASWKT + | ASYMMETRIC_DECRYPT | ASYMMETRIC_DERIVE + | ASYMMETRIC_ENCRYPT | ASYMMETRIC_SIGN | ASYMMETRIC_VERIFY + | ATAN | ATAN2 | BENCHMARK | BIN | BIT_COUNT | BIT_LENGTH + | BUFFER | CEIL | CEILING | CENTROID | CHARACTER_LENGTH + | CHARSET | CHAR_LENGTH | COERCIBILITY | COLLATION + | COMPRESS | CONCAT | CONCAT_WS | CONNECTION_ID | CONV + | CONVERT_TZ | COS | COT | COUNT | CRC32 + | CREATE_ASYMMETRIC_PRIV_KEY | CREATE_ASYMMETRIC_PUB_KEY + | CREATE_DH_PARAMETERS | CREATE_DIGEST | CROSSES | CUME_DIST | DATABASE | DATE + | DATEDIFF | DATE_FORMAT | DAY | DAYNAME | DAYOFMONTH + | DAYOFWEEK | DAYOFYEAR | DECODE | DEGREES | DENSE_RANK | DES_DECRYPT + | DES_ENCRYPT | DIMENSION | DISJOINT | ELT | ENCODE + | ENCRYPT | ENDPOINT | ENVELOPE | EQUALS | EXP | EXPORT_SET + | EXTERIORRING | EXTRACTVALUE | FIELD | FIND_IN_SET | FIRST_VALUE | FLOOR + | FORMAT | FOUND_ROWS | FROM_BASE64 | FROM_DAYS + | FROM_UNIXTIME | GEOMCOLLFROMTEXT | GEOMCOLLFROMWKB + | GEOMETRYCOLLECTION | GEOMETRYCOLLECTIONFROMTEXT + | GEOMETRYCOLLECTIONFROMWKB | GEOMETRYFROMTEXT + | GEOMETRYFROMWKB | GEOMETRYN | GEOMETRYTYPE | GEOMFROMTEXT + | GEOMFROMWKB | GET_FORMAT | GET_LOCK | GLENGTH | GREATEST + | GTID_SUBSET | GTID_SUBTRACT | HEX | HOUR | IFNULL + | INET6_ATON | INET6_NTOA | INET_ATON | INET_NTOA | INSTR + | INTERIORRINGN | INTERSECTS | INVISIBLE + | ISCLOSED | ISEMPTY | ISNULL + | ISSIMPLE | IS_FREE_LOCK | IS_IPV4 | IS_IPV4_COMPAT + | IS_IPV4_MAPPED | IS_IPV6 | IS_USED_LOCK | LAG | LAST_INSERT_ID | LAST_VALUE + | LCASE | LEAD | LEAST | LEFT | LENGTH | LINEFROMTEXT | LINEFROMWKB + | LINESTRING | LINESTRINGFROMTEXT | LINESTRINGFROMWKB | LN + | LOAD_FILE | LOCATE | LOG | LOG10 | LOG2 | LOWER | LPAD + | LTRIM | MAKEDATE | MAKETIME | MAKE_SET | MASTER_POS_WAIT + | MBRCONTAINS | MBRDISJOINT | MBREQUAL | MBRINTERSECTS + | MBROVERLAPS | MBRTOUCHES | MBRWITHIN | MD5 | MICROSECOND + | MINUTE | MLINEFROMTEXT | MLINEFROMWKB | MOD| MONTH | MONTHNAME + | MPOINTFROMTEXT | MPOINTFROMWKB | MPOLYFROMTEXT + | MPOLYFROMWKB | MULTILINESTRING | MULTILINESTRINGFROMTEXT + | MULTILINESTRINGFROMWKB | MULTIPOINT | MULTIPOINTFROMTEXT + | MULTIPOINTFROMWKB | MULTIPOLYGON | MULTIPOLYGONFROMTEXT + | MULTIPOLYGONFROMWKB | NAME_CONST | NTH_VALUE | NTILE | NULLIF | NUMGEOMETRIES + | NUMINTERIORRINGS | NUMPOINTS | OCT | OCTET_LENGTH | ORD + | OVERLAPS | PERCENT_RANK | PERIOD_ADD | PERIOD_DIFF | PI | POINT + | POINTFROMTEXT | POINTFROMWKB | POINTN | POLYFROMTEXT + | POLYFROMWKB | POLYGON | POLYGONFROMTEXT | POLYGONFROMWKB + | POSITION | POW | POWER | QUARTER | QUOTE | RADIANS | RAND | RANDOM | RANK + | RANDOM_BYTES | RELEASE_LOCK | REVERSE | RIGHT | ROUND + | ROW_COUNT | ROW_NUMBER | RPAD | RTRIM | SCHEMA | SECOND | SEC_TO_TIME + | SESSION_USER | SESSION_VARIABLES_ADMIN + | SHA | SHA1 | SHA2 | SIGN | SIN | SLEEP + | SOUNDEX | SQL_THREAD_WAIT_AFTER_GTIDS | SQRT | SRID + | STARTPOINT | STRCMP | STR_TO_DATE | ST_AREA | ST_ASBINARY + | ST_ASTEXT | ST_ASWKB | ST_ASWKT | ST_BUFFER | ST_CENTROID + | ST_CONTAINS | ST_CROSSES | ST_DIFFERENCE | ST_DIMENSION + | ST_DISJOINT | ST_DISTANCE | ST_ENDPOINT | ST_ENVELOPE + | ST_EQUALS | ST_EXTERIORRING | ST_GEOMCOLLFROMTEXT + | ST_GEOMCOLLFROMTXT | ST_GEOMCOLLFROMWKB + | ST_GEOMETRYCOLLECTIONFROMTEXT + | ST_GEOMETRYCOLLECTIONFROMWKB | ST_GEOMETRYFROMTEXT + | ST_GEOMETRYFROMWKB | ST_GEOMETRYN | ST_GEOMETRYTYPE + | ST_GEOMFROMTEXT | ST_GEOMFROMWKB | ST_INTERIORRINGN + | ST_INTERSECTION | ST_INTERSECTS | ST_ISCLOSED | ST_ISEMPTY + | ST_ISSIMPLE | ST_LINEFROMTEXT | ST_LINEFROMWKB + | ST_LINESTRINGFROMTEXT | ST_LINESTRINGFROMWKB + | ST_NUMGEOMETRIES | ST_NUMINTERIORRING + | ST_NUMINTERIORRINGS | ST_NUMPOINTS | ST_OVERLAPS + | ST_POINTFROMTEXT | ST_POINTFROMWKB | ST_POINTN + | ST_POLYFROMTEXT | ST_POLYFROMWKB | ST_POLYGONFROMTEXT + | ST_POLYGONFROMWKB | ST_SRID | ST_STARTPOINT + | ST_SYMDIFFERENCE | ST_TOUCHES | ST_UNION | ST_WITHIN + | ST_X | ST_Y | SUBDATE | SUBSTRING_INDEX | SUBTIME + | SYSTEM_USER | TAN | TIME | TIMEDIFF | TIMESTAMP + | TIMESTAMPADD | TIMESTAMPDIFF | TIME_FORMAT | TIME_TO_SEC + | TOUCHES | TO_BASE64 | TO_DAYS | TO_SECONDS | UCASE + | UNCOMPRESS | UNCOMPRESSED_LENGTH | UNHEX | UNIX_TIMESTAMP + | UPDATEXML | UPPER | UUID | UUID_SHORT + | VALIDATE_PASSWORD_STRENGTH | VERSION | VISIBLE + | WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS | WEEK | WEEKDAY + | WEEKOFYEAR | WEIGHT_STRING | WITHIN | YEAR | YEARWEEK + | Y_FUNCTION | X_FUNCTION + | JSON_ARRAY | JSON_OBJECT | JSON_QUOTE | JSON_CONTAINS | JSON_CONTAINS_PATH + | JSON_EXTRACT | JSON_KEYS | JSON_OVERLAPS | JSON_SEARCH | JSON_VALUE + | JSON_ARRAY_APPEND | JSON_ARRAY_INSERT | JSON_INSERT | JSON_MERGE + | JSON_MERGE_PATCH | JSON_MERGE_PRESERVE | JSON_REMOVE | JSON_REPLACE + | JSON_SET | JSON_UNQUOTE | JSON_DEPTH | JSON_LENGTH | JSON_TYPE + | JSON_VALID | JSON_TABLE | JSON_SCHEMA_VALID | JSON_SCHEMA_VALIDATION_REPORT + | JSON_PRETTY | JSON_STORAGE_FREE | JSON_STORAGE_SIZE | JSON_ARRAYAGG + | JSON_OBJECTAGG + ; diff --git a/pymysqlreplication/ddl_parser/MySqlParser.py b/pymysqlreplication/ddl_parser/MySqlParser.py new file mode 100644 index 00000000..262a91c2 --- /dev/null +++ b/pymysqlreplication/ddl_parser/MySqlParser.py @@ -0,0 +1,57223 @@ +# Generated from MySqlParser.g4 by ANTLR 4.13.0 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + +def serializedATN(): + return [ + 4,1,1162,7413,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2, + 6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13, + 7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19, + 2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26, + 7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32, + 2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39, + 7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45, + 2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52, + 7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58, + 2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65, + 7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71, + 2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78, + 7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84, + 2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, + 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97, + 2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7, + 103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, + 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, + 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, + 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, + 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, + 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, + 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, + 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, + 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, + 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, + 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, + 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, + 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, + 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, + 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, + 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, + 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, + 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, + 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, + 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, + 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, + 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, + 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, + 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, + 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, + 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, + 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, + 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, + 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, + 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, + 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, + 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, + 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, + 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, + 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, + 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, + 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, + 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, + 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, + 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, + 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, + 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, + 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, + 7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350, + 2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356, + 7,356,1,0,3,0,716,8,0,1,0,1,0,3,0,720,8,0,1,0,1,0,1,1,1,1,1,1,3, + 1,727,8,1,1,1,3,1,730,8,1,1,1,5,1,733,8,1,10,1,12,1,736,9,1,1,1, + 1,1,1,1,3,1,741,8,1,1,1,3,1,744,8,1,1,1,3,1,747,8,1,1,2,1,2,1,2, + 1,2,1,2,1,2,1,2,3,2,756,8,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4, + 798,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5, + 813,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,824,8,6,1,7,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,841,8,7, + 1,8,1,8,1,8,3,8,846,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 3,9,858,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,3,10,885,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,894, + 8,11,1,12,1,12,1,12,3,12,899,8,12,1,12,1,12,5,12,903,8,12,10,12, + 12,12,906,9,12,1,13,1,13,3,13,910,8,13,1,13,1,13,3,13,914,8,13,1, + 13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,923,8,13,1,13,3,13,926,8,13, + 1,13,3,13,929,8,13,1,13,1,13,3,13,933,8,13,1,13,1,13,1,13,1,14,1, + 14,3,14,940,8,14,1,14,3,14,943,8,14,1,14,1,14,1,14,3,14,948,8,14, + 1,14,1,14,1,14,1,14,5,14,954,8,14,10,14,12,14,957,9,14,1,14,1,14, + 3,14,961,8,14,1,14,1,14,1,14,3,14,966,8,14,1,14,5,14,969,8,14,10, + 14,12,14,972,9,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3, + 15,983,8,15,1,15,3,15,986,8,15,1,15,1,15,3,15,990,8,15,1,15,3,15, + 993,8,15,1,15,1,15,3,15,997,8,15,1,15,3,15,1000,8,15,1,15,1,15,3, + 15,1004,8,15,1,15,3,15,1007,8,15,1,15,3,15,1010,8,15,1,15,1,15,3, + 15,1014,8,15,1,15,3,15,1017,8,15,1,15,1,15,3,15,1021,8,15,1,15,1, + 15,1,16,1,16,3,16,1027,8,16,1,16,1,16,1,16,1,16,3,16,1033,8,16,1, + 16,1,16,5,16,1037,8,16,10,16,12,16,1040,9,16,1,16,1,16,5,16,1044, + 8,16,10,16,12,16,1047,9,16,1,16,1,16,1,17,1,17,3,17,1053,8,17,1, + 17,3,17,1056,8,17,1,17,1,17,3,17,1060,8,17,1,17,1,17,1,17,3,17,1065, + 8,17,1,17,1,17,5,17,1069,8,17,10,17,12,17,1072,9,17,1,17,1,17,1, + 17,1,17,5,17,1078,8,17,10,17,12,17,1081,9,17,1,17,1,17,3,17,1085, + 8,17,1,18,1,18,1,18,3,18,1090,8,18,1,18,1,18,1,18,5,18,1095,8,18, + 10,18,12,18,1098,9,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,5,19,1112,8,19,10,19,12,19,1115,9,19,1,19,1,19, + 1,20,1,20,3,20,1121,8,20,1,20,1,20,3,20,1125,8,20,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,1,20,3,20,1135,8,20,1,20,1,20,3,20,1139,8,20, + 1,20,1,20,3,20,1143,8,20,1,20,1,20,3,20,1147,8,20,1,20,1,20,3,20, + 1151,8,20,1,20,5,20,1154,8,20,10,20,12,20,1157,9,20,3,20,1159,8, + 20,1,20,3,20,1162,8,20,1,20,3,20,1165,8,20,1,20,3,20,1168,8,20,1, + 20,1,20,1,20,1,20,3,20,1174,8,20,1,20,1,20,3,20,1178,8,20,1,20,1, + 20,1,20,1,20,3,20,1184,8,20,1,20,5,20,1187,8,20,10,20,12,20,1190, + 9,20,3,20,1192,8,20,1,20,3,20,1195,8,20,3,20,1197,8,20,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1208,8,21,1,21,1,21,3,21, + 1212,8,21,1,21,3,21,1215,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,1,22,1,22,1,22,3,22,1229,8,22,1,22,3,22,1232,8,22,1,22, + 1,22,3,22,1236,8,22,1,22,3,22,1239,8,22,1,22,1,22,3,22,1243,8,22, + 1,22,3,22,1246,8,22,1,22,1,22,3,22,1250,8,22,1,22,3,22,1253,8,22, + 1,22,1,22,3,22,1257,8,22,1,22,3,22,1260,8,22,1,22,3,22,1263,8,22, + 1,22,1,22,3,22,1267,8,22,1,22,3,22,1270,8,22,1,22,1,22,3,22,1274, + 8,22,1,22,1,22,1,23,1,23,3,23,1280,8,23,1,23,1,23,1,23,1,23,1,23, + 1,23,1,23,1,23,1,23,1,23,1,23,3,23,1293,8,23,1,23,1,23,1,24,1,24, + 3,24,1299,8,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,5,25,1308,8,25, + 10,25,12,25,1311,9,25,1,25,1,25,3,25,1315,8,25,1,25,1,25,1,25,1, + 25,1,25,1,25,3,25,1323,8,25,1,26,1,26,1,27,1,27,1,28,1,28,3,28,1331, + 8,28,1,28,1,28,1,28,3,28,1336,8,28,1,28,3,28,1339,8,28,1,28,1,28, + 1,28,3,28,1344,8,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1352,8,28, + 1,28,1,28,1,28,3,28,1357,8,28,1,28,1,28,1,28,1,28,3,28,1363,8,28, + 1,28,1,28,1,28,3,28,1368,8,28,1,28,1,28,3,28,1372,8,28,3,28,1374, + 8,28,1,29,3,29,1377,8,29,1,29,1,29,3,29,1381,8,29,1,29,1,29,3,29, + 1385,8,29,1,29,3,29,1388,8,29,1,29,1,29,3,29,1392,8,29,1,29,1,29, + 3,29,1396,8,29,1,29,1,29,3,29,1400,8,29,1,29,1,29,1,29,1,29,3,29, + 1406,8,29,1,29,3,29,1409,8,29,1,30,1,30,1,30,1,30,1,30,3,30,1416, + 8,30,1,31,1,31,1,31,1,31,1,31,1,31,3,31,1424,8,31,3,31,1426,8,31, + 1,32,1,32,1,32,5,32,1431,8,32,10,32,12,32,1434,9,32,1,32,1,32,1, + 32,3,32,1439,8,32,1,32,1,32,1,32,1,32,5,32,1445,8,32,10,32,12,32, + 1448,9,32,3,32,1450,8,32,1,32,1,32,1,32,5,32,1455,8,32,10,32,12, + 32,1458,9,32,3,32,1460,8,32,3,32,1462,8,32,1,33,1,33,1,33,1,33,3, + 33,1468,8,33,1,34,1,34,1,34,1,34,3,34,1474,8,34,1,34,1,34,1,35,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,1491, + 8,35,1,36,1,36,1,36,1,36,1,36,3,36,1498,8,36,1,37,1,37,1,37,1,38, + 1,38,3,38,1505,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,3,38,1517,8,38,1,38,1,38,1,38,3,38,1522,8,38,1,38,3,38,1525, + 8,38,1,39,3,39,1528,8,39,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41, + 1,41,1,41,1,41,3,41,1541,8,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41, + 1,41,1,41,1,41,1,41,3,41,1554,8,41,1,41,1,41,1,41,3,41,1559,8,41, + 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,3,42,1575,8,42,1,43,1,43,1,43,1,43,5,43,1581,8,43,10,43,12, + 43,1584,9,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44,1593,8,44,1, + 44,3,44,1596,8,44,1,44,3,44,1599,8,44,1,45,1,45,5,45,1603,8,45,10, + 45,12,45,1606,9,45,1,45,3,45,1609,8,45,1,45,3,45,1612,8,45,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1623,8,46,1,46,3,46, + 1626,8,46,1,46,1,46,1,46,3,46,1631,8,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,3,46,1644,8,46,1,46,1,46,1,46,1,46, + 1,46,3,46,1651,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1658,8,46,3,46, + 1660,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1667,8,46,1,47,1,47,3,47, + 1671,8,47,3,47,1673,8,47,1,47,1,47,1,47,3,47,1678,8,47,1,47,3,47, + 1681,8,47,1,47,1,47,5,47,1685,8,47,10,47,12,47,1688,9,47,1,47,1, + 47,3,47,1692,8,47,3,47,1694,8,47,1,47,1,47,3,47,1698,8,47,1,47,3, + 47,1701,8,47,1,47,3,47,1704,8,47,1,47,1,47,5,47,1708,8,47,10,47, + 12,47,1711,9,47,1,47,1,47,3,47,1715,8,47,3,47,1717,8,47,1,47,1,47, + 1,47,3,47,1722,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1729,8,47,3,47, + 1731,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1738,8,47,1,48,1,48,1,48, + 3,48,1743,8,48,1,48,1,48,3,48,1747,8,48,1,48,3,48,1750,8,48,1,49, + 1,49,1,49,1,49,1,49,1,49,3,49,1758,8,49,1,49,1,49,1,49,1,49,1,49, + 1,49,3,49,1766,8,49,3,49,1768,8,49,1,50,1,50,1,50,1,50,1,50,1,50, + 1,50,1,50,3,50,1778,8,50,1,51,1,51,3,51,1782,8,51,1,51,3,51,1785, + 8,51,1,51,1,51,5,51,1789,8,51,10,51,12,51,1792,9,51,1,51,1,51,3, + 51,1796,8,51,1,51,3,51,1799,8,51,1,51,1,51,5,51,1803,8,51,10,51, + 12,51,1806,9,51,3,51,1808,8,51,1,52,1,52,3,52,1812,8,52,1,52,3,52, + 1815,8,52,1,52,1,52,3,52,1819,8,52,1,52,1,52,1,52,3,52,1824,8,52, + 1,52,1,52,1,52,3,52,1829,8,52,1,52,1,52,1,52,3,52,1834,8,52,1,52, + 1,52,3,52,1838,8,52,1,52,1,52,3,52,1842,8,52,1,52,1,52,3,52,1846, + 8,52,1,52,1,52,3,52,1850,8,52,1,52,1,52,3,52,1854,8,52,1,52,1,52, + 3,52,1858,8,52,1,52,1,52,1,52,3,52,1863,8,52,1,52,1,52,1,52,3,52, + 1868,8,52,1,52,1,52,1,52,3,52,1873,8,52,1,52,1,52,1,52,1,52,3,52, + 1879,8,52,1,52,1,52,1,52,3,52,1884,8,52,1,52,1,52,1,52,3,52,1889, + 8,52,1,52,1,52,1,52,3,52,1894,8,52,1,52,1,52,1,52,3,52,1899,8,52, + 1,52,1,52,1,52,3,52,1904,8,52,1,52,1,52,1,52,1,52,3,52,1910,8,52, + 1,52,1,52,1,52,3,52,1915,8,52,1,52,1,52,1,52,3,52,1920,8,52,1,52, + 1,52,1,52,3,52,1925,8,52,1,52,1,52,1,52,3,52,1930,8,52,1,52,1,52, + 1,52,3,52,1935,8,52,1,52,1,52,1,52,3,52,1940,8,52,1,52,1,52,1,52, + 3,52,1945,8,52,1,52,1,52,1,52,1,52,1,52,3,52,1952,8,52,1,52,1,52, + 1,52,3,52,1957,8,52,1,52,1,52,1,52,3,52,1962,8,52,1,52,1,52,1,52, + 3,52,1967,8,52,1,52,1,52,3,52,1971,8,52,1,52,1,52,1,52,3,52,1976, + 8,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1984,8,52,1,52,1,52,1,52, + 3,52,1989,8,52,1,52,1,52,1,52,1,52,3,52,1995,8,52,1,53,1,53,1,54, + 1,54,1,54,1,55,1,55,1,55,1,55,1,55,3,55,2007,8,55,1,55,1,55,1,55, + 1,55,1,55,3,55,2014,8,55,3,55,2016,8,55,1,55,1,55,1,55,1,55,5,55, + 2022,8,55,10,55,12,55,2025,9,55,1,55,1,55,3,55,2029,8,55,1,56,3, + 56,2032,8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2040,8,56,1,56,1, + 56,1,56,1,56,3,56,2046,8,56,1,56,1,56,3,56,2050,8,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2063,8,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2075,8,56,3,56,2077, + 8,56,1,57,3,57,2080,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2088, + 8,57,1,57,1,57,1,57,1,57,3,57,2094,8,57,1,57,1,57,1,57,1,57,3,57, + 2100,8,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2111, + 8,58,10,58,12,58,2114,9,58,1,58,1,58,5,58,2118,8,58,10,58,12,58, + 2121,9,58,1,58,1,58,1,58,1,58,5,58,2127,8,58,10,58,12,58,2130,9, + 58,1,58,1,58,3,58,2134,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5, + 58,2143,8,58,10,58,12,58,2146,9,58,1,58,1,58,1,58,1,58,5,58,2152, + 8,58,10,58,12,58,2155,9,58,1,58,1,58,3,58,2159,8,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,5,58,2169,8,58,10,58,12,58,2172,9,58, + 1,58,1,58,5,58,2176,8,58,10,58,12,58,2179,9,58,1,58,1,58,1,58,1, + 58,5,58,2185,8,58,10,58,12,58,2188,9,58,1,58,1,58,3,58,2192,8,58, + 1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2202,8,58,10,58,12, + 58,2205,9,58,1,58,1,58,5,58,2209,8,58,10,58,12,58,2212,9,58,1,58, + 1,58,1,58,1,58,5,58,2218,8,58,10,58,12,58,2221,9,58,1,58,1,58,3, + 58,2225,8,58,1,58,1,58,1,58,5,58,2230,8,58,10,58,12,58,2233,9,58, + 1,58,1,58,1,58,1,58,5,58,2239,8,58,10,58,12,58,2242,9,58,1,58,1, + 58,3,58,2246,8,58,3,58,2248,8,58,1,59,1,59,1,59,3,59,2253,8,59,1, + 60,1,60,1,60,1,60,4,60,2259,8,60,11,60,12,60,2260,1,60,1,60,1,61, + 1,61,1,61,5,61,2268,8,61,10,61,12,61,2271,9,61,1,62,3,62,2274,8, + 62,1,62,3,62,2277,8,62,1,62,1,62,3,62,2281,8,62,1,62,1,62,1,62,3, + 62,2286,8,62,1,62,1,62,1,62,1,62,3,62,2292,8,62,1,62,1,62,1,62,1, + 62,3,62,2298,8,62,1,62,1,62,1,62,3,62,2303,8,62,1,62,1,62,1,62,3, + 62,2308,8,62,1,62,1,62,1,62,3,62,2313,8,62,1,62,1,62,1,62,3,62,2318, + 8,62,1,62,3,62,2321,8,62,1,63,1,63,1,63,3,63,2326,8,63,1,63,4,63, + 2329,8,63,11,63,12,63,2330,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,3,63,2341,8,63,1,64,1,64,3,64,2345,8,64,1,64,1,64,1,64,1,64,1, + 64,3,64,2352,8,64,1,64,1,64,1,64,3,64,2357,8,64,1,64,3,64,2360,8, + 64,1,64,1,64,1,64,3,64,2365,8,64,1,64,3,64,2368,8,64,1,64,1,64,3, + 64,2372,8,64,1,64,1,64,3,64,2376,8,64,1,65,1,65,1,65,1,65,5,65,2382, + 8,65,10,65,12,65,2385,9,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2403,8,67,1,67,3, + 67,2406,8,67,1,67,3,67,2409,8,67,1,67,1,67,3,67,2413,8,67,1,67,1, + 67,1,68,1,68,1,68,1,68,5,68,2421,8,68,10,68,12,68,2424,9,68,1,69, + 1,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69,2434,8,69,10,69,12,69,2437, + 9,69,1,69,1,69,1,70,1,70,3,70,2443,8,70,1,70,3,70,2446,8,70,1,70, + 1,70,1,70,3,70,2451,8,70,1,70,1,70,1,70,5,70,2456,8,70,10,70,12, + 70,2459,9,70,3,70,2461,8,70,1,70,3,70,2464,8,70,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,71,3,71,2475,8,71,1,71,3,71,2478,8,71,1, + 71,1,71,3,71,2482,8,71,1,71,1,71,1,72,1,72,1,72,1,72,3,72,2490,8, + 72,1,72,3,72,2493,8,72,1,72,1,72,1,72,3,72,2498,8,72,1,72,1,72,1, + 72,1,72,1,72,1,72,3,72,2506,8,72,1,72,1,72,1,72,1,72,3,72,2512,8, + 72,1,72,1,72,3,72,2516,8,72,1,73,1,73,3,73,2520,8,73,1,73,5,73,2523, + 8,73,10,73,12,73,2526,9,73,1,73,1,73,3,73,2530,8,73,1,73,1,73,1, + 73,1,73,1,73,3,73,2537,8,73,1,73,1,73,3,73,2541,8,73,1,73,1,73,1, + 73,1,73,1,73,1,73,1,73,5,73,2550,8,73,10,73,12,73,2553,9,73,1,73, + 1,73,1,73,1,73,1,73,3,73,2560,8,73,1,73,3,73,2563,8,73,1,73,1,73, + 5,73,2567,8,73,10,73,12,73,2570,9,73,1,73,1,73,1,73,3,73,2575,8, + 73,3,73,2577,8,73,1,73,1,73,1,73,3,73,2582,8,73,1,73,3,73,2585,8, + 73,1,73,1,73,5,73,2589,8,73,10,73,12,73,2592,9,73,1,73,1,73,1,73, + 3,73,2597,8,73,3,73,2599,8,73,1,73,1,73,3,73,2603,8,73,1,73,3,73, + 2606,8,73,1,73,3,73,2609,8,73,1,73,1,73,5,73,2613,8,73,10,73,12, + 73,2616,9,73,1,73,1,73,1,73,3,73,2621,8,73,1,73,3,73,2624,8,73,1, + 73,1,73,5,73,2628,8,73,10,73,12,73,2631,9,73,1,73,1,73,1,73,3,73, + 2636,8,73,3,73,2638,8,73,1,73,1,73,1,73,3,73,2643,8,73,1,73,1,73, + 1,73,1,73,1,73,1,73,3,73,2651,8,73,3,73,2653,8,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,3,73,2662,8,73,1,73,3,73,2665,8,73,1,73,3,73, + 2668,8,73,1,73,1,73,1,73,3,73,2673,8,73,3,73,2675,8,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,3,73,2684,8,73,1,73,3,73,2687,8,73,1,73, + 3,73,2690,8,73,1,73,1,73,1,73,3,73,2695,8,73,3,73,2697,8,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,3,73,2706,8,73,1,73,1,73,1,73,3,73, + 2711,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2719,8,73,1,73,1,73, + 3,73,2723,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2731,8,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2741,8,73,1,73,1,73,1,73, + 3,73,2746,8,73,1,73,1,73,1,73,1,73,1,73,3,73,2753,8,73,1,73,1,73, + 3,73,2757,8,73,1,73,1,73,3,73,2761,8,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73, + 2780,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2790,8,73, + 1,73,1,73,1,73,1,73,3,73,2796,8,73,1,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2813,8,73,1,73, + 1,73,3,73,2817,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73, + 2827,8,73,1,73,1,73,1,73,3,73,2832,8,73,1,73,3,73,2835,8,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,3,73,2844,8,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,3,73,2855,8,73,1,73,1,73,1,73,1,73,5,73, + 2861,8,73,10,73,12,73,2864,9,73,1,73,1,73,1,73,3,73,2869,8,73,1, + 74,1,74,1,74,1,74,1,74,1,74,5,74,2877,8,74,10,74,12,74,2880,9,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,2891,8,74,1,74, + 1,74,1,74,1,74,1,74,3,74,2898,8,74,1,74,1,74,1,74,1,74,1,74,3,74, + 2905,8,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 5,74,2918,8,74,10,74,12,74,2921,9,74,1,74,1,74,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,3,74,2933,8,74,1,74,1,74,1,74,1,74,3,74,2939, + 8,74,1,74,1,74,1,74,1,74,3,74,2945,8,74,1,74,1,74,1,74,1,74,3,74, + 2951,8,74,1,74,1,74,1,74,1,74,3,74,2957,8,74,1,74,1,74,1,74,1,74, + 3,74,2963,8,74,1,74,1,74,1,74,1,74,3,74,2969,8,74,1,75,1,75,1,75, + 3,75,2974,8,75,1,75,1,75,1,76,1,76,1,76,3,76,2981,8,76,1,76,1,76, + 1,77,1,77,1,77,3,77,2988,8,77,1,77,1,77,1,77,1,77,1,77,3,77,2995, + 8,77,1,77,1,77,1,77,3,77,3000,8,77,1,77,5,77,3003,8,77,10,77,12, + 77,3006,9,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1, + 79,3,79,3019,8,79,1,79,1,79,1,80,1,80,1,80,3,80,3026,8,80,1,80,1, + 80,1,81,1,81,1,81,3,81,3033,8,81,1,81,1,81,1,82,1,82,3,82,3039,8, + 82,1,82,1,82,3,82,3043,8,82,1,82,1,82,3,82,3047,8,82,1,83,1,83,1, + 83,1,83,1,83,3,83,3054,8,83,1,83,3,83,3057,8,83,1,84,1,84,1,84,3, + 84,3062,8,84,1,84,1,84,1,85,1,85,1,85,3,85,3069,8,85,1,85,1,85,1, + 85,5,85,3074,8,85,10,85,12,85,3077,9,85,1,85,3,85,3080,8,85,1,86, + 1,86,1,86,3,86,3085,8,86,1,86,1,86,1,86,5,86,3090,8,86,10,86,12, + 86,3093,9,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,5,87,3103,8, + 87,10,87,12,87,3106,9,87,3,87,3108,8,87,1,87,1,87,1,87,3,87,3113, + 8,87,1,87,1,87,1,87,3,87,3118,8,87,5,87,3120,8,87,10,87,12,87,3123, + 9,87,1,87,1,87,1,87,3,87,3128,8,87,1,88,1,88,1,88,1,88,1,88,5,88, + 3135,8,88,10,88,12,88,3138,9,88,1,89,1,89,1,89,1,89,1,90,1,90,3, + 90,3146,8,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,3,91,3155,8,91,1, + 91,3,91,3158,8,91,1,92,1,92,3,92,3162,8,92,1,93,1,93,1,93,1,94,1, + 94,1,94,1,94,3,94,3171,8,94,1,95,1,95,3,95,3175,8,95,1,95,3,95,3178, + 8,95,1,95,3,95,3181,8,95,1,95,1,95,1,95,1,95,3,95,3187,8,95,1,95, + 3,95,3190,8,95,1,95,1,95,1,95,1,95,3,95,3196,8,95,1,95,1,95,3,95, + 3200,8,95,1,95,3,95,3203,8,95,1,95,1,95,1,95,1,95,5,95,3209,8,95, + 10,95,12,95,3212,9,95,3,95,3214,8,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,95,5,95,3223,8,95,10,95,12,95,3226,9,95,3,95,3228,8,95,1,96, + 1,96,1,96,3,96,3233,8,96,1,96,3,96,3236,8,96,1,96,1,96,1,96,3,96, + 3241,8,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,3,96,3251,8,96, + 1,96,1,96,1,96,3,96,3256,8,96,1,96,1,96,4,96,3260,8,96,11,96,12, + 96,3261,3,96,3264,8,96,1,96,1,96,4,96,3268,8,96,11,96,12,96,3269, + 3,96,3272,8,96,1,96,1,96,1,96,1,96,3,96,3278,8,96,1,96,1,96,1,96, + 1,96,5,96,3284,8,96,10,96,12,96,3287,9,96,1,96,1,96,3,96,3291,8, + 96,1,96,1,96,1,96,1,96,5,96,3297,8,96,10,96,12,96,3300,9,96,3,96, + 3302,8,96,1,97,1,97,1,97,3,97,3307,8,97,1,97,3,97,3310,8,97,1,97, + 1,97,1,97,3,97,3315,8,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,3323, + 8,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,3331,8,97,1,97,1,97,1,97, + 1,97,3,97,3337,8,97,1,97,1,97,1,97,1,97,5,97,3343,8,97,10,97,12, + 97,3346,9,97,1,97,1,97,3,97,3350,8,97,1,97,1,97,1,97,1,97,5,97,3356, + 8,97,10,97,12,97,3359,9,97,3,97,3361,8,97,1,98,1,98,3,98,3365,8, + 98,1,98,3,98,3368,8,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3376,8, + 98,1,98,1,98,1,98,1,98,3,98,3382,8,98,1,98,1,98,1,98,1,98,1,98,5, + 98,3389,8,98,10,98,12,98,3392,9,98,3,98,3394,8,98,1,99,1,99,3,99, + 3398,8,99,1,99,1,99,3,99,3402,8,99,1,99,1,99,4,99,3406,8,99,11,99, + 12,99,3407,1,99,1,99,3,99,3412,8,99,1,99,1,99,3,99,3416,8,99,3,99, + 3418,8,99,1,99,3,99,3421,8,99,1,99,3,99,3424,8,99,1,99,3,99,3427, + 8,99,1,99,1,99,4,99,3431,8,99,11,99,12,99,3432,1,99,1,99,3,99,3437, + 8,99,1,99,3,99,3440,8,99,1,99,3,99,3443,8,99,1,99,3,99,3446,8,99, + 1,99,3,99,3449,8,99,1,99,1,99,1,99,4,99,3454,8,99,11,99,12,99,3455, + 3,99,3458,8,99,1,100,1,100,3,100,3462,8,100,1,101,1,101,1,101,3, + 101,3467,8,101,1,101,1,101,1,101,1,101,3,101,3473,8,101,1,101,5, + 101,3476,8,101,10,101,12,101,3479,9,101,1,102,1,102,1,102,1,102, + 3,102,3485,8,102,1,102,1,102,1,102,1,102,3,102,3491,8,102,1,102, + 5,102,3494,8,102,10,102,12,102,3497,9,102,3,102,3499,8,102,1,103, + 1,103,1,103,1,103,3,103,3505,8,103,1,104,1,104,3,104,3509,8,104, + 1,105,1,105,1,105,1,105,1,105,1,105,3,105,3517,8,105,1,106,1,106, + 3,106,3521,8,106,1,106,3,106,3524,8,106,1,106,3,106,3527,8,106,1, + 106,1,106,1,106,3,106,3532,8,106,1,106,3,106,3535,8,106,1,106,1, + 106,1,106,1,106,1,106,3,106,3542,8,106,1,106,1,106,3,106,3546,8, + 106,1,106,3,106,3549,8,106,1,106,1,106,3,106,3553,8,106,1,107,1, + 107,3,107,3557,8,107,1,107,3,107,3560,8,107,1,107,3,107,3563,8,107, + 1,107,1,107,1,107,3,107,3568,8,107,1,107,1,107,1,107,1,107,3,107, + 3574,8,107,5,107,3576,8,107,10,107,12,107,3579,9,107,1,107,1,107, + 1,107,1,107,1,107,1,107,1,107,3,107,3588,8,107,1,107,1,107,1,107, + 1,107,3,107,3594,8,107,5,107,3596,8,107,10,107,12,107,3599,9,107, + 1,107,1,107,1,107,3,107,3604,8,107,1,107,1,107,3,107,3608,8,107, + 1,108,1,108,1,108,1,108,3,108,3614,8,108,1,108,3,108,3617,8,108, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109, + 3629,8,109,1,109,1,109,3,109,3633,8,109,1,109,1,109,3,109,3637,8, + 109,1,110,1,110,1,110,1,110,1,110,1,110,3,110,3645,8,110,1,110,1, + 110,3,110,3649,8,110,1,111,1,111,1,111,1,111,1,112,1,112,3,112,3657, + 8,112,1,112,3,112,3660,8,112,1,112,1,112,3,112,3664,8,112,1,112, + 3,112,3667,8,112,1,112,1,112,1,112,1,112,5,112,3673,8,112,10,112, + 12,112,3676,9,112,1,112,1,112,3,112,3680,8,112,1,112,3,112,3683, + 8,112,1,112,3,112,3686,8,112,1,113,1,113,3,113,3690,8,113,1,113, + 3,113,3693,8,113,1,113,1,113,1,113,1,113,1,113,5,113,3700,8,113, + 10,113,12,113,3703,9,113,1,113,1,113,3,113,3707,8,113,1,114,1,114, + 1,114,1,114,1,114,5,114,3714,8,114,10,114,12,114,3717,9,114,1,115, + 1,115,3,115,3721,8,115,1,116,1,116,1,116,5,116,3726,8,116,10,116, + 12,116,3729,9,116,1,117,1,117,5,117,3733,8,117,10,117,12,117,3736, + 9,117,1,117,1,117,1,117,5,117,3741,8,117,10,117,12,117,3744,9,117, + 1,117,1,117,1,117,3,117,3749,8,117,1,118,1,118,1,118,1,118,1,118, + 1,118,3,118,3757,8,118,1,118,3,118,3760,8,118,1,118,3,118,3763,8, + 118,1,118,1,118,1,118,5,118,3768,8,118,10,118,12,118,3771,9,118, + 3,118,3773,8,118,1,118,1,118,1,118,1,118,1,118,3,118,3780,8,118, + 1,118,3,118,3783,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, + 3791,8,118,1,119,1,119,1,119,1,119,3,119,3797,8,119,1,119,1,119, + 1,119,1,119,1,120,1,120,1,120,1,120,1,120,3,120,3808,8,120,1,121, + 3,121,3811,8,121,1,121,1,121,3,121,3815,8,121,1,121,1,121,5,121, + 3819,8,121,10,121,12,121,3822,9,121,1,121,1,121,1,121,1,121,5,121, + 3828,8,121,10,121,12,121,3831,9,121,1,121,1,121,3,121,3835,8,121, + 1,121,1,121,3,121,3839,8,121,1,121,1,121,5,121,3843,8,121,10,121, + 12,121,3846,9,121,1,121,1,121,1,121,3,121,3851,8,121,3,121,3853, + 8,121,1,121,1,121,3,121,3857,8,121,1,122,1,122,1,122,1,122,1,122, + 1,122,1,122,3,122,3866,8,122,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,3,123,3876,8,123,1,124,1,124,1,124,1,124,1,124,1,124, + 1,124,1,124,3,124,3886,8,124,1,125,1,125,5,125,3890,8,125,10,125, + 12,125,3893,9,125,1,125,1,125,3,125,3897,8,125,1,125,1,125,3,125, + 3901,8,125,1,125,3,125,3904,8,125,1,125,3,125,3907,8,125,1,125,3, + 125,3910,8,125,1,125,3,125,3913,8,125,1,125,1,125,5,125,3917,8,125, + 10,125,12,125,3920,9,125,1,125,1,125,1,125,3,125,3925,8,125,1,125, + 3,125,3928,8,125,1,125,3,125,3931,8,125,1,125,3,125,3934,8,125,1, + 125,3,125,3937,8,125,1,125,3,125,3940,8,125,3,125,3942,8,125,1,126, + 1,126,5,126,3946,8,126,10,126,12,126,3949,9,126,1,126,1,126,1,126, + 3,126,3954,8,126,1,126,3,126,3957,8,126,1,126,3,126,3960,8,126,1, + 126,3,126,3963,8,126,1,126,3,126,3966,8,126,1,127,1,127,3,127,3970, + 8,127,1,127,1,127,1,128,1,128,3,128,3976,8,128,1,128,1,128,3,128, + 3980,8,128,1,129,1,129,1,129,1,129,1,129,1,129,3,129,3988,8,129, + 1,129,1,129,3,129,3992,8,129,1,129,3,129,3995,8,129,3,129,3997,8, + 129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,3,130,4010,8,130,1,130,3,130,4013,8,130,1,131,1,131,1,131, + 5,131,4018,8,131,10,131,12,131,4021,9,131,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,3,132,4030,8,132,1,132,3,132,4033,8,132,1,132, + 1,132,1,132,3,132,4038,8,132,3,132,4040,8,132,1,132,1,132,3,132, + 4044,8,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,4052,8,132, + 1,133,1,133,1,133,1,133,3,133,4058,8,133,1,133,1,133,1,133,1,134, + 1,134,1,134,1,134,3,134,4067,8,134,1,134,1,134,1,134,1,135,1,135, + 1,135,1,135,1,135,1,135,1,135,1,135,3,135,4080,8,135,1,136,1,136, + 3,136,4084,8,136,1,136,1,136,5,136,4088,8,136,10,136,12,136,4091, + 9,136,1,137,1,137,1,137,1,137,1,137,1,137,3,137,4099,8,137,1,137, + 3,137,4102,8,137,1,137,1,137,3,137,4106,8,137,1,137,3,137,4109,8, + 137,1,137,1,137,3,137,4113,8,137,1,137,1,137,3,137,4117,8,137,1, + 137,3,137,4120,8,137,3,137,4122,8,137,1,138,1,138,1,138,1,138,5, + 138,4128,8,138,10,138,12,138,4131,9,138,1,138,1,138,1,138,1,138, + 1,138,1,138,1,138,1,138,1,138,3,138,4142,8,138,1,138,1,138,4,138, + 4146,8,138,11,138,12,138,4147,3,138,4150,8,138,1,138,1,138,4,138, + 4154,8,138,11,138,12,138,4155,3,138,4158,8,138,3,138,4160,8,138, + 1,139,1,139,1,139,1,139,3,139,4166,8,139,1,139,1,139,1,139,1,139, + 1,139,1,139,3,139,4174,8,139,1,140,1,140,1,140,1,140,1,140,1,140, + 3,140,4182,8,140,1,141,1,141,3,141,4186,8,141,1,141,1,141,3,141, + 4190,8,141,1,142,1,142,1,142,1,142,1,142,5,142,4197,8,142,10,142, + 12,142,4200,9,142,1,142,1,142,3,142,4204,8,142,1,143,1,143,1,143, + 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, + 1,144,1,144,5,144,4222,8,144,10,144,12,144,4225,9,144,1,145,1,145, + 3,145,4229,8,145,1,146,1,146,1,146,1,146,3,146,4235,8,146,1,146, + 1,146,1,146,1,146,1,146,3,146,4242,8,146,1,147,1,147,1,147,3,147, + 4247,8,147,1,148,1,148,1,148,1,148,1,148,5,148,4254,8,148,10,148, + 12,148,4257,9,148,3,148,4259,8,148,1,149,1,149,3,149,4263,8,149, + 1,150,1,150,3,150,4267,8,150,1,150,1,150,3,150,4271,8,150,1,150, + 3,150,4274,8,150,1,150,3,150,4277,8,150,1,150,3,150,4280,8,150,1, + 151,1,151,3,151,4284,8,151,1,151,1,151,3,151,4288,8,151,1,151,3, + 151,4291,8,151,1,151,3,151,4294,8,151,1,151,3,151,4297,8,151,1,152, + 1,152,1,152,1,153,1,153,3,153,4304,8,153,1,153,1,153,3,153,4308, + 8,153,1,153,1,153,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, + 1,155,5,155,4321,8,155,10,155,12,155,4324,9,155,1,155,3,155,4327, + 8,155,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,158,1,158, + 3,158,4339,8,158,1,158,1,158,1,158,1,158,5,158,4345,8,158,10,158, + 12,158,4348,9,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,3,159, + 4357,8,159,1,160,1,160,3,160,4361,8,160,1,160,3,160,4364,8,160,1, + 160,1,160,1,161,1,161,3,161,4370,8,161,1,161,3,161,4373,8,161,1, + 161,3,161,4376,8,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,3, + 162,4385,8,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,3,163,4394, + 8,163,1,164,1,164,1,164,1,164,1,164,1,164,5,164,4402,8,164,10,164, + 12,164,4405,9,164,1,164,3,164,4408,8,164,1,165,1,165,1,165,1,165, + 1,165,1,165,5,165,4416,8,165,10,165,12,165,4419,9,165,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,3,166,4428,8,166,1,167,1,167,1,167, + 1,168,1,168,1,168,3,168,4436,8,168,1,168,3,168,4439,8,168,1,169, + 1,169,1,169,1,169,1,169,5,169,4446,8,169,10,169,12,169,4449,9,169, + 3,169,4451,8,169,1,169,1,169,3,169,4455,8,169,1,169,5,169,4458,8, + 169,10,169,12,169,4461,9,169,1,169,3,169,4464,8,169,1,170,1,170, + 1,170,1,170,1,170,5,170,4471,8,170,10,170,12,170,4474,9,170,3,170, + 4476,8,170,1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173, + 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173, + 1,173,1,173,1,173,1,173,1,173,1,173,1,173,5,173,4505,8,173,10,173, + 12,173,4508,9,173,3,173,4510,8,173,1,173,3,173,4513,8,173,1,174, + 1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,177,1,177,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,178,1,178,5,178,4567,8,178,10,178, + 12,178,4570,9,178,1,178,1,178,3,178,4574,8,178,1,179,1,179,1,179, + 1,179,1,179,1,179,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181, + 1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181, + 1,181,3,181,4602,8,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 1,182,1,182,1,182,1,182,1,182,3,182,4616,8,182,1,183,1,183,1,183, + 5,183,4621,8,183,10,183,12,183,4624,9,183,1,183,3,183,4627,8,183, + 1,184,1,184,1,184,1,184,3,184,4633,8,184,1,185,1,185,1,185,1,185, + 1,185,1,185,3,185,4641,8,185,3,185,4643,8,185,1,186,1,186,1,186, + 1,186,1,187,1,187,1,187,1,187,1,187,3,187,4654,8,187,1,188,1,188, + 1,188,1,188,1,189,1,189,1,189,1,189,3,189,4664,8,189,1,190,1,190, + 1,190,1,190,1,190,3,190,4671,8,190,1,191,1,191,1,191,1,191,3,191, + 4677,8,191,1,192,1,192,1,192,1,192,1,193,1,193,3,193,4685,8,193, + 1,194,1,194,1,194,3,194,4690,8,194,1,194,1,194,1,194,1,194,5,194, + 4696,8,194,10,194,12,194,4699,9,194,1,194,1,194,1,194,5,194,4704, + 8,194,10,194,12,194,4707,9,194,1,194,1,194,1,194,5,194,4712,8,194, + 10,194,12,194,4715,9,194,1,194,1,194,1,194,5,194,4720,8,194,10,194, + 12,194,4723,9,194,1,194,5,194,4726,8,194,10,194,12,194,4729,9,194, + 1,194,1,194,3,194,4733,8,194,1,195,1,195,1,195,3,195,4738,8,195, + 1,195,4,195,4741,8,195,11,195,12,195,4742,1,195,1,195,4,195,4747, + 8,195,11,195,12,195,4748,3,195,4751,8,195,1,195,1,195,1,195,1,196, + 1,196,1,196,1,196,4,196,4760,8,196,11,196,12,196,4761,1,196,5,196, + 4765,8,196,10,196,12,196,4768,9,196,1,196,1,196,4,196,4772,8,196, + 11,196,12,196,4773,3,196,4776,8,196,1,196,1,196,1,196,1,197,1,197, + 1,197,1,198,1,198,1,198,1,199,1,199,1,199,3,199,4790,8,199,1,199, + 1,199,4,199,4794,8,199,11,199,12,199,4795,1,199,1,199,1,199,3,199, + 4801,8,199,1,200,1,200,1,200,3,200,4806,8,200,1,200,1,200,4,200, + 4810,8,200,11,200,12,200,4811,1,200,1,200,1,200,1,200,1,200,3,200, + 4819,8,200,1,201,1,201,1,201,1,202,1,202,1,202,3,202,4827,8,202, + 1,202,1,202,1,202,1,202,4,202,4833,8,202,11,202,12,202,4834,1,202, + 1,202,1,202,3,202,4840,8,202,1,203,1,203,1,203,1,203,3,203,4846, + 8,203,1,203,3,203,4849,8,203,1,203,1,203,1,203,1,203,1,203,1,203, + 3,203,4857,8,203,1,204,1,204,1,204,1,204,1,204,3,204,4864,8,204, + 1,205,1,205,1,205,1,205,1,205,1,205,1,205,3,205,4873,8,205,1,205, + 3,205,4876,8,205,1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207, + 1,207,1,207,1,207,1,207,1,207,5,207,4891,8,207,10,207,12,207,4894, + 9,207,1,207,1,207,1,208,1,208,1,208,3,208,4901,8,208,1,208,1,208, + 1,208,1,208,1,208,1,208,3,208,4909,8,208,1,209,1,209,3,209,4913, + 8,209,1,209,1,209,1,210,1,210,1,210,3,210,4920,8,210,1,210,1,210, + 4,210,4924,8,210,11,210,12,210,4925,1,211,1,211,1,211,1,211,4,211, + 4932,8,211,11,211,12,211,4933,1,212,1,212,1,212,1,212,1,212,5,212, + 4941,8,212,10,212,12,212,4944,9,212,1,212,1,212,1,212,3,212,4949, + 8,212,1,212,1,212,1,212,5,212,4954,8,212,10,212,12,212,4957,9,212, + 1,212,1,212,1,212,1,212,3,212,4963,8,212,1,212,5,212,4966,8,212, + 10,212,12,212,4969,9,212,3,212,4971,8,212,3,212,4973,8,212,1,212, + 1,212,4,212,4977,8,212,11,212,12,212,4978,3,212,4981,8,212,1,212, + 1,212,5,212,4985,8,212,10,212,12,212,4988,9,212,1,212,1,212,1,212, + 1,212,3,212,4994,8,212,1,212,1,212,1,212,3,212,4999,8,212,1,212, + 1,212,3,212,5003,8,212,1,212,1,212,1,212,1,212,3,212,5009,8,212, + 1,213,1,213,1,213,1,213,1,213,5,213,5016,8,213,10,213,12,213,5019, + 9,213,1,213,1,213,1,213,3,213,5024,8,213,1,213,1,213,1,213,5,213, + 5029,8,213,10,213,12,213,5032,9,213,1,213,1,213,1,213,3,213,5037, + 8,213,1,213,1,213,1,213,1,213,3,213,5043,8,213,1,213,5,213,5046, + 8,213,10,213,12,213,5049,9,213,3,213,5051,8,213,3,213,5053,8,213, + 1,213,1,213,4,213,5057,8,213,11,213,12,213,5058,3,213,5061,8,213, + 1,213,1,213,5,213,5065,8,213,10,213,12,213,5068,9,213,1,213,1,213, + 1,213,1,213,3,213,5074,8,213,3,213,5076,8,213,1,214,1,214,1,214, + 3,214,5081,8,214,1,214,1,214,1,214,5,214,5086,8,214,10,214,12,214, + 5089,9,214,1,215,1,215,1,215,1,215,5,215,5095,8,215,10,215,12,215, + 5098,9,215,1,215,1,215,3,215,5102,8,215,1,215,1,215,1,215,1,215, + 1,215,5,215,5109,8,215,10,215,12,215,5112,9,215,1,215,1,215,1,215, + 1,215,3,215,5118,8,215,1,215,5,215,5121,8,215,10,215,12,215,5124, + 9,215,3,215,5126,8,215,3,215,5128,8,215,1,215,1,215,1,215,1,215, + 5,215,5134,8,215,10,215,12,215,5137,9,215,3,215,5139,8,215,1,215, + 1,215,1,215,1,215,1,215,1,215,3,215,5147,8,215,1,215,1,215,1,215, + 3,215,5152,8,215,1,215,1,215,1,215,3,215,5157,8,215,5,215,5159,8, + 215,10,215,12,215,5162,9,215,1,215,1,215,1,215,3,215,5167,8,215, + 1,215,1,215,1,215,3,215,5172,8,215,5,215,5174,8,215,10,215,12,215, + 5177,9,215,1,215,1,215,1,215,3,215,5182,8,215,3,215,5184,8,215,1, + 216,1,216,1,216,1,216,1,216,1,216,1,216,5,216,5193,8,216,10,216, + 12,216,5196,9,216,3,216,5198,8,216,1,216,1,216,1,216,5,216,5203, + 8,216,10,216,12,216,5206,9,216,3,216,5208,8,216,1,217,1,217,1,217, + 1,217,1,217,1,217,1,217,1,217,5,217,5218,8,217,10,217,12,217,5221, + 9,217,1,217,1,217,1,217,3,217,5226,8,217,1,218,1,218,1,218,1,218, + 1,218,5,218,5233,8,218,10,218,12,218,5236,9,218,1,219,1,219,1,219, + 1,219,5,219,5242,8,219,10,219,12,219,5245,9,219,1,219,1,219,3,219, + 5249,8,219,1,219,1,219,1,219,1,219,1,219,5,219,5256,8,219,10,219, + 12,219,5259,9,219,1,219,1,219,1,219,3,219,5264,8,219,1,219,1,219, + 1,219,1,219,1,219,1,219,1,219,5,219,5273,8,219,10,219,12,219,5276, + 9,219,1,219,1,219,1,219,3,219,5281,8,219,1,219,1,219,1,219,3,219, + 5286,8,219,5,219,5288,8,219,10,219,12,219,5291,9,219,1,219,1,219, + 1,219,3,219,5296,8,219,1,219,1,219,1,219,3,219,5301,8,219,5,219, + 5303,8,219,10,219,12,219,5306,9,219,3,219,5308,8,219,1,220,1,220, + 1,220,1,220,1,220,1,220,1,220,1,220,5,220,5318,8,220,10,220,12,220, + 5321,9,220,1,221,1,221,1,221,1,221,3,221,5327,8,221,1,221,1,221, + 1,221,3,221,5332,8,221,1,222,1,222,1,222,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,3,223, + 5362,8,223,1,224,1,224,3,224,5366,8,224,1,224,1,224,1,224,3,224, + 5371,8,224,1,225,1,225,1,225,1,225,1,225,3,225,5378,8,225,1,225, + 3,225,5381,8,225,1,225,1,225,1,225,1,225,3,225,5387,8,225,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,1,226,3,226,5397,8,226,1,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,3,227,5407,8,227,1,228, + 1,228,1,228,1,228,1,228,1,228,1,228,1,228,3,228,5417,8,228,1,228, + 1,228,1,228,1,228,3,228,5423,8,228,1,228,1,228,1,228,1,228,1,228, + 1,228,1,228,3,228,5432,8,228,1,228,1,228,1,228,1,228,3,228,5438, + 8,228,1,228,1,228,1,228,1,228,1,228,3,228,5445,8,228,3,228,5447, + 8,228,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,3,230,5457, + 8,230,1,231,1,231,3,231,5461,8,231,1,231,1,231,3,231,5465,8,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,3,231,5475,8,231, + 1,231,1,231,1,231,3,231,5480,8,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,3,231, + 5552,8,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232, + 1,232,1,232,1,232,1,232,1,232,1,232,1,232,3,232,5570,8,232,1,233, + 1,233,1,233,1,233,1,234,1,234,3,234,5578,8,234,1,234,1,234,1,234, + 1,234,1,234,1,234,1,234,1,234,5,234,5588,8,234,10,234,12,234,5591, + 9,234,1,234,1,234,1,234,1,234,3,234,5597,8,234,3,234,5599,8,234, + 1,234,1,234,1,234,1,234,1,234,1,234,5,234,5607,8,234,10,234,12,234, + 5610,9,234,3,234,5612,8,234,1,235,1,235,1,235,1,235,5,235,5618,8, + 235,10,235,12,235,5621,9,235,1,236,1,236,1,236,1,236,3,236,5627, + 8,236,1,237,1,237,3,237,5631,8,237,1,237,1,237,1,237,1,238,1,238, + 3,238,5638,8,238,1,238,1,238,1,238,3,238,5643,8,238,1,238,3,238, + 5646,8,238,1,238,3,238,5649,8,238,1,239,1,239,1,239,1,239,1,239, + 1,239,1,239,3,239,5658,8,239,1,240,1,240,3,240,5662,8,240,1,240, + 1,240,3,240,5666,8,240,1,240,1,240,1,240,1,240,1,240,1,240,1,241, + 1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242,1,243,1,243, + 1,243,1,243,1,243,3,243,5689,8,243,1,243,1,243,1,243,1,243,1,243, + 3,243,5696,8,243,5,243,5698,8,243,10,243,12,243,5701,9,243,1,243, + 1,243,1,243,1,243,3,243,5707,8,243,1,243,1,243,1,243,1,243,1,243, + 3,243,5714,8,243,1,243,3,243,5717,8,243,1,243,1,243,1,243,1,243, + 1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,5,243,5731,8,243, + 10,243,12,243,5734,9,243,3,243,5736,8,243,1,244,1,244,1,244,1,244, + 1,244,1,244,1,244,1,244,3,244,5746,8,244,1,244,1,244,3,244,5750, + 8,244,1,244,1,244,1,244,1,244,3,244,5756,8,244,1,244,3,244,5759, + 8,244,1,244,1,244,1,244,3,244,5764,8,244,1,244,1,244,3,244,5768, + 8,244,1,244,1,244,1,244,1,244,1,244,3,244,5775,8,244,1,244,3,244, + 5778,8,244,1,244,1,244,1,244,1,244,3,244,5784,8,244,1,244,1,244, + 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244, + 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,3,244,5808, + 8,244,1,244,3,244,5811,8,244,1,244,1,244,1,244,1,244,1,244,1,244, + 1,244,1,244,1,244,1,244,3,244,5823,8,244,1,244,3,244,5826,8,244, + 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,3,244,5836,8,244, + 1,244,1,244,1,244,1,244,1,244,1,244,3,244,5844,8,244,1,244,1,244, + 3,244,5848,8,244,1,244,1,244,1,244,1,244,1,244,3,244,5855,8,244, + 1,244,3,244,5858,8,244,1,244,1,244,1,244,1,244,1,244,5,244,5865, + 8,244,10,244,12,244,5868,9,244,1,244,1,244,1,244,3,244,5873,8,244, + 1,244,1,244,1,244,1,244,3,244,5879,8,244,1,244,1,244,1,244,1,244, + 1,244,1,244,1,244,1,244,3,244,5889,8,244,3,244,5891,8,244,1,245, + 1,245,1,245,1,245,3,245,5897,8,245,1,245,3,245,5900,8,245,1,245, + 3,245,5903,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246, + 1,246,1,246,3,246,5915,8,246,1,246,3,246,5918,8,246,1,247,1,247, + 1,247,1,247,3,247,5924,8,247,1,248,3,248,5927,8,248,1,248,1,248, + 1,248,1,248,1,248,1,248,3,248,5935,8,248,1,248,1,248,1,248,1,248, + 1,248,1,248,3,248,5943,8,248,1,249,1,249,1,249,1,249,3,249,5949, + 8,249,1,249,1,249,3,249,5953,8,249,1,250,1,250,1,250,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250,5967,8,250,1,251, + 1,251,1,251,1,252,1,252,1,252,1,252,1,252,5,252,5977,8,252,10,252, + 12,252,5980,9,252,1,252,1,252,1,252,1,252,3,252,5986,8,252,1,252, + 3,252,5989,8,252,1,252,1,252,1,252,1,253,1,253,3,253,5996,8,253, + 1,253,1,253,1,253,5,253,6001,8,253,10,253,12,253,6004,9,253,1,254, + 1,254,3,254,6008,8,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255, + 1,255,1,255,5,255,6019,8,255,10,255,12,255,6022,9,255,1,256,1,256, + 1,256,1,256,1,257,1,257,1,258,1,258,3,258,6032,8,258,1,258,1,258, + 1,258,1,258,3,258,6038,8,258,1,259,1,259,1,259,3,259,6043,8,259, + 1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259, + 3,259,6056,8,259,3,259,6058,8,259,1,259,1,259,1,259,3,259,6063,8, + 259,1,259,1,259,3,259,6067,8,259,1,259,3,259,6070,8,259,3,259,6072, + 8,259,1,260,1,260,1,260,1,260,1,260,3,260,6079,8,260,1,261,1,261, + 1,261,1,261,1,261,3,261,6086,8,261,1,261,3,261,6089,8,261,1,261, + 3,261,6092,8,261,1,261,1,261,1,261,1,261,3,261,6098,8,261,1,261, + 1,261,3,261,6102,8,261,1,262,1,262,1,262,1,262,3,262,6108,8,262, + 1,263,1,263,1,263,1,263,3,263,6114,8,263,1,263,1,263,1,264,1,264, + 1,264,1,265,1,265,1,265,1,266,1,266,1,266,3,266,6127,8,266,1,266, + 1,266,1,266,3,266,6132,8,266,1,266,1,266,1,266,1,266,5,266,6138, + 8,266,10,266,12,266,6141,9,266,3,266,6143,8,266,1,267,1,267,1,267, + 3,267,6148,8,267,1,267,1,267,1,267,3,267,6153,8,267,1,267,1,267, + 1,267,1,267,5,267,6159,8,267,10,267,12,267,6162,9,267,3,267,6164, + 8,267,1,268,1,268,1,268,1,268,1,268,1,268,3,268,6172,8,268,1,269, + 1,269,3,269,6176,8,269,1,269,1,269,1,269,5,269,6181,8,269,10,269, + 12,269,6184,9,269,1,270,1,270,1,270,3,270,6189,8,270,1,270,3,270, + 6192,8,270,1,271,1,271,3,271,6196,8,271,1,271,1,271,1,271,1,271, + 1,271,1,271,1,271,1,271,1,271,5,271,6207,8,271,10,271,12,271,6210, + 9,271,1,271,1,271,1,271,3,271,6215,8,271,1,271,1,271,1,271,1,271, + 1,271,1,271,1,271,1,271,5,271,6225,8,271,10,271,12,271,6228,9,271, + 3,271,6230,8,271,1,272,1,272,1,273,1,273,1,273,1,273,1,273,3,273, + 6239,8,273,1,273,1,273,1,273,3,273,6244,8,273,1,274,1,274,1,274, + 1,274,3,274,6250,8,274,1,275,1,275,1,276,1,276,3,276,6256,8,276, + 1,277,1,277,1,277,3,277,6261,8,277,3,277,6263,8,277,1,277,3,277, + 6266,8,277,1,277,1,277,3,277,6270,8,277,3,277,6272,8,277,1,278,1, + 278,3,278,6276,8,278,1,278,1,278,1,278,1,278,3,278,6282,8,278,1, + 278,3,278,6285,8,278,1,278,3,278,6288,8,278,1,279,1,279,1,279,1, + 279,1,279,3,279,6295,8,279,1,280,1,280,1,281,1,281,1,281,1,281,3, + 281,6303,8,281,1,282,1,282,3,282,6307,8,282,1,283,1,283,1,283,3, + 283,6312,8,283,1,284,1,284,1,285,1,285,1,285,1,285,1,285,1,285,1, + 285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,4,285,6330,8,285,11, + 285,12,285,6331,1,286,1,286,1,286,1,286,1,286,3,286,6339,8,286,3, + 286,6341,8,286,1,287,1,287,1,287,4,287,6346,8,287,11,287,12,287, + 6347,3,287,6350,8,287,1,288,1,288,3,288,6354,8,288,1,289,1,289,1, + 289,3,289,6359,8,289,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1, + 290,1,290,3,290,6370,8,290,1,291,1,291,1,291,3,291,6375,8,291,1, + 292,1,292,1,293,1,293,3,293,6381,8,293,1,294,3,294,6384,8,294,1, + 294,1,294,3,294,6388,8,294,1,294,4,294,6391,8,294,11,294,12,294, + 6392,1,294,3,294,6396,8,294,1,294,1,294,3,294,6400,8,294,1,294,1, + 294,3,294,6404,8,294,3,294,6406,8,294,1,295,1,295,1,296,3,296,6411, + 8,296,1,296,1,296,1,297,3,297,6416,8,297,1,297,1,297,1,298,1,298, + 1,298,1,298,1,298,1,298,1,298,1,298,1,298,3,298,6429,8,298,1,298, + 3,298,6432,8,298,1,299,1,299,3,299,6436,8,299,1,299,3,299,6439,8, + 299,1,299,3,299,6442,8,299,1,299,1,299,1,299,3,299,6447,8,299,1, + 299,1,299,1,299,3,299,6452,8,299,1,299,1,299,1,299,1,299,3,299,6458, + 8,299,1,299,3,299,6461,8,299,1,299,1,299,1,299,3,299,6466,8,299, + 1,299,3,299,6469,8,299,1,299,1,299,1,299,3,299,6474,8,299,1,299, + 3,299,6477,8,299,1,299,1,299,3,299,6481,8,299,1,299,5,299,6484,8, + 299,10,299,12,299,6487,9,299,1,299,1,299,3,299,6491,8,299,1,299, + 5,299,6494,8,299,10,299,12,299,6497,9,299,1,299,1,299,3,299,6501, + 8,299,1,299,3,299,6504,8,299,1,299,5,299,6507,8,299,10,299,12,299, + 6510,9,299,1,299,1,299,3,299,6514,8,299,1,299,5,299,6517,8,299,10, + 299,12,299,6520,9,299,1,299,1,299,1,299,3,299,6525,8,299,1,299,1, + 299,1,299,3,299,6530,8,299,1,299,1,299,1,299,3,299,6535,8,299,1, + 299,1,299,1,299,3,299,6540,8,299,1,299,1,299,3,299,6544,8,299,1, + 299,3,299,6547,8,299,1,299,1,299,1,299,3,299,6552,8,299,1,299,1, + 299,3,299,6556,8,299,1,299,1,299,3,299,6560,8,299,1,300,1,300,1, + 300,1,300,5,300,6566,8,300,10,300,12,300,6569,9,300,1,300,1,300, + 1,301,1,301,3,301,6575,8,301,1,301,1,301,3,301,6579,8,301,1,301, + 1,301,1,301,3,301,6584,8,301,1,301,1,301,1,301,3,301,6589,8,301, + 1,301,1,301,3,301,6593,8,301,3,301,6595,8,301,1,301,3,301,6598,8, + 301,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,303, + 1,304,1,304,1,304,1,304,3,304,6614,8,304,1,304,1,304,1,305,1,305, + 1,305,5,305,6621,8,305,10,305,12,305,6624,9,305,1,306,1,306,1,306, + 5,306,6629,8,306,10,306,12,306,6632,9,306,1,307,1,307,1,307,5,307, + 6637,8,307,10,307,12,307,6640,9,307,1,308,1,308,1,308,1,308,5,308, + 6646,8,308,10,308,12,308,6649,9,308,1,308,1,308,1,309,1,309,1,309, + 5,309,6656,8,309,10,309,12,309,6659,9,309,1,310,1,310,1,310,5,310, + 6664,8,310,10,310,12,310,6667,9,310,1,311,1,311,1,311,5,311,6672, + 8,311,10,311,12,311,6675,9,311,1,312,1,312,1,312,5,312,6680,8,312, + 10,312,12,312,6683,9,312,1,313,1,313,1,313,5,313,6688,8,313,10,313, + 12,313,6691,9,313,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314, + 1,314,3,314,6702,8,314,1,314,1,314,1,314,1,314,1,314,3,314,6709, + 8,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,1,314,3,314,6719, + 8,314,1,315,1,315,1,315,3,315,6724,8,315,1,315,3,315,6727,8,315, + 1,315,1,315,1,315,3,315,6732,8,315,1,315,3,315,6735,8,315,1,316, + 1,316,3,316,6739,8,316,1,317,1,317,1,317,1,318,1,318,1,318,1,318, + 1,319,1,319,1,319,1,320,1,320,1,320,3,320,6754,8,320,1,321,1,321, + 1,321,1,321,1,321,1,321,3,321,6762,8,321,1,321,1,321,1,321,1,321, + 1,321,3,321,6769,8,321,1,321,1,321,1,321,3,321,6774,8,321,1,322, + 1,322,1,322,3,322,6779,8,322,1,322,1,322,1,322,1,322,1,322,1,322, + 1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322, + 1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322, + 1,322,4,322,6810,8,322,11,322,12,322,6811,1,322,1,322,3,322,6816, + 8,322,1,322,1,322,1,322,1,322,4,322,6822,8,322,11,322,12,322,6823, + 1,322,1,322,3,322,6828,8,322,1,322,1,322,1,322,1,322,1,322,1,322, + 1,322,3,322,6837,8,322,1,322,1,322,1,322,1,322,1,322,1,322,3,322, + 6845,8,322,1,322,1,322,1,322,3,322,6850,8,322,1,322,1,322,1,322, + 1,322,1,322,1,322,3,322,6858,8,322,1,322,1,322,1,322,3,322,6863, + 8,322,1,322,1,322,1,322,3,322,6868,8,322,3,322,6870,8,322,1,322, + 1,322,1,322,1,322,1,322,1,322,1,322,3,322,6879,8,322,1,322,1,322, + 1,322,3,322,6884,8,322,1,322,1,322,1,322,1,322,1,322,1,322,3,322, + 6892,8,322,1,322,1,322,1,322,3,322,6897,8,322,1,322,1,322,1,322, + 1,322,1,322,1,322,3,322,6905,8,322,1,322,1,322,1,322,1,322,1,322, + 1,322,3,322,6913,8,322,1,322,3,322,6916,8,322,1,322,1,322,1,322, + 1,322,1,322,1,322,1,322,1,322,3,322,6926,8,322,1,322,1,322,1,322, + 1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322,1,322, + 1,322,1,322,3,322,6944,8,322,1,322,3,322,6947,8,322,1,322,3,322, + 6950,8,322,1,322,1,322,3,322,6954,8,322,1,323,1,323,1,323,1,323, + 1,323,1,324,1,324,1,324,1,324,5,324,6965,8,324,10,324,12,324,6968, + 9,324,1,324,1,324,1,324,1,324,1,324,3,324,6975,8,324,1,325,1,325, + 3,325,6979,8,325,1,326,1,326,1,326,3,326,6984,8,326,1,326,1,326, + 1,326,3,326,6989,8,326,1,326,1,326,1,326,1,326,3,326,6995,8,326, + 1,326,1,326,1,326,3,326,7000,8,326,1,326,1,326,3,326,7004,8,326, + 1,326,1,326,1,326,3,326,7009,8,326,1,326,1,326,1,326,3,326,7014, + 8,326,1,326,1,326,1,326,3,326,7019,8,326,1,326,1,326,1,326,1,326, + 1,326,1,326,5,326,7027,8,326,10,326,12,326,7030,9,326,3,326,7032, + 8,326,1,326,1,326,3,326,7036,8,326,1,326,1,326,3,326,7040,8,326, + 1,327,1,327,1,327,1,327,1,327,3,327,7047,8,327,1,327,1,327,3,327, + 7051,8,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327, + 1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327, + 1,327,1,327,1,327,1,327,1,327,1,327,1,327,3,327,7080,8,327,1,328, + 1,328,1,328,1,328,1,328,1,328,3,328,7088,8,328,1,329,3,329,7091, + 8,329,1,329,3,329,7094,8,329,1,329,3,329,7097,8,329,1,329,3,329, + 7100,8,329,1,330,1,330,1,331,1,331,1,331,1,332,1,332,1,333,1,333, + 3,333,7111,8,333,1,334,1,334,1,334,1,334,1,334,1,335,1,335,1,335, + 1,335,1,335,1,335,1,335,3,335,7125,8,335,1,336,1,336,1,336,1,336, + 1,336,5,336,7132,8,336,10,336,12,336,7135,9,336,1,337,1,337,1,337, + 1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337, + 1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,3,337, + 7161,8,337,1,338,1,338,1,338,1,338,1,338,1,339,1,339,1,339,1,339, + 3,339,7172,8,339,1,339,1,339,1,339,1,339,1,339,3,339,7179,8,339, + 5,339,7181,8,339,10,339,12,339,7184,9,339,1,340,1,340,1,340,1,340, + 3,340,7190,8,340,1,341,1,341,1,341,1,341,1,341,1,341,3,341,7198, + 8,341,1,341,1,341,1,341,3,341,7203,8,341,1,341,1,341,1,341,1,341, + 5,341,7209,8,341,10,341,12,341,7212,9,341,1,342,1,342,1,342,1,342, + 1,342,1,342,1,342,1,342,1,342,3,342,7223,8,342,1,342,1,342,1,342, + 1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,3,342,7236,8,342, + 1,342,1,342,1,342,1,342,3,342,7242,8,342,1,342,1,342,1,342,1,342, + 3,342,7248,8,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,342, + 1,342,1,342,1,342,1,342,1,342,1,342,3,342,7264,8,342,1,342,1,342, + 1,342,1,342,3,342,7270,8,342,1,342,1,342,1,342,1,342,1,342,1,342, + 1,342,5,342,7279,8,342,10,342,12,342,7282,9,342,1,343,1,343,1,343, + 1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343, + 1,343,1,343,1,343,5,343,7301,8,343,10,343,12,343,7304,9,343,1,343, + 1,343,1,343,1,343,1,343,1,343,1,343,4,343,7313,8,343,11,343,12,343, + 7314,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343, + 1,343,1,343,1,343,1,343,1,343,3,343,7332,8,343,1,343,1,343,1,343, + 1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343, + 1,343,5,343,7349,8,343,10,343,12,343,7352,9,343,1,344,1,344,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,3,345,7370,8,345,1,346,1,346,1,346,1,346,1,346,1,346, + 1,346,3,346,7379,8,346,1,347,1,347,1,347,1,347,1,347,1,347,1,347, + 3,347,7388,8,347,1,348,1,348,1,349,1,349,1,349,1,349,1,349,3,349, + 7397,8,349,1,350,1,350,1,351,1,351,1,352,1,352,1,353,1,353,1,354, + 1,354,1,355,1,355,1,356,1,356,1,356,0,3,682,684,686,357,0,2,4,6, + 8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50, + 52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94, + 96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128, + 130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160, + 162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192, + 194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224, + 226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256, + 258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288, + 290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320, + 322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352, + 354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384, + 386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416, + 418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448, + 450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480, + 482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512, + 514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544, + 546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576, + 578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608, + 610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640, + 642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672, + 674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704, + 706,708,710,712,0,142,2,0,39,39,150,150,2,0,531,531,537,537,3,0, + 69,69,159,159,181,181,3,0,42,42,384,384,454,454,4,0,42,42,419,419, + 529,529,611,611,2,0,514,514,1148,1148,2,0,78,78,141,141,2,0,15,15, + 334,334,3,0,44,44,85,85,184,184,2,0,434,434,558,558,3,0,506,506, + 650,650,658,658,2,0,392,392,460,460,2,0,352,352,474,474,2,0,42,42, + 1138,1139,2,0,350,350,443,443,2,0,459,459,673,673,3,0,80,80,84,84, + 125,125,3,0,42,42,402,402,431,431,3,0,42,42,398,398,792,792,2,0, + 637,637,672,672,2,0,81,81,91,91,3,0,436,436,548,548,613,613,2,0, + 69,69,159,159,1,0,356,357,1,0,1138,1139,2,0,1148,1148,1156,1156, + 2,0,81,81,388,388,2,0,545,545,1148,1148,2,0,546,546,1148,1148,3, + 0,430,430,469,469,521,521,7,0,42,42,370,370,372,372,402,402,431, + 431,573,573,1156,1156,2,0,514,514,530,530,1,0,1139,1140,2,0,5,5, + 51,51,4,0,42,42,384,384,454,454,458,458,2,0,26,26,30,30,2,0,12,12, + 175,175,2,0,192,192,677,677,2,0,21,21,144,144,3,0,43,43,75,75,106, + 106,2,0,106,106,374,374,2,0,365,365,427,427,2,0,101,101,601,601, + 2,0,43,43,106,106,2,0,6,6,49,49,2,0,188,188,669,669,4,0,430,430, + 469,469,520,520,562,562,2,0,430,430,520,520,2,0,13,13,45,45,3,0, + 66,66,78,78,186,186,2,0,34,34,83,83,2,0,97,97,148,148,2,0,6,6,49, + 50,1,0,626,627,2,0,172,172,742,742,2,0,439,439,609,609,2,0,226,226, + 477,477,5,0,107,107,482,483,485,485,489,497,575,575,4,0,479,480, + 484,484,486,487,576,576,3,0,108,108,478,478,488,488,2,0,462,462, + 628,628,2,0,622,622,624,624,2,0,344,344,629,629,2,0,90,90,591,591, + 2,0,51,51,390,390,3,0,31,31,61,61,179,179,3,0,131,131,172,172,437, + 437,3,0,12,12,19,19,187,187,2,0,42,42,121,121,2,0,103,103,182,182, + 2,0,360,360,614,614,2,0,40,40,671,671,2,0,115,115,474,474,2,0,422, + 422,568,568,4,0,206,206,208,208,214,214,638,638,2,0,1108,1108,1124, + 1124,2,0,345,345,577,577,2,0,68,68,80,80,6,0,131,131,172,172,177, + 177,415,415,437,437,671,671,2,0,513,513,634,634,2,0,412,412,675, + 675,2,0,131,131,437,437,3,0,81,81,92,92,452,452,3,0,439,439,474, + 474,609,609,2,0,634,634,670,670,2,0,376,376,567,567,6,0,226,226, + 409,409,411,411,438,438,574,574,615,615,2,0,45,46,62,62,3,0,422, + 422,550,550,885,885,2,0,466,466,652,652,10,0,359,359,367,367,378, + 380,387,387,507,507,515,515,639,639,646,646,836,836,1005,1005,2, + 0,35,35,168,168,2,0,117,117,996,996,11,0,359,359,367,367,378,380, + 387,387,507,507,515,515,592,592,639,639,646,646,836,836,1005,1005, + 1,0,1160,1161,2,0,375,375,787,798,3,0,1138,1140,1149,1149,1151,1151, + 2,0,63,63,178,178,2,0,116,116,1152,1152,5,0,25,25,222,224,231,231, + 233,236,518,518,2,0,25,25,222,222,2,0,25,25,222,223,1,0,196,207, + 3,0,183,183,195,195,612,612,2,0,211,216,431,431,6,0,217,217,228, + 228,230,230,232,232,239,239,348,349,4,0,218,221,226,227,229,229, + 346,346,2,0,153,153,237,237,2,0,466,466,803,811,2,0,226,226,518, + 518,5,0,200,200,206,206,217,218,220,220,466,466,1,0,214,215,2,0, + 183,183,612,612,2,0,200,200,206,206,2,0,315,316,322,322,4,0,37,37, + 150,150,313,316,331,331,1,0,325,326,3,0,17,17,95,95,176,176,2,0, + 222,222,226,226,2,0,217,218,220,220,3,0,13,13,45,45,994,994,3,0, + 286,286,298,299,309,309,3,0,287,289,305,308,310,312,2,0,295,295, + 297,297,2,0,293,293,296,296,2,0,291,292,302,304,2,0,133,133,601, + 601,2,0,433,433,559,559,2,0,535,535,551,551,2,0,114,114,1127,1127, + 3,0,63,63,178,178,662,662,2,0,137,137,149,149,3,0,6,6,337,337,618, + 618,3,0,114,114,1120,1121,1127,1128,1,0,1117,1123,2,0,226,226,746, + 786,1,0,799,802,5,0,708,709,725,727,733,733,739,740,742,742,1,0, + 689,696,3,0,217,221,234,234,237,237,59,0,11,11,14,14,18,18,29,29, + 35,35,37,37,42,42,48,48,55,55,57,57,59,59,73,73,79,79,94,94,117, + 117,121,121,124,124,130,130,158,158,168,168,239,239,283,290,294, + 294,298,299,305,312,332,385,387,403,405,405,407,432,434,450,452, + 458,460,521,523,523,527,544,547,558,560,589,591,592,594,606,608, + 636,638,672,674,675,677,682,684,688,697,697,699,707,710,712,717, + 718,720,724,728,732,734,734,736,738,741,741,743,745,792,792,836, + 836,875,875,1000,1000,1005,1005,1088,1088,23,0,39,39,97,97,148,148, + 150,150,217,219,221,221,251,282,290,293,295,297,300,304,324,324, + 459,459,673,673,689,696,736,736,803,803,806,835,837,874,876,999, + 1001,1004,1006,1087,1089,1107,1123,1123,8730,0,715,1,0,0,0,2,734, + 1,0,0,0,4,755,1,0,0,0,6,757,1,0,0,0,8,797,1,0,0,0,10,812,1,0,0,0, + 12,823,1,0,0,0,14,840,1,0,0,0,16,845,1,0,0,0,18,857,1,0,0,0,20,884, + 1,0,0,0,22,893,1,0,0,0,24,895,1,0,0,0,26,907,1,0,0,0,28,937,1,0, + 0,0,30,973,1,0,0,0,32,1024,1,0,0,0,34,1050,1,0,0,0,36,1086,1,0,0, + 0,38,1099,1,0,0,0,40,1196,1,0,0,0,42,1198,1,0,0,0,44,1216,1,0,0, + 0,46,1277,1,0,0,0,48,1296,1,0,0,0,50,1302,1,0,0,0,52,1324,1,0,0, + 0,54,1326,1,0,0,0,56,1328,1,0,0,0,58,1408,1,0,0,0,60,1415,1,0,0, + 0,62,1417,1,0,0,0,64,1461,1,0,0,0,66,1467,1,0,0,0,68,1469,1,0,0, + 0,70,1490,1,0,0,0,72,1497,1,0,0,0,74,1499,1,0,0,0,76,1524,1,0,0, + 0,78,1527,1,0,0,0,80,1532,1,0,0,0,82,1558,1,0,0,0,84,1574,1,0,0, + 0,86,1576,1,0,0,0,88,1598,1,0,0,0,90,1600,1,0,0,0,92,1666,1,0,0, + 0,94,1737,1,0,0,0,96,1739,1,0,0,0,98,1767,1,0,0,0,100,1777,1,0,0, + 0,102,1807,1,0,0,0,104,1994,1,0,0,0,106,1996,1,0,0,0,108,1998,1, + 0,0,0,110,2001,1,0,0,0,112,2076,1,0,0,0,114,2099,1,0,0,0,116,2247, + 1,0,0,0,118,2252,1,0,0,0,120,2254,1,0,0,0,122,2264,1,0,0,0,124,2320, + 1,0,0,0,126,2340,1,0,0,0,128,2342,1,0,0,0,130,2377,1,0,0,0,132,2386, + 1,0,0,0,134,2393,1,0,0,0,136,2416,1,0,0,0,138,2425,1,0,0,0,140,2440, + 1,0,0,0,142,2465,1,0,0,0,144,2485,1,0,0,0,146,2868,1,0,0,0,148,2968, + 1,0,0,0,150,2970,1,0,0,0,152,2977,1,0,0,0,154,2984,1,0,0,0,156,3007, + 1,0,0,0,158,3015,1,0,0,0,160,3022,1,0,0,0,162,3029,1,0,0,0,164,3036, + 1,0,0,0,166,3048,1,0,0,0,168,3058,1,0,0,0,170,3065,1,0,0,0,172,3081, + 1,0,0,0,174,3127,1,0,0,0,176,3129,1,0,0,0,178,3139,1,0,0,0,180,3143, + 1,0,0,0,182,3149,1,0,0,0,184,3161,1,0,0,0,186,3163,1,0,0,0,188,3170, + 1,0,0,0,190,3172,1,0,0,0,192,3229,1,0,0,0,194,3303,1,0,0,0,196,3362, + 1,0,0,0,198,3457,1,0,0,0,200,3461,1,0,0,0,202,3463,1,0,0,0,204,3498, + 1,0,0,0,206,3500,1,0,0,0,208,3508,1,0,0,0,210,3516,1,0,0,0,212,3518, + 1,0,0,0,214,3554,1,0,0,0,216,3609,1,0,0,0,218,3618,1,0,0,0,220,3638, + 1,0,0,0,222,3650,1,0,0,0,224,3654,1,0,0,0,226,3687,1,0,0,0,228,3708, + 1,0,0,0,230,3718,1,0,0,0,232,3722,1,0,0,0,234,3748,1,0,0,0,236,3790, + 1,0,0,0,238,3792,1,0,0,0,240,3807,1,0,0,0,242,3856,1,0,0,0,244,3865, + 1,0,0,0,246,3875,1,0,0,0,248,3885,1,0,0,0,250,3941,1,0,0,0,252,3943, + 1,0,0,0,254,3967,1,0,0,0,256,3973,1,0,0,0,258,3981,1,0,0,0,260,3998, + 1,0,0,0,262,4014,1,0,0,0,264,4051,1,0,0,0,266,4057,1,0,0,0,268,4066, + 1,0,0,0,270,4079,1,0,0,0,272,4083,1,0,0,0,274,4121,1,0,0,0,276,4159, + 1,0,0,0,278,4173,1,0,0,0,280,4181,1,0,0,0,282,4185,1,0,0,0,284,4191, + 1,0,0,0,286,4205,1,0,0,0,288,4208,1,0,0,0,290,4226,1,0,0,0,292,4230, + 1,0,0,0,294,4246,1,0,0,0,296,4248,1,0,0,0,298,4260,1,0,0,0,300,4264, + 1,0,0,0,302,4281,1,0,0,0,304,4298,1,0,0,0,306,4301,1,0,0,0,308,4311, + 1,0,0,0,310,4315,1,0,0,0,312,4328,1,0,0,0,314,4331,1,0,0,0,316,4336, + 1,0,0,0,318,4356,1,0,0,0,320,4358,1,0,0,0,322,4375,1,0,0,0,324,4384, + 1,0,0,0,326,4393,1,0,0,0,328,4395,1,0,0,0,330,4409,1,0,0,0,332,4420, + 1,0,0,0,334,4429,1,0,0,0,336,4432,1,0,0,0,338,4440,1,0,0,0,340,4465, + 1,0,0,0,342,4477,1,0,0,0,344,4480,1,0,0,0,346,4512,1,0,0,0,348,4514, + 1,0,0,0,350,4516,1,0,0,0,352,4518,1,0,0,0,354,4520,1,0,0,0,356,4573, + 1,0,0,0,358,4575,1,0,0,0,360,4581,1,0,0,0,362,4601,1,0,0,0,364,4615, + 1,0,0,0,366,4626,1,0,0,0,368,4628,1,0,0,0,370,4634,1,0,0,0,372,4644, + 1,0,0,0,374,4648,1,0,0,0,376,4655,1,0,0,0,378,4659,1,0,0,0,380,4665, + 1,0,0,0,382,4672,1,0,0,0,384,4678,1,0,0,0,386,4684,1,0,0,0,388,4689, + 1,0,0,0,390,4734,1,0,0,0,392,4755,1,0,0,0,394,4780,1,0,0,0,396,4783, + 1,0,0,0,398,4789,1,0,0,0,400,4805,1,0,0,0,402,4820,1,0,0,0,404,4826, + 1,0,0,0,406,4856,1,0,0,0,408,4858,1,0,0,0,410,4865,1,0,0,0,412,4877, + 1,0,0,0,414,4883,1,0,0,0,416,4908,1,0,0,0,418,4912,1,0,0,0,420,4916, + 1,0,0,0,422,4927,1,0,0,0,424,5008,1,0,0,0,426,5075,1,0,0,0,428,5077, + 1,0,0,0,430,5183,1,0,0,0,432,5207,1,0,0,0,434,5209,1,0,0,0,436,5227, + 1,0,0,0,438,5307,1,0,0,0,440,5309,1,0,0,0,442,5322,1,0,0,0,444,5333, + 1,0,0,0,446,5361,1,0,0,0,448,5365,1,0,0,0,450,5386,1,0,0,0,452,5396, + 1,0,0,0,454,5406,1,0,0,0,456,5446,1,0,0,0,458,5448,1,0,0,0,460,5451, + 1,0,0,0,462,5551,1,0,0,0,464,5569,1,0,0,0,466,5571,1,0,0,0,468,5575, + 1,0,0,0,470,5613,1,0,0,0,472,5622,1,0,0,0,474,5628,1,0,0,0,476,5635, + 1,0,0,0,478,5657,1,0,0,0,480,5659,1,0,0,0,482,5673,1,0,0,0,484,5679, + 1,0,0,0,486,5735,1,0,0,0,488,5890,1,0,0,0,490,5902,1,0,0,0,492,5917, + 1,0,0,0,494,5923,1,0,0,0,496,5942,1,0,0,0,498,5952,1,0,0,0,500,5966, + 1,0,0,0,502,5968,1,0,0,0,504,5971,1,0,0,0,506,5993,1,0,0,0,508,6005, + 1,0,0,0,510,6011,1,0,0,0,512,6023,1,0,0,0,514,6027,1,0,0,0,516,6029, + 1,0,0,0,518,6071,1,0,0,0,520,6078,1,0,0,0,522,6080,1,0,0,0,524,6103, + 1,0,0,0,526,6109,1,0,0,0,528,6117,1,0,0,0,530,6120,1,0,0,0,532,6123, + 1,0,0,0,534,6144,1,0,0,0,536,6165,1,0,0,0,538,6173,1,0,0,0,540,6185, + 1,0,0,0,542,6193,1,0,0,0,544,6231,1,0,0,0,546,6243,1,0,0,0,548,6245, + 1,0,0,0,550,6251,1,0,0,0,552,6255,1,0,0,0,554,6271,1,0,0,0,556,6284, + 1,0,0,0,558,6294,1,0,0,0,560,6296,1,0,0,0,562,6302,1,0,0,0,564,6306, + 1,0,0,0,566,6311,1,0,0,0,568,6313,1,0,0,0,570,6315,1,0,0,0,572,6333, + 1,0,0,0,574,6349,1,0,0,0,576,6353,1,0,0,0,578,6358,1,0,0,0,580,6369, + 1,0,0,0,582,6374,1,0,0,0,584,6376,1,0,0,0,586,6380,1,0,0,0,588,6405, + 1,0,0,0,590,6407,1,0,0,0,592,6410,1,0,0,0,594,6415,1,0,0,0,596,6431, + 1,0,0,0,598,6559,1,0,0,0,600,6561,1,0,0,0,602,6594,1,0,0,0,604,6599, + 1,0,0,0,606,6603,1,0,0,0,608,6609,1,0,0,0,610,6617,1,0,0,0,612,6625, + 1,0,0,0,614,6633,1,0,0,0,616,6641,1,0,0,0,618,6652,1,0,0,0,620,6660, + 1,0,0,0,622,6668,1,0,0,0,624,6676,1,0,0,0,626,6684,1,0,0,0,628,6718, + 1,0,0,0,630,6734,1,0,0,0,632,6738,1,0,0,0,634,6740,1,0,0,0,636,6743, + 1,0,0,0,638,6747,1,0,0,0,640,6753,1,0,0,0,642,6773,1,0,0,0,644,6953, + 1,0,0,0,646,6955,1,0,0,0,648,6974,1,0,0,0,650,6976,1,0,0,0,652,7039, + 1,0,0,0,654,7079,1,0,0,0,656,7081,1,0,0,0,658,7090,1,0,0,0,660,7101, + 1,0,0,0,662,7103,1,0,0,0,664,7106,1,0,0,0,666,7110,1,0,0,0,668,7112, + 1,0,0,0,670,7124,1,0,0,0,672,7126,1,0,0,0,674,7160,1,0,0,0,676,7162, + 1,0,0,0,678,7171,1,0,0,0,680,7189,1,0,0,0,682,7202,1,0,0,0,684,7213, + 1,0,0,0,686,7331,1,0,0,0,688,7353,1,0,0,0,690,7369,1,0,0,0,692,7378, + 1,0,0,0,694,7387,1,0,0,0,696,7389,1,0,0,0,698,7396,1,0,0,0,700,7398, + 1,0,0,0,702,7400,1,0,0,0,704,7402,1,0,0,0,706,7404,1,0,0,0,708,7406, + 1,0,0,0,710,7408,1,0,0,0,712,7410,1,0,0,0,714,716,3,2,1,0,715,714, + 1,0,0,0,715,716,1,0,0,0,716,719,1,0,0,0,717,718,5,1121,0,0,718,720, + 5,1121,0,0,719,717,1,0,0,0,719,720,1,0,0,0,720,721,1,0,0,0,721,722, + 5,0,0,1,722,1,1,0,0,0,723,726,3,4,2,0,724,725,5,1121,0,0,725,727, + 5,1121,0,0,726,724,1,0,0,0,726,727,1,0,0,0,727,729,1,0,0,0,728,730, + 5,1136,0,0,729,728,1,0,0,0,729,730,1,0,0,0,730,733,1,0,0,0,731,733, + 3,6,3,0,732,723,1,0,0,0,732,731,1,0,0,0,733,736,1,0,0,0,734,732, + 1,0,0,0,734,735,1,0,0,0,735,746,1,0,0,0,736,734,1,0,0,0,737,743, + 3,4,2,0,738,739,5,1121,0,0,739,741,5,1121,0,0,740,738,1,0,0,0,740, + 741,1,0,0,0,741,742,1,0,0,0,742,744,5,1136,0,0,743,740,1,0,0,0,743, + 744,1,0,0,0,744,747,1,0,0,0,745,747,3,6,3,0,746,737,1,0,0,0,746, + 745,1,0,0,0,747,3,1,0,0,0,748,756,3,8,4,0,749,756,3,10,5,0,750,756, + 3,12,6,0,751,756,3,14,7,0,752,756,3,16,8,0,753,756,3,20,10,0,754, + 756,3,22,11,0,755,748,1,0,0,0,755,749,1,0,0,0,755,750,1,0,0,0,755, + 751,1,0,0,0,755,752,1,0,0,0,755,753,1,0,0,0,755,754,1,0,0,0,756, + 5,1,0,0,0,757,758,5,1136,0,0,758,7,1,0,0,0,759,798,3,24,12,0,760, + 798,3,26,13,0,761,798,3,28,14,0,762,798,3,30,15,0,763,798,3,32,16, + 0,764,798,3,34,17,0,765,798,3,38,19,0,766,798,3,40,20,0,767,798, + 3,42,21,0,768,798,3,44,22,0,769,798,3,46,23,0,770,798,3,56,28,0, + 771,798,3,36,18,0,772,798,3,126,63,0,773,798,3,128,64,0,774,798, + 3,130,65,0,775,798,3,132,66,0,776,798,3,134,67,0,777,798,3,136,68, + 0,778,798,3,138,69,0,779,798,3,140,70,0,780,798,3,142,71,0,781,798, + 3,144,72,0,782,798,3,150,75,0,783,798,3,152,76,0,784,798,3,154,77, + 0,785,798,3,156,78,0,786,798,3,158,79,0,787,798,3,160,80,0,788,798, + 3,162,81,0,789,798,3,164,82,0,790,798,3,166,83,0,791,798,3,168,84, + 0,792,798,3,170,85,0,793,798,3,172,86,0,794,798,3,174,87,0,795,798, + 3,176,88,0,796,798,3,180,90,0,797,759,1,0,0,0,797,760,1,0,0,0,797, + 761,1,0,0,0,797,762,1,0,0,0,797,763,1,0,0,0,797,764,1,0,0,0,797, + 765,1,0,0,0,797,766,1,0,0,0,797,767,1,0,0,0,797,768,1,0,0,0,797, + 769,1,0,0,0,797,770,1,0,0,0,797,771,1,0,0,0,797,772,1,0,0,0,797, + 773,1,0,0,0,797,774,1,0,0,0,797,775,1,0,0,0,797,776,1,0,0,0,797, + 777,1,0,0,0,797,778,1,0,0,0,797,779,1,0,0,0,797,780,1,0,0,0,797, + 781,1,0,0,0,797,782,1,0,0,0,797,783,1,0,0,0,797,784,1,0,0,0,797, + 785,1,0,0,0,797,786,1,0,0,0,797,787,1,0,0,0,797,788,1,0,0,0,797, + 789,1,0,0,0,797,790,1,0,0,0,797,791,1,0,0,0,797,792,1,0,0,0,797, + 793,1,0,0,0,797,794,1,0,0,0,797,795,1,0,0,0,797,796,1,0,0,0,798, + 9,1,0,0,0,799,813,3,198,99,0,800,813,3,190,95,0,801,813,3,200,100, + 0,802,813,3,184,92,0,803,813,3,196,98,0,804,813,3,182,91,0,805,813, + 3,192,96,0,806,813,3,194,97,0,807,813,3,186,93,0,808,813,3,188,94, + 0,809,813,3,202,101,0,810,813,3,538,269,0,811,813,3,540,270,0,812, + 799,1,0,0,0,812,800,1,0,0,0,812,801,1,0,0,0,812,802,1,0,0,0,812, + 803,1,0,0,0,812,804,1,0,0,0,812,805,1,0,0,0,812,806,1,0,0,0,812, + 807,1,0,0,0,812,808,1,0,0,0,812,809,1,0,0,0,812,810,1,0,0,0,812, + 811,1,0,0,0,813,11,1,0,0,0,814,824,3,296,148,0,815,824,3,298,149, + 0,816,824,3,300,150,0,817,824,3,302,151,0,818,824,3,304,152,0,819, + 824,3,306,153,0,820,824,3,308,154,0,821,824,3,310,155,0,822,824, + 3,312,156,0,823,814,1,0,0,0,823,815,1,0,0,0,823,816,1,0,0,0,823, + 817,1,0,0,0,823,818,1,0,0,0,823,819,1,0,0,0,823,820,1,0,0,0,823, + 821,1,0,0,0,823,822,1,0,0,0,824,13,1,0,0,0,825,841,3,328,164,0,826, + 841,3,330,165,0,827,841,3,332,166,0,828,841,3,334,167,0,829,841, + 3,336,168,0,830,841,3,338,169,0,831,841,3,340,170,0,832,841,3,342, + 171,0,833,841,3,344,172,0,834,841,3,368,184,0,835,841,3,370,185, + 0,836,841,3,372,186,0,837,841,3,374,187,0,838,841,3,376,188,0,839, + 841,3,378,189,0,840,825,1,0,0,0,840,826,1,0,0,0,840,827,1,0,0,0, + 840,828,1,0,0,0,840,829,1,0,0,0,840,830,1,0,0,0,840,831,1,0,0,0, + 840,832,1,0,0,0,840,833,1,0,0,0,840,834,1,0,0,0,840,835,1,0,0,0, + 840,836,1,0,0,0,840,837,1,0,0,0,840,838,1,0,0,0,840,839,1,0,0,0, + 841,15,1,0,0,0,842,846,3,380,190,0,843,846,3,382,191,0,844,846,3, + 384,192,0,845,842,1,0,0,0,845,843,1,0,0,0,845,844,1,0,0,0,846,17, + 1,0,0,0,847,858,3,388,194,0,848,858,3,390,195,0,849,858,3,392,196, + 0,850,858,3,396,198,0,851,858,3,398,199,0,852,858,3,400,200,0,853, + 858,3,404,202,0,854,858,3,394,197,0,855,858,3,402,201,0,856,858, + 3,406,203,0,857,847,1,0,0,0,857,848,1,0,0,0,857,849,1,0,0,0,857, + 850,1,0,0,0,857,851,1,0,0,0,857,852,1,0,0,0,857,853,1,0,0,0,857, + 854,1,0,0,0,857,855,1,0,0,0,857,856,1,0,0,0,858,19,1,0,0,0,859,885, + 3,424,212,0,860,885,3,426,213,0,861,885,3,428,214,0,862,885,3,430, + 215,0,863,885,3,434,217,0,864,885,3,436,218,0,865,885,3,438,219, + 0,866,885,3,440,220,0,867,885,3,468,234,0,868,885,3,470,235,0,869, + 885,3,472,236,0,870,885,3,474,237,0,871,885,3,476,238,0,872,885, + 3,480,240,0,873,885,3,482,241,0,874,885,3,484,242,0,875,885,3,486, + 243,0,876,885,3,488,244,0,877,885,3,502,251,0,878,885,3,504,252, + 0,879,885,3,506,253,0,880,885,3,508,254,0,881,885,3,510,255,0,882, + 885,3,512,256,0,883,885,3,514,257,0,884,859,1,0,0,0,884,860,1,0, + 0,0,884,861,1,0,0,0,884,862,1,0,0,0,884,863,1,0,0,0,884,864,1,0, + 0,0,884,865,1,0,0,0,884,866,1,0,0,0,884,867,1,0,0,0,884,868,1,0, + 0,0,884,869,1,0,0,0,884,870,1,0,0,0,884,871,1,0,0,0,884,872,1,0, + 0,0,884,873,1,0,0,0,884,874,1,0,0,0,884,875,1,0,0,0,884,876,1,0, + 0,0,884,877,1,0,0,0,884,878,1,0,0,0,884,879,1,0,0,0,884,880,1,0, + 0,0,884,881,1,0,0,0,884,882,1,0,0,0,884,883,1,0,0,0,885,21,1,0,0, + 0,886,894,3,524,262,0,887,894,3,526,263,0,888,894,3,528,264,0,889, + 894,3,530,265,0,890,894,3,532,266,0,891,894,3,534,267,0,892,894, + 3,542,271,0,893,886,1,0,0,0,893,887,1,0,0,0,893,888,1,0,0,0,893, + 889,1,0,0,0,893,890,1,0,0,0,893,891,1,0,0,0,893,892,1,0,0,0,894, + 23,1,0,0,0,895,896,5,33,0,0,896,898,7,0,0,0,897,899,3,636,318,0, + 898,897,1,0,0,0,898,899,1,0,0,0,899,900,1,0,0,0,900,904,3,578,289, + 0,901,903,3,58,29,0,902,901,1,0,0,0,903,906,1,0,0,0,904,902,1,0, + 0,0,904,905,1,0,0,0,905,25,1,0,0,0,906,904,1,0,0,0,907,909,5,33, + 0,0,908,910,3,62,31,0,909,908,1,0,0,0,909,910,1,0,0,0,910,911,1, + 0,0,0,911,913,5,415,0,0,912,914,3,636,318,0,913,912,1,0,0,0,913, + 914,1,0,0,0,914,915,1,0,0,0,915,916,3,548,274,0,916,917,5,118,0, + 0,917,918,5,605,0,0,918,925,3,64,32,0,919,920,5,118,0,0,920,922, + 5,371,0,0,921,923,5,114,0,0,922,921,1,0,0,0,922,923,1,0,0,0,923, + 924,1,0,0,0,924,926,5,561,0,0,925,919,1,0,0,0,925,926,1,0,0,0,926, + 928,1,0,0,0,927,929,3,72,36,0,928,927,1,0,0,0,928,929,1,0,0,0,929, + 932,1,0,0,0,930,931,5,368,0,0,931,933,5,1148,0,0,932,930,1,0,0,0, + 932,933,1,0,0,0,933,934,1,0,0,0,934,935,5,399,0,0,935,936,3,386, + 193,0,936,27,1,0,0,0,937,939,5,33,0,0,938,940,7,1,0,0,939,938,1, + 0,0,0,939,940,1,0,0,0,940,942,1,0,0,0,941,943,7,2,0,0,942,941,1, + 0,0,0,942,943,1,0,0,0,943,944,1,0,0,0,944,945,5,81,0,0,945,947,3, + 578,289,0,946,948,3,74,37,0,947,946,1,0,0,0,947,948,1,0,0,0,948, + 949,1,0,0,0,949,950,5,118,0,0,950,951,3,550,275,0,951,955,3,616, + 308,0,952,954,3,76,38,0,953,952,1,0,0,0,954,957,1,0,0,0,955,953, + 1,0,0,0,955,956,1,0,0,0,956,970,1,0,0,0,957,955,1,0,0,0,958,960, + 5,336,0,0,959,961,5,1124,0,0,960,959,1,0,0,0,960,961,1,0,0,0,961, + 962,1,0,0,0,962,969,7,3,0,0,963,965,5,103,0,0,964,966,5,1124,0,0, + 965,964,1,0,0,0,965,966,1,0,0,0,966,967,1,0,0,0,967,969,7,4,0,0, + 968,958,1,0,0,0,968,963,1,0,0,0,969,972,1,0,0,0,970,968,1,0,0,0, + 970,971,1,0,0,0,971,29,1,0,0,0,972,970,1,0,0,0,973,974,5,33,0,0, + 974,975,5,475,0,0,975,976,5,73,0,0,976,977,3,578,289,0,977,978,5, + 5,0,0,978,979,5,659,0,0,979,985,5,1148,0,0,980,982,5,453,0,0,981, + 983,5,1124,0,0,982,981,1,0,0,0,982,983,1,0,0,0,983,984,1,0,0,0,984, + 986,3,586,293,0,985,980,1,0,0,0,985,986,1,0,0,0,986,992,1,0,0,0, + 987,989,5,660,0,0,988,990,5,1124,0,0,989,988,1,0,0,0,989,990,1,0, + 0,0,990,991,1,0,0,0,991,993,3,586,293,0,992,987,1,0,0,0,992,993, + 1,0,0,0,993,999,1,0,0,0,994,996,5,572,0,0,995,997,5,1124,0,0,996, + 995,1,0,0,0,996,997,1,0,0,0,997,998,1,0,0,0,998,1000,3,586,293,0, + 999,994,1,0,0,0,999,1000,1,0,0,0,1000,1006,1,0,0,0,1001,1003,5,528, + 0,0,1002,1004,5,1124,0,0,1003,1002,1,0,0,0,1003,1004,1,0,0,0,1004, + 1005,1,0,0,0,1005,1007,3,578,289,0,1006,1001,1,0,0,0,1006,1007,1, + 0,0,0,1007,1009,1,0,0,0,1008,1010,5,674,0,0,1009,1008,1,0,0,0,1009, + 1010,1,0,0,0,1010,1016,1,0,0,0,1011,1013,5,368,0,0,1012,1014,5,1124, + 0,0,1013,1012,1,0,0,0,1013,1014,1,0,0,0,1014,1015,1,0,0,0,1015,1017, + 5,1148,0,0,1016,1011,1,0,0,0,1016,1017,1,0,0,0,1017,1018,1,0,0,0, + 1018,1020,5,409,0,0,1019,1021,5,1124,0,0,1020,1019,1,0,0,0,1020, + 1021,1,0,0,0,1021,1022,1,0,0,0,1022,1023,3,566,283,0,1023,31,1,0, + 0,0,1024,1026,5,33,0,0,1025,1027,3,62,31,0,1026,1025,1,0,0,0,1026, + 1027,1,0,0,0,1027,1028,1,0,0,0,1028,1029,5,131,0,0,1029,1030,3,548, + 274,0,1030,1032,5,1133,0,0,1031,1033,3,78,39,0,1032,1031,1,0,0,0, + 1032,1033,1,0,0,0,1033,1038,1,0,0,0,1034,1035,5,1135,0,0,1035,1037, + 3,78,39,0,1036,1034,1,0,0,0,1037,1040,1,0,0,0,1038,1036,1,0,0,0, + 1038,1039,1,0,0,0,1039,1041,1,0,0,0,1040,1038,1,0,0,0,1041,1045, + 5,1134,0,0,1042,1044,3,82,41,0,1043,1042,1,0,0,0,1044,1047,1,0,0, + 0,1045,1043,1,0,0,0,1045,1046,1,0,0,0,1046,1048,1,0,0,0,1047,1045, + 1,0,0,0,1048,1049,3,386,193,0,1049,33,1,0,0,0,1050,1052,5,33,0,0, + 1051,1053,3,62,31,0,1052,1051,1,0,0,0,1052,1053,1,0,0,0,1053,1055, + 1,0,0,0,1054,1056,5,335,0,0,1055,1054,1,0,0,0,1055,1056,1,0,0,0, + 1056,1057,1,0,0,0,1057,1059,5,437,0,0,1058,1060,3,636,318,0,1059, + 1058,1,0,0,0,1059,1060,1,0,0,0,1060,1061,1,0,0,0,1061,1062,3,548, + 274,0,1062,1064,5,1133,0,0,1063,1065,3,80,40,0,1064,1063,1,0,0,0, + 1064,1065,1,0,0,0,1065,1070,1,0,0,0,1066,1067,5,1135,0,0,1067,1069, + 3,80,40,0,1068,1066,1,0,0,0,1069,1072,1,0,0,0,1070,1068,1,0,0,0, + 1070,1071,1,0,0,0,1071,1073,1,0,0,0,1072,1070,1,0,0,0,1073,1074, + 5,1134,0,0,1074,1075,5,594,0,0,1075,1079,3,598,299,0,1076,1078,3, + 82,41,0,1077,1076,1,0,0,0,1078,1081,1,0,0,0,1079,1077,1,0,0,0,1079, + 1080,1,0,0,0,1080,1084,1,0,0,0,1081,1079,1,0,0,0,1082,1085,3,386, + 193,0,1083,1085,3,402,201,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0, + 1085,35,1,0,0,0,1086,1087,5,33,0,0,1087,1089,5,596,0,0,1088,1090, + 3,636,318,0,1089,1088,1,0,0,0,1089,1090,1,0,0,0,1090,1091,1,0,0, + 0,1091,1096,3,552,276,0,1092,1093,5,1135,0,0,1093,1095,3,552,276, + 0,1094,1092,1,0,0,0,1095,1098,1,0,0,0,1096,1094,1,0,0,0,1096,1097, + 1,0,0,0,1097,37,1,0,0,0,1098,1096,1,0,0,0,1099,1100,5,33,0,0,1100, + 1101,5,608,0,0,1101,1102,3,578,289,0,1102,1103,5,67,0,0,1103,1104, + 5,388,0,0,1104,1105,5,679,0,0,1105,1106,7,5,0,0,1106,1107,5,541, + 0,0,1107,1108,5,1133,0,0,1108,1113,3,84,42,0,1109,1110,5,1135,0, + 0,1110,1112,3,84,42,0,1111,1109,1,0,0,0,1112,1115,1,0,0,0,1113,1111, + 1,0,0,0,1113,1114,1,0,0,0,1114,1116,1,0,0,0,1115,1113,1,0,0,0,1116, + 1117,5,1134,0,0,1117,39,1,0,0,0,1118,1120,5,33,0,0,1119,1121,5,649, + 0,0,1120,1119,1,0,0,0,1120,1121,1,0,0,0,1121,1122,1,0,0,0,1122,1124, + 5,172,0,0,1123,1125,3,636,318,0,1124,1123,1,0,0,0,1124,1125,1,0, + 0,0,1125,1126,1,0,0,0,1126,1134,3,550,275,0,1127,1128,5,98,0,0,1128, + 1135,3,550,275,0,1129,1130,5,1133,0,0,1130,1131,5,98,0,0,1131,1132, + 3,550,275,0,1132,1133,5,1134,0,0,1133,1135,1,0,0,0,1134,1127,1,0, + 0,0,1134,1129,1,0,0,0,1135,1197,1,0,0,0,1136,1138,5,33,0,0,1137, + 1139,5,649,0,0,1138,1137,1,0,0,0,1138,1139,1,0,0,0,1139,1140,1,0, + 0,0,1140,1142,5,172,0,0,1141,1143,3,636,318,0,1142,1141,1,0,0,0, + 1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,1146,3,550,275,0,1145,1147, + 3,86,43,0,1146,1145,1,0,0,0,1146,1147,1,0,0,0,1147,1158,1,0,0,0, + 1148,1155,3,104,52,0,1149,1151,5,1135,0,0,1150,1149,1,0,0,0,1150, + 1151,1,0,0,0,1151,1152,1,0,0,0,1152,1154,3,104,52,0,1153,1150,1, + 0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156, + 1159,1,0,0,0,1157,1155,1,0,0,0,1158,1148,1,0,0,0,1158,1159,1,0,0, + 0,1159,1161,1,0,0,0,1160,1162,3,110,55,0,1161,1160,1,0,0,0,1161, + 1162,1,0,0,0,1162,1164,1,0,0,0,1163,1165,7,6,0,0,1164,1163,1,0,0, + 0,1164,1165,1,0,0,0,1165,1167,1,0,0,0,1166,1168,5,12,0,0,1167,1166, + 1,0,0,0,1167,1168,1,0,0,0,1168,1169,1,0,0,0,1169,1170,3,198,99,0, + 1170,1197,1,0,0,0,1171,1173,5,33,0,0,1172,1174,5,649,0,0,1173,1172, + 1,0,0,0,1173,1174,1,0,0,0,1174,1175,1,0,0,0,1175,1177,5,172,0,0, + 1176,1178,3,636,318,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178,1179, + 1,0,0,0,1179,1180,3,550,275,0,1180,1191,3,86,43,0,1181,1188,3,104, + 52,0,1182,1184,5,1135,0,0,1183,1182,1,0,0,0,1183,1184,1,0,0,0,1184, + 1185,1,0,0,0,1185,1187,3,104,52,0,1186,1183,1,0,0,0,1187,1190,1, + 0,0,0,1188,1186,1,0,0,0,1188,1189,1,0,0,0,1189,1192,1,0,0,0,1190, + 1188,1,0,0,0,1191,1181,1,0,0,0,1191,1192,1,0,0,0,1192,1194,1,0,0, + 0,1193,1195,3,110,55,0,1194,1193,1,0,0,0,1194,1195,1,0,0,0,1195, + 1197,1,0,0,0,1196,1118,1,0,0,0,1196,1136,1,0,0,0,1196,1171,1,0,0, + 0,1197,41,1,0,0,0,1198,1199,5,33,0,0,1199,1200,5,647,0,0,1200,1201, + 3,578,289,0,1201,1202,5,5,0,0,1202,1203,5,389,0,0,1203,1207,5,1148, + 0,0,1204,1205,5,428,0,0,1205,1206,5,1124,0,0,1206,1208,3,586,293, + 0,1207,1204,1,0,0,0,1207,1208,1,0,0,0,1208,1214,1,0,0,0,1209,1211, + 5,409,0,0,1210,1212,5,1124,0,0,1211,1210,1,0,0,0,1211,1212,1,0,0, + 0,1212,1213,1,0,0,0,1213,1215,3,566,283,0,1214,1209,1,0,0,0,1214, + 1215,1,0,0,0,1215,43,1,0,0,0,1216,1217,5,33,0,0,1217,1218,5,647, + 0,0,1218,1219,3,578,289,0,1219,1220,5,5,0,0,1220,1221,5,389,0,0, + 1221,1222,5,1148,0,0,1222,1223,5,186,0,0,1223,1224,5,475,0,0,1224, + 1225,5,73,0,0,1225,1231,3,578,289,0,1226,1228,5,423,0,0,1227,1229, + 5,1124,0,0,1228,1227,1,0,0,0,1228,1229,1,0,0,0,1229,1230,1,0,0,0, + 1230,1232,3,586,293,0,1231,1226,1,0,0,0,1231,1232,1,0,0,0,1232,1238, + 1,0,0,0,1233,1235,5,453,0,0,1234,1236,5,1124,0,0,1235,1234,1,0,0, + 0,1235,1236,1,0,0,0,1236,1237,1,0,0,0,1237,1239,3,586,293,0,1238, + 1233,1,0,0,0,1238,1239,1,0,0,0,1239,1245,1,0,0,0,1240,1242,5,341, + 0,0,1241,1243,5,1124,0,0,1242,1241,1,0,0,0,1242,1243,1,0,0,0,1243, + 1244,1,0,0,0,1244,1246,3,586,293,0,1245,1240,1,0,0,0,1245,1246,1, + 0,0,0,1246,1252,1,0,0,0,1247,1249,5,501,0,0,1248,1250,5,1124,0,0, + 1249,1248,1,0,0,0,1249,1250,1,0,0,0,1250,1251,1,0,0,0,1251,1253, + 3,586,293,0,1252,1247,1,0,0,0,1252,1253,1,0,0,0,1253,1259,1,0,0, + 0,1254,1256,5,528,0,0,1255,1257,5,1124,0,0,1256,1255,1,0,0,0,1256, + 1257,1,0,0,0,1257,1258,1,0,0,0,1258,1260,3,578,289,0,1259,1254,1, + 0,0,0,1259,1260,1,0,0,0,1260,1262,1,0,0,0,1261,1263,5,674,0,0,1262, + 1261,1,0,0,0,1262,1263,1,0,0,0,1263,1269,1,0,0,0,1264,1266,5,368, + 0,0,1265,1267,5,1124,0,0,1266,1265,1,0,0,0,1266,1267,1,0,0,0,1267, + 1268,1,0,0,0,1268,1270,5,1148,0,0,1269,1264,1,0,0,0,1269,1270,1, + 0,0,0,1270,1271,1,0,0,0,1271,1273,5,409,0,0,1272,1274,5,1124,0,0, + 1273,1272,1,0,0,0,1273,1274,1,0,0,0,1274,1275,1,0,0,0,1275,1276, + 3,566,283,0,1276,45,1,0,0,0,1277,1279,5,33,0,0,1278,1280,3,62,31, + 0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1281,1,0,0,0,1281,1282, + 5,177,0,0,1282,1283,3,548,274,0,1283,1284,7,7,0,0,1284,1285,7,8, + 0,0,1285,1286,5,118,0,0,1286,1287,3,550,275,0,1287,1288,5,65,0,0, + 1288,1289,5,52,0,0,1289,1292,5,600,0,0,1290,1291,7,9,0,0,1291,1293, + 3,548,274,0,1292,1290,1,0,0,0,1292,1293,1,0,0,0,1293,1294,1,0,0, + 0,1294,1295,3,386,193,0,1295,47,1,0,0,0,1296,1298,5,192,0,0,1297, + 1299,5,571,0,0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0, + 0,0,1300,1301,3,50,25,0,1301,49,1,0,0,0,1302,1314,3,52,26,0,1303, + 1304,5,1133,0,0,1304,1309,3,54,27,0,1305,1306,5,1135,0,0,1306,1308, + 3,54,27,0,1307,1305,1,0,0,0,1308,1311,1,0,0,0,1309,1307,1,0,0,0, + 1309,1310,1,0,0,0,1310,1312,1,0,0,0,1311,1309,1,0,0,0,1312,1313, + 5,1134,0,0,1313,1315,1,0,0,0,1314,1303,1,0,0,0,1314,1315,1,0,0,0, + 1315,1316,1,0,0,0,1316,1317,5,12,0,0,1317,1318,5,1133,0,0,1318,1319, + 3,10,5,0,1319,1322,5,1134,0,0,1320,1321,5,1135,0,0,1321,1323,3,50, + 25,0,1322,1320,1,0,0,0,1322,1323,1,0,0,0,1323,51,1,0,0,0,1324,1325, + 3,578,289,0,1325,53,1,0,0,0,1326,1327,3,578,289,0,1327,55,1,0,0, + 0,1328,1330,5,33,0,0,1329,1331,3,638,319,0,1330,1329,1,0,0,0,1330, + 1331,1,0,0,0,1331,1335,1,0,0,0,1332,1333,5,336,0,0,1333,1334,5,1124, + 0,0,1334,1336,7,10,0,0,1335,1332,1,0,0,0,1335,1336,1,0,0,0,1336, + 1338,1,0,0,0,1337,1339,3,62,31,0,1338,1337,1,0,0,0,1338,1339,1,0, + 0,0,1339,1343,1,0,0,0,1340,1341,5,160,0,0,1341,1342,5,606,0,0,1342, + 1344,7,11,0,0,1343,1340,1,0,0,0,1343,1344,1,0,0,0,1344,1345,1,0, + 0,0,1345,1346,5,671,0,0,1346,1351,3,548,274,0,1347,1348,5,1133,0, + 0,1348,1349,3,610,305,0,1349,1350,5,1134,0,0,1350,1352,1,0,0,0,1351, + 1347,1,0,0,0,1351,1352,1,0,0,0,1352,1353,1,0,0,0,1353,1373,5,12, + 0,0,1354,1356,5,1133,0,0,1355,1357,3,48,24,0,1356,1355,1,0,0,0,1356, + 1357,1,0,0,0,1357,1358,1,0,0,0,1358,1359,3,198,99,0,1359,1360,5, + 1134,0,0,1360,1374,1,0,0,0,1361,1363,3,48,24,0,1362,1361,1,0,0,0, + 1362,1363,1,0,0,0,1363,1364,1,0,0,0,1364,1371,3,198,99,0,1365,1367, + 5,192,0,0,1366,1368,7,12,0,0,1367,1366,1,0,0,0,1367,1368,1,0,0,0, + 1368,1369,1,0,0,0,1369,1370,5,26,0,0,1370,1372,5,120,0,0,1371,1365, + 1,0,0,0,1371,1372,1,0,0,0,1372,1374,1,0,0,0,1373,1354,1,0,0,0,1373, + 1362,1,0,0,0,1374,57,1,0,0,0,1375,1377,5,42,0,0,1376,1375,1,0,0, + 0,1376,1377,1,0,0,0,1377,1378,1,0,0,0,1378,1380,3,60,30,0,1379,1381, + 5,1124,0,0,1380,1379,1,0,0,0,1380,1381,1,0,0,0,1381,1384,1,0,0,0, + 1382,1385,3,562,281,0,1383,1385,5,42,0,0,1384,1382,1,0,0,0,1384, + 1383,1,0,0,0,1385,1409,1,0,0,0,1386,1388,5,42,0,0,1387,1386,1,0, + 0,0,1387,1388,1,0,0,0,1388,1389,1,0,0,0,1389,1391,5,27,0,0,1390, + 1392,5,1124,0,0,1391,1390,1,0,0,0,1391,1392,1,0,0,0,1392,1393,1, + 0,0,0,1393,1409,3,564,282,0,1394,1396,5,42,0,0,1395,1394,1,0,0,0, + 1395,1396,1,0,0,0,1396,1397,1,0,0,0,1397,1399,5,405,0,0,1398,1400, + 5,1124,0,0,1399,1398,1,0,0,0,1399,1400,1,0,0,0,1400,1401,1,0,0,0, + 1401,1409,5,1148,0,0,1402,1403,5,134,0,0,1403,1405,5,538,0,0,1404, + 1406,5,1124,0,0,1405,1404,1,0,0,0,1405,1406,1,0,0,0,1406,1407,1, + 0,0,0,1407,1409,7,13,0,0,1408,1376,1,0,0,0,1408,1387,1,0,0,0,1408, + 1395,1,0,0,0,1408,1402,1,0,0,0,1409,59,1,0,0,0,1410,1411,5,25,0, + 0,1411,1416,5,153,0,0,1412,1416,5,841,0,0,1413,1414,5,222,0,0,1414, + 1416,5,153,0,0,1415,1410,1,0,0,0,1415,1412,1,0,0,0,1415,1413,1,0, + 0,0,1416,61,1,0,0,0,1417,1418,5,392,0,0,1418,1425,5,1124,0,0,1419, + 1426,3,558,279,0,1420,1423,5,37,0,0,1421,1422,5,1133,0,0,1422,1424, + 5,1134,0,0,1423,1421,1,0,0,0,1423,1424,1,0,0,0,1424,1426,1,0,0,0, + 1425,1419,1,0,0,0,1425,1420,1,0,0,0,1426,63,1,0,0,0,1427,1428,5, + 338,0,0,1428,1432,3,66,33,0,1429,1431,3,68,34,0,1430,1429,1,0,0, + 0,1431,1434,1,0,0,0,1432,1430,1,0,0,0,1432,1433,1,0,0,0,1433,1462, + 1,0,0,0,1434,1432,1,0,0,0,1435,1438,5,417,0,0,1436,1439,3,584,292, + 0,1437,1439,3,682,341,0,1438,1436,1,0,0,0,1438,1437,1,0,0,0,1439, + 1440,1,0,0,0,1440,1449,3,70,35,0,1441,1442,5,630,0,0,1442,1446,3, + 66,33,0,1443,1445,3,68,34,0,1444,1443,1,0,0,0,1445,1448,1,0,0,0, + 1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1450,1,0,0,0,1448,1446, + 1,0,0,0,1449,1441,1,0,0,0,1449,1450,1,0,0,0,1450,1459,1,0,0,0,1451, + 1452,5,408,0,0,1452,1456,3,66,33,0,1453,1455,3,68,34,0,1454,1453, + 1,0,0,0,1455,1458,1,0,0,0,1456,1454,1,0,0,0,1456,1457,1,0,0,0,1457, + 1460,1,0,0,0,1458,1456,1,0,0,0,1459,1451,1,0,0,0,1459,1460,1,0,0, + 0,1460,1462,1,0,0,0,1461,1427,1,0,0,0,1461,1435,1,0,0,0,1462,65, + 1,0,0,0,1463,1468,5,315,0,0,1464,1468,3,588,294,0,1465,1468,3,584, + 292,0,1466,1468,3,682,341,0,1467,1463,1,0,0,0,1467,1464,1,0,0,0, + 1467,1465,1,0,0,0,1467,1466,1,0,0,0,1468,67,1,0,0,0,1469,1470,5, + 1120,0,0,1470,1473,5,86,0,0,1471,1474,3,584,292,0,1472,1474,3,682, + 341,0,1473,1471,1,0,0,0,1473,1472,1,0,0,0,1474,1475,1,0,0,0,1475, + 1476,3,70,35,0,1476,69,1,0,0,0,1477,1491,3,706,353,0,1478,1491,5, + 221,0,0,1479,1491,5,240,0,0,1480,1491,5,241,0,0,1481,1491,5,242, + 0,0,1482,1491,5,243,0,0,1483,1491,5,244,0,0,1484,1491,5,245,0,0, + 1485,1491,5,246,0,0,1486,1491,5,247,0,0,1487,1491,5,248,0,0,1488, + 1491,5,249,0,0,1489,1491,5,250,0,0,1490,1477,1,0,0,0,1490,1478,1, + 0,0,0,1490,1479,1,0,0,0,1490,1480,1,0,0,0,1490,1481,1,0,0,0,1490, + 1482,1,0,0,0,1490,1483,1,0,0,0,1490,1484,1,0,0,0,1490,1485,1,0,0, + 0,1490,1486,1,0,0,0,1490,1487,1,0,0,0,1490,1488,1,0,0,0,1490,1489, + 1,0,0,0,1491,71,1,0,0,0,1492,1498,5,403,0,0,1493,1498,5,396,0,0, + 1494,1495,5,396,0,0,1495,1496,5,118,0,0,1496,1498,5,614,0,0,1497, + 1492,1,0,0,0,1497,1493,1,0,0,0,1497,1494,1,0,0,0,1498,73,1,0,0,0, + 1499,1500,5,187,0,0,1500,1501,7,14,0,0,1501,75,1,0,0,0,1502,1504, + 5,467,0,0,1503,1505,5,1124,0,0,1504,1503,1,0,0,0,1504,1505,1,0,0, + 0,1505,1506,1,0,0,0,1506,1525,3,586,293,0,1507,1525,3,74,37,0,1508, + 1509,5,192,0,0,1509,1510,5,547,0,0,1510,1525,3,578,289,0,1511,1512, + 5,368,0,0,1512,1525,5,1148,0,0,1513,1525,7,15,0,0,1514,1516,5,875, + 0,0,1515,1517,5,1124,0,0,1516,1515,1,0,0,0,1516,1517,1,0,0,0,1517, + 1518,1,0,0,0,1518,1525,5,1148,0,0,1519,1521,5,1000,0,0,1520,1522, + 5,1124,0,0,1521,1520,1,0,0,0,1521,1522,1,0,0,0,1522,1523,1,0,0,0, + 1523,1525,5,1148,0,0,1524,1502,1,0,0,0,1524,1507,1,0,0,0,1524,1508, + 1,0,0,0,1524,1511,1,0,0,0,1524,1513,1,0,0,0,1524,1514,1,0,0,0,1524, + 1519,1,0,0,0,1525,77,1,0,0,0,1526,1528,7,16,0,0,1527,1526,1,0,0, + 0,1527,1528,1,0,0,0,1528,1529,1,0,0,0,1529,1530,3,578,289,0,1530, + 1531,3,598,299,0,1531,79,1,0,0,0,1532,1533,3,578,289,0,1533,1534, + 3,598,299,0,1534,81,1,0,0,0,1535,1536,5,368,0,0,1536,1559,5,1148, + 0,0,1537,1538,5,468,0,0,1538,1559,5,160,0,0,1539,1541,5,114,0,0, + 1540,1539,1,0,0,0,1540,1541,1,0,0,0,1541,1542,1,0,0,0,1542,1559, + 5,47,0,0,1543,1544,5,381,0,0,1544,1554,5,160,0,0,1545,1546,5,521, + 0,0,1546,1554,5,160,0,0,1547,1548,5,135,0,0,1548,1549,5,160,0,0, + 1549,1554,5,388,0,0,1550,1551,5,112,0,0,1551,1552,5,160,0,0,1552, + 1554,5,388,0,0,1553,1543,1,0,0,0,1553,1545,1,0,0,0,1553,1547,1,0, + 0,0,1553,1550,1,0,0,0,1554,1559,1,0,0,0,1555,1556,5,160,0,0,1556, + 1557,5,606,0,0,1557,1559,7,11,0,0,1558,1535,1,0,0,0,1558,1537,1, + 0,0,0,1558,1540,1,0,0,0,1558,1553,1,0,0,0,1558,1555,1,0,0,0,1559, + 83,1,0,0,0,1560,1561,5,446,0,0,1561,1575,5,1148,0,0,1562,1563,5, + 39,0,0,1563,1575,5,1148,0,0,1564,1565,5,665,0,0,1565,1575,5,1148, + 0,0,1566,1567,5,551,0,0,1567,1575,5,1148,0,0,1568,1569,5,617,0,0, + 1569,1575,5,1148,0,0,1570,1571,5,542,0,0,1571,1575,5,1148,0,0,1572, + 1573,5,557,0,0,1573,1575,3,584,292,0,1574,1560,1,0,0,0,1574,1562, + 1,0,0,0,1574,1564,1,0,0,0,1574,1566,1,0,0,0,1574,1568,1,0,0,0,1574, + 1570,1,0,0,0,1574,1572,1,0,0,0,1575,85,1,0,0,0,1576,1577,5,1133, + 0,0,1577,1582,3,88,44,0,1578,1579,5,1135,0,0,1579,1581,3,88,44,0, + 1580,1578,1,0,0,0,1581,1584,1,0,0,0,1582,1580,1,0,0,0,1582,1583, + 1,0,0,0,1583,1585,1,0,0,0,1584,1582,1,0,0,0,1585,1586,5,1134,0,0, + 1586,87,1,0,0,0,1587,1588,3,554,277,0,1588,1589,3,90,45,0,1589,1599, + 1,0,0,0,1590,1592,3,94,47,0,1591,1593,5,114,0,0,1592,1591,1,0,0, + 0,1592,1593,1,0,0,0,1593,1595,1,0,0,0,1594,1596,5,57,0,0,1595,1594, + 1,0,0,0,1595,1596,1,0,0,0,1596,1599,1,0,0,0,1597,1599,3,102,51,0, + 1598,1587,1,0,0,0,1598,1590,1,0,0,0,1598,1597,1,0,0,0,1599,89,1, + 0,0,0,1600,1604,3,598,299,0,1601,1603,3,92,46,0,1602,1601,1,0,0, + 0,1603,1606,1,0,0,0,1604,1602,1,0,0,0,1604,1605,1,0,0,0,1605,1608, + 1,0,0,0,1606,1604,1,0,0,0,1607,1609,5,114,0,0,1608,1607,1,0,0,0, + 1608,1609,1,0,0,0,1609,1611,1,0,0,0,1610,1612,5,57,0,0,1611,1610, + 1,0,0,0,1611,1612,1,0,0,0,1612,91,1,0,0,0,1613,1667,3,594,297,0, + 1614,1615,5,42,0,0,1615,1667,3,628,314,0,1616,1667,5,673,0,0,1617, + 1667,5,459,0,0,1618,1623,5,342,0,0,1619,1620,5,118,0,0,1620,1621, + 5,184,0,0,1621,1623,3,630,315,0,1622,1618,1,0,0,0,1622,1619,1,0, + 0,0,1623,1667,1,0,0,0,1624,1626,5,130,0,0,1625,1624,1,0,0,0,1625, + 1626,1,0,0,0,1626,1627,1,0,0,0,1627,1667,5,91,0,0,1628,1630,5,181, + 0,0,1629,1631,5,91,0,0,1630,1629,1,0,0,0,1630,1631,1,0,0,0,1631, + 1667,1,0,0,0,1632,1633,5,368,0,0,1633,1667,5,1148,0,0,1634,1635, + 5,366,0,0,1635,1667,7,17,0,0,1636,1637,5,636,0,0,1637,1667,7,18, + 0,0,1638,1667,3,96,48,0,1639,1640,5,27,0,0,1640,1667,3,564,282,0, + 1641,1642,5,70,0,0,1642,1644,5,8,0,0,1643,1641,1,0,0,0,1643,1644, + 1,0,0,0,1644,1645,1,0,0,0,1645,1646,5,12,0,0,1646,1647,5,1133,0, + 0,1647,1648,3,682,341,0,1648,1650,5,1134,0,0,1649,1651,7,19,0,0, + 1650,1649,1,0,0,0,1650,1651,1,0,0,0,1651,1667,1,0,0,0,1652,1653, + 5,239,0,0,1653,1654,5,42,0,0,1654,1667,5,669,0,0,1655,1657,5,30, + 0,0,1656,1658,3,578,289,0,1657,1656,1,0,0,0,1657,1658,1,0,0,0,1658, + 1660,1,0,0,0,1659,1655,1,0,0,0,1659,1660,1,0,0,0,1660,1661,1,0,0, + 0,1661,1662,5,26,0,0,1662,1663,5,1133,0,0,1663,1664,3,682,341,0, + 1664,1665,5,1134,0,0,1665,1667,1,0,0,0,1666,1613,1,0,0,0,1666,1614, + 1,0,0,0,1666,1616,1,0,0,0,1666,1617,1,0,0,0,1666,1622,1,0,0,0,1666, + 1625,1,0,0,0,1666,1628,1,0,0,0,1666,1632,1,0,0,0,1666,1634,1,0,0, + 0,1666,1636,1,0,0,0,1666,1638,1,0,0,0,1666,1639,1,0,0,0,1666,1643, + 1,0,0,0,1666,1652,1,0,0,0,1666,1659,1,0,0,0,1667,93,1,0,0,0,1668, + 1670,5,30,0,0,1669,1671,3,578,289,0,1670,1669,1,0,0,0,1670,1671, + 1,0,0,0,1671,1673,1,0,0,0,1672,1668,1,0,0,0,1672,1673,1,0,0,0,1673, + 1674,1,0,0,0,1674,1675,5,130,0,0,1675,1677,5,91,0,0,1676,1678,3, + 578,289,0,1677,1676,1,0,0,0,1677,1678,1,0,0,0,1678,1680,1,0,0,0, + 1679,1681,3,74,37,0,1680,1679,1,0,0,0,1680,1681,1,0,0,0,1681,1682, + 1,0,0,0,1682,1686,3,616,308,0,1683,1685,3,76,38,0,1684,1683,1,0, + 0,0,1685,1688,1,0,0,0,1686,1684,1,0,0,0,1686,1687,1,0,0,0,1687,1738, + 1,0,0,0,1688,1686,1,0,0,0,1689,1691,5,30,0,0,1690,1692,3,578,289, + 0,1691,1690,1,0,0,0,1691,1692,1,0,0,0,1692,1694,1,0,0,0,1693,1689, + 1,0,0,0,1693,1694,1,0,0,0,1694,1695,1,0,0,0,1695,1697,5,181,0,0, + 1696,1698,7,20,0,0,1697,1696,1,0,0,0,1697,1698,1,0,0,0,1698,1700, + 1,0,0,0,1699,1701,3,578,289,0,1700,1699,1,0,0,0,1700,1701,1,0,0, + 0,1701,1703,1,0,0,0,1702,1704,3,74,37,0,1703,1702,1,0,0,0,1703,1704, + 1,0,0,0,1704,1705,1,0,0,0,1705,1709,3,616,308,0,1706,1708,3,76,38, + 0,1707,1706,1,0,0,0,1708,1711,1,0,0,0,1709,1707,1,0,0,0,1709,1710, + 1,0,0,0,1710,1738,1,0,0,0,1711,1709,1,0,0,0,1712,1714,5,30,0,0,1713, + 1715,3,578,289,0,1714,1713,1,0,0,0,1714,1715,1,0,0,0,1715,1717,1, + 0,0,0,1716,1712,1,0,0,0,1716,1717,1,0,0,0,1717,1718,1,0,0,0,1718, + 1719,5,67,0,0,1719,1721,5,91,0,0,1720,1722,3,578,289,0,1721,1720, + 1,0,0,0,1721,1722,1,0,0,0,1722,1723,1,0,0,0,1723,1724,3,616,308, + 0,1724,1725,3,96,48,0,1725,1738,1,0,0,0,1726,1728,5,30,0,0,1727, + 1729,3,578,289,0,1728,1727,1,0,0,0,1728,1729,1,0,0,0,1729,1731,1, + 0,0,0,1730,1726,1,0,0,0,1730,1731,1,0,0,0,1731,1732,1,0,0,0,1732, + 1733,5,26,0,0,1733,1734,5,1133,0,0,1734,1735,3,682,341,0,1735,1736, + 5,1134,0,0,1736,1738,1,0,0,0,1737,1672,1,0,0,0,1737,1693,1,0,0,0, + 1737,1716,1,0,0,0,1737,1730,1,0,0,0,1738,95,1,0,0,0,1739,1740,5, + 136,0,0,1740,1742,3,550,275,0,1741,1743,3,616,308,0,1742,1741,1, + 0,0,0,1742,1743,1,0,0,0,1743,1746,1,0,0,0,1744,1745,5,109,0,0,1745, + 1747,7,21,0,0,1746,1744,1,0,0,0,1746,1747,1,0,0,0,1747,1749,1,0, + 0,0,1748,1750,3,98,49,0,1749,1748,1,0,0,0,1749,1750,1,0,0,0,1750, + 97,1,0,0,0,1751,1752,5,118,0,0,1752,1753,5,44,0,0,1753,1757,3,100, + 50,0,1754,1755,5,118,0,0,1755,1756,5,184,0,0,1756,1758,3,100,50, + 0,1757,1754,1,0,0,0,1757,1758,1,0,0,0,1758,1768,1,0,0,0,1759,1760, + 5,118,0,0,1760,1761,5,184,0,0,1761,1765,3,100,50,0,1762,1763,5,118, + 0,0,1763,1764,5,44,0,0,1764,1766,3,100,50,0,1765,1762,1,0,0,0,1765, + 1766,1,0,0,0,1766,1768,1,0,0,0,1767,1751,1,0,0,0,1767,1759,1,0,0, + 0,1768,99,1,0,0,0,1769,1778,5,144,0,0,1770,1778,5,21,0,0,1771,1772, + 5,153,0,0,1772,1778,5,116,0,0,1773,1774,5,521,0,0,1774,1778,5,333, + 0,0,1775,1776,5,153,0,0,1776,1778,5,42,0,0,1777,1769,1,0,0,0,1777, + 1770,1,0,0,0,1777,1771,1,0,0,0,1777,1773,1,0,0,0,1777,1775,1,0,0, + 0,1778,101,1,0,0,0,1779,1781,7,20,0,0,1780,1782,3,578,289,0,1781, + 1780,1,0,0,0,1781,1782,1,0,0,0,1782,1784,1,0,0,0,1783,1785,3,74, + 37,0,1784,1783,1,0,0,0,1784,1785,1,0,0,0,1785,1786,1,0,0,0,1786, + 1790,3,616,308,0,1787,1789,3,76,38,0,1788,1787,1,0,0,0,1789,1792, + 1,0,0,0,1790,1788,1,0,0,0,1790,1791,1,0,0,0,1791,1808,1,0,0,0,1792, + 1790,1,0,0,0,1793,1795,7,22,0,0,1794,1796,7,20,0,0,1795,1794,1,0, + 0,0,1795,1796,1,0,0,0,1796,1798,1,0,0,0,1797,1799,3,578,289,0,1798, + 1797,1,0,0,0,1798,1799,1,0,0,0,1799,1800,1,0,0,0,1800,1804,3,616, + 308,0,1801,1803,3,76,38,0,1802,1801,1,0,0,0,1803,1806,1,0,0,0,1804, + 1802,1,0,0,0,1804,1805,1,0,0,0,1805,1808,1,0,0,0,1806,1804,1,0,0, + 0,1807,1779,1,0,0,0,1807,1793,1,0,0,0,1808,103,1,0,0,0,1809,1811, + 5,409,0,0,1810,1812,5,1124,0,0,1811,1810,1,0,0,0,1811,1812,1,0,0, + 0,1812,1814,1,0,0,0,1813,1815,3,566,283,0,1814,1813,1,0,0,0,1814, + 1815,1,0,0,0,1815,1995,1,0,0,0,1816,1818,5,875,0,0,1817,1819,5,1124, + 0,0,1818,1817,1,0,0,0,1818,1819,1,0,0,0,1819,1820,1,0,0,0,1820,1995, + 5,1148,0,0,1821,1823,5,341,0,0,1822,1824,5,1124,0,0,1823,1822,1, + 0,0,0,1823,1824,1,0,0,0,1824,1825,1,0,0,0,1825,1995,3,584,292,0, + 1826,1828,5,342,0,0,1827,1829,5,1124,0,0,1828,1827,1,0,0,0,1828, + 1829,1,0,0,0,1829,1830,1,0,0,0,1830,1995,3,584,292,0,1831,1833,5, + 343,0,0,1832,1834,5,1124,0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0, + 1834,1835,1,0,0,0,1835,1995,3,584,292,0,1836,1838,5,42,0,0,1837, + 1836,1,0,0,0,1837,1838,1,0,0,0,1838,1839,1,0,0,0,1839,1841,3,60, + 30,0,1840,1842,5,1124,0,0,1841,1840,1,0,0,0,1841,1842,1,0,0,0,1842, + 1845,1,0,0,0,1843,1846,3,562,281,0,1844,1846,5,42,0,0,1845,1843, + 1,0,0,0,1845,1844,1,0,0,0,1846,1995,1,0,0,0,1847,1849,7,23,0,0,1848, + 1850,5,1124,0,0,1849,1848,1,0,0,0,1849,1850,1,0,0,0,1850,1851,1, + 0,0,0,1851,1995,7,24,0,0,1852,1854,5,42,0,0,1853,1852,1,0,0,0,1853, + 1854,1,0,0,0,1854,1855,1,0,0,0,1855,1857,5,27,0,0,1856,1858,5,1124, + 0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1995, + 3,564,282,0,1860,1862,5,368,0,0,1861,1863,5,1124,0,0,1862,1861,1, + 0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,1995,5,1148,0,0,1865, + 1867,5,373,0,0,1866,1868,5,1124,0,0,1867,1866,1,0,0,0,1867,1868, + 1,0,0,0,1868,1869,1,0,0,0,1869,1995,7,25,0,0,1870,1872,5,376,0,0, + 1871,1873,5,1124,0,0,1872,1871,1,0,0,0,1872,1873,1,0,0,0,1873,1874, + 1,0,0,0,1874,1995,5,1148,0,0,1875,1876,7,26,0,0,1876,1878,5,395, + 0,0,1877,1879,5,1124,0,0,1878,1877,1,0,0,0,1878,1879,1,0,0,0,1879, + 1880,1,0,0,0,1880,1995,5,1148,0,0,1881,1883,5,393,0,0,1882,1884, + 5,1124,0,0,1883,1882,1,0,0,0,1883,1884,1,0,0,0,1884,1885,1,0,0,0, + 1885,1995,7,24,0,0,1886,1888,5,405,0,0,1887,1889,5,1124,0,0,1888, + 1887,1,0,0,0,1888,1889,1,0,0,0,1889,1890,1,0,0,0,1890,1995,5,1148, + 0,0,1891,1893,7,27,0,0,1892,1894,5,1124,0,0,1893,1892,1,0,0,0,1893, + 1894,1,0,0,0,1894,1895,1,0,0,0,1895,1995,7,24,0,0,1896,1898,7,28, + 0,0,1897,1899,5,1124,0,0,1898,1897,1,0,0,0,1898,1899,1,0,0,0,1899, + 1900,1,0,0,0,1900,1995,3,584,292,0,1901,1903,5,406,0,0,1902,1904, + 5,1124,0,0,1903,1902,1,0,0,0,1903,1904,1,0,0,0,1904,1905,1,0,0,0, + 1905,1995,3,584,292,0,1906,1907,5,81,0,0,1907,1909,5,395,0,0,1908, + 1910,5,1124,0,0,1909,1908,1,0,0,0,1909,1910,1,0,0,0,1910,1911,1, + 0,0,0,1911,1995,5,1148,0,0,1912,1914,5,455,0,0,1913,1915,5,1124, + 0,0,1914,1913,1,0,0,0,1914,1915,1,0,0,0,1915,1916,1,0,0,0,1916,1995, + 7,29,0,0,1917,1919,5,467,0,0,1918,1920,5,1124,0,0,1919,1918,1,0, + 0,0,1919,1920,1,0,0,0,1920,1921,1,0,0,0,1921,1995,3,586,293,0,1922, + 1924,5,500,0,0,1923,1925,5,1124,0,0,1924,1923,1,0,0,0,1924,1925, + 1,0,0,0,1925,1926,1,0,0,0,1926,1995,3,584,292,0,1927,1929,5,510, + 0,0,1928,1930,5,1124,0,0,1929,1928,1,0,0,0,1929,1930,1,0,0,0,1930, + 1931,1,0,0,0,1931,1995,3,584,292,0,1932,1934,5,543,0,0,1933,1935, + 5,1124,0,0,1934,1933,1,0,0,0,1934,1935,1,0,0,0,1935,1936,1,0,0,0, + 1936,1995,7,13,0,0,1937,1939,5,551,0,0,1938,1940,5,1124,0,0,1939, + 1938,1,0,0,0,1939,1940,1,0,0,0,1940,1941,1,0,0,0,1941,1995,5,1148, + 0,0,1942,1944,5,602,0,0,1943,1945,5,1124,0,0,1944,1943,1,0,0,0,1944, + 1945,1,0,0,0,1945,1946,1,0,0,0,1946,1995,7,30,0,0,1947,1948,5,629, + 0,0,1948,1995,5,653,0,0,1949,1951,5,1000,0,0,1950,1952,5,1124,0, + 0,1951,1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,1995, + 5,1148,0,0,1954,1956,5,631,0,0,1955,1957,5,1124,0,0,1956,1955,1, + 0,0,0,1956,1957,1,0,0,0,1957,1958,1,0,0,0,1958,1995,7,13,0,0,1959, + 1961,5,632,0,0,1960,1962,5,1124,0,0,1961,1960,1,0,0,0,1961,1962, + 1,0,0,0,1962,1963,1,0,0,0,1963,1995,7,13,0,0,1964,1966,5,633,0,0, + 1965,1967,5,1124,0,0,1966,1965,1,0,0,0,1966,1967,1,0,0,0,1967,1970, + 1,0,0,0,1968,1971,5,42,0,0,1969,1971,3,584,292,0,1970,1968,1,0,0, + 0,1970,1969,1,0,0,0,1971,1995,1,0,0,0,1972,1973,5,647,0,0,1973,1975, + 3,578,289,0,1974,1976,3,108,54,0,1975,1974,1,0,0,0,1975,1976,1,0, + 0,0,1976,1995,1,0,0,0,1977,1978,5,648,0,0,1978,1979,5,1124,0,0,1979, + 1995,3,106,53,0,1980,1995,3,108,54,0,1981,1983,5,654,0,0,1982,1984, + 5,1124,0,0,1983,1982,1,0,0,0,1983,1984,1,0,0,0,1984,1985,1,0,0,0, + 1985,1995,7,24,0,0,1986,1988,5,180,0,0,1987,1989,5,1124,0,0,1988, + 1987,1,0,0,0,1988,1989,1,0,0,0,1989,1990,1,0,0,0,1990,1991,5,1133, + 0,0,1991,1992,3,614,307,0,1992,1993,5,1134,0,0,1993,1995,1,0,0,0, + 1994,1809,1,0,0,0,1994,1816,1,0,0,0,1994,1821,1,0,0,0,1994,1826, + 1,0,0,0,1994,1831,1,0,0,0,1994,1837,1,0,0,0,1994,1847,1,0,0,0,1994, + 1853,1,0,0,0,1994,1860,1,0,0,0,1994,1865,1,0,0,0,1994,1870,1,0,0, + 0,1994,1875,1,0,0,0,1994,1881,1,0,0,0,1994,1886,1,0,0,0,1994,1891, + 1,0,0,0,1994,1896,1,0,0,0,1994,1901,1,0,0,0,1994,1906,1,0,0,0,1994, + 1912,1,0,0,0,1994,1917,1,0,0,0,1994,1922,1,0,0,0,1994,1927,1,0,0, + 0,1994,1932,1,0,0,0,1994,1937,1,0,0,0,1994,1942,1,0,0,0,1994,1947, + 1,0,0,0,1994,1949,1,0,0,0,1994,1954,1,0,0,0,1994,1959,1,0,0,0,1994, + 1964,1,0,0,0,1994,1972,1,0,0,0,1994,1977,1,0,0,0,1994,1980,1,0,0, + 0,1994,1981,1,0,0,0,1994,1986,1,0,0,0,1995,105,1,0,0,0,1996,1997, + 7,31,0,0,1997,107,1,0,0,0,1998,1999,5,636,0,0,1999,2000,7,18,0,0, + 2000,109,1,0,0,0,2001,2002,5,129,0,0,2002,2003,5,19,0,0,2003,2006, + 3,112,56,0,2004,2005,5,550,0,0,2005,2007,3,584,292,0,2006,2004,1, + 0,0,0,2006,2007,1,0,0,0,2007,2015,1,0,0,0,2008,2009,5,641,0,0,2009, + 2010,5,19,0,0,2010,2013,3,114,57,0,2011,2012,5,642,0,0,2012,2014, + 3,584,292,0,2013,2011,1,0,0,0,2013,2014,1,0,0,0,2014,2016,1,0,0, + 0,2015,2008,1,0,0,0,2015,2016,1,0,0,0,2016,2028,1,0,0,0,2017,2018, + 5,1133,0,0,2018,2023,3,116,58,0,2019,2020,5,1135,0,0,2020,2022,3, + 116,58,0,2021,2019,1,0,0,0,2022,2025,1,0,0,0,2023,2021,1,0,0,0,2023, + 2024,1,0,0,0,2024,2026,1,0,0,0,2025,2023,1,0,0,0,2026,2027,5,1134, + 0,0,2027,2029,1,0,0,0,2028,2017,1,0,0,0,2028,2029,1,0,0,0,2029,111, + 1,0,0,0,2030,2032,5,100,0,0,2031,2030,1,0,0,0,2031,2032,1,0,0,0, + 2032,2033,1,0,0,0,2033,2034,5,443,0,0,2034,2035,5,1133,0,0,2035, + 2036,3,682,341,0,2036,2037,5,1134,0,0,2037,2077,1,0,0,0,2038,2040, + 5,100,0,0,2039,2038,1,0,0,0,2039,2040,1,0,0,0,2040,2041,1,0,0,0, + 2041,2045,5,91,0,0,2042,2043,5,336,0,0,2043,2044,5,1124,0,0,2044, + 2046,7,32,0,0,2045,2042,1,0,0,0,2045,2046,1,0,0,0,2046,2047,1,0, + 0,0,2047,2049,5,1133,0,0,2048,2050,3,610,305,0,2049,2048,1,0,0,0, + 2049,2050,1,0,0,0,2050,2051,1,0,0,0,2051,2077,5,1134,0,0,2052,2062, + 5,133,0,0,2053,2054,5,1133,0,0,2054,2055,3,682,341,0,2055,2056,5, + 1134,0,0,2056,2063,1,0,0,0,2057,2058,5,365,0,0,2058,2059,5,1133, + 0,0,2059,2060,3,610,305,0,2060,2061,5,1134,0,0,2061,2063,1,0,0,0, + 2062,2053,1,0,0,0,2062,2057,1,0,0,0,2063,2077,1,0,0,0,2064,2074, + 5,473,0,0,2065,2066,5,1133,0,0,2066,2067,3,682,341,0,2067,2068,5, + 1134,0,0,2068,2075,1,0,0,0,2069,2070,5,365,0,0,2070,2071,5,1133, + 0,0,2071,2072,3,610,305,0,2072,2073,5,1134,0,0,2073,2075,1,0,0,0, + 2074,2065,1,0,0,0,2074,2069,1,0,0,0,2075,2077,1,0,0,0,2076,2031, + 1,0,0,0,2076,2039,1,0,0,0,2076,2052,1,0,0,0,2076,2064,1,0,0,0,2077, + 113,1,0,0,0,2078,2080,5,100,0,0,2079,2078,1,0,0,0,2079,2080,1,0, + 0,0,2080,2081,1,0,0,0,2081,2082,5,443,0,0,2082,2083,5,1133,0,0,2083, + 2084,3,682,341,0,2084,2085,5,1134,0,0,2085,2100,1,0,0,0,2086,2088, + 5,100,0,0,2087,2086,1,0,0,0,2087,2088,1,0,0,0,2088,2089,1,0,0,0, + 2089,2093,5,91,0,0,2090,2091,5,336,0,0,2091,2092,5,1124,0,0,2092, + 2094,7,32,0,0,2093,2090,1,0,0,0,2093,2094,1,0,0,0,2094,2095,1,0, + 0,0,2095,2096,5,1133,0,0,2096,2097,3,610,305,0,2097,2098,5,1134, + 0,0,2098,2100,1,0,0,0,2099,2079,1,0,0,0,2099,2087,1,0,0,0,2100,115, + 1,0,0,0,2101,2102,5,129,0,0,2102,2103,3,578,289,0,2103,2104,5,188, + 0,0,2104,2105,5,471,0,0,2105,2106,5,651,0,0,2106,2107,5,1133,0,0, + 2107,2112,3,118,59,0,2108,2109,5,1135,0,0,2109,2111,3,118,59,0,2110, + 2108,1,0,0,0,2111,2114,1,0,0,0,2112,2110,1,0,0,0,2112,2113,1,0,0, + 0,2113,2115,1,0,0,0,2114,2112,1,0,0,0,2115,2119,5,1134,0,0,2116, + 2118,3,124,62,0,2117,2116,1,0,0,0,2118,2121,1,0,0,0,2119,2117,1, + 0,0,0,2119,2120,1,0,0,0,2120,2133,1,0,0,0,2121,2119,1,0,0,0,2122, + 2123,5,1133,0,0,2123,2128,3,122,61,0,2124,2125,5,1135,0,0,2125,2127, + 3,122,61,0,2126,2124,1,0,0,0,2127,2130,1,0,0,0,2128,2126,1,0,0,0, + 2128,2129,1,0,0,0,2129,2131,1,0,0,0,2130,2128,1,0,0,0,2131,2132, + 5,1134,0,0,2132,2134,1,0,0,0,2133,2122,1,0,0,0,2133,2134,1,0,0,0, + 2134,2248,1,0,0,0,2135,2136,5,129,0,0,2136,2137,3,578,289,0,2137, + 2138,5,188,0,0,2138,2139,5,471,0,0,2139,2140,5,651,0,0,2140,2144, + 3,118,59,0,2141,2143,3,124,62,0,2142,2141,1,0,0,0,2143,2146,1,0, + 0,0,2144,2142,1,0,0,0,2144,2145,1,0,0,0,2145,2158,1,0,0,0,2146,2144, + 1,0,0,0,2147,2148,5,1133,0,0,2148,2153,3,122,61,0,2149,2150,5,1135, + 0,0,2150,2152,3,122,61,0,2151,2149,1,0,0,0,2152,2155,1,0,0,0,2153, + 2151,1,0,0,0,2153,2154,1,0,0,0,2154,2156,1,0,0,0,2155,2153,1,0,0, + 0,2156,2157,5,1134,0,0,2157,2159,1,0,0,0,2158,2147,1,0,0,0,2158, + 2159,1,0,0,0,2159,2248,1,0,0,0,2160,2161,5,129,0,0,2161,2162,3,578, + 289,0,2162,2163,5,188,0,0,2163,2164,5,80,0,0,2164,2165,5,1133,0, + 0,2165,2170,3,118,59,0,2166,2167,5,1135,0,0,2167,2169,3,118,59,0, + 2168,2166,1,0,0,0,2169,2172,1,0,0,0,2170,2168,1,0,0,0,2170,2171, + 1,0,0,0,2171,2173,1,0,0,0,2172,2170,1,0,0,0,2173,2177,5,1134,0,0, + 2174,2176,3,124,62,0,2175,2174,1,0,0,0,2176,2179,1,0,0,0,2177,2175, + 1,0,0,0,2177,2178,1,0,0,0,2178,2191,1,0,0,0,2179,2177,1,0,0,0,2180, + 2181,5,1133,0,0,2181,2186,3,122,61,0,2182,2183,5,1135,0,0,2183,2185, + 3,122,61,0,2184,2182,1,0,0,0,2185,2188,1,0,0,0,2186,2184,1,0,0,0, + 2186,2187,1,0,0,0,2187,2189,1,0,0,0,2188,2186,1,0,0,0,2189,2190, + 5,1134,0,0,2190,2192,1,0,0,0,2191,2180,1,0,0,0,2191,2192,1,0,0,0, + 2192,2248,1,0,0,0,2193,2194,5,129,0,0,2194,2195,3,578,289,0,2195, + 2196,5,188,0,0,2196,2197,5,80,0,0,2197,2198,5,1133,0,0,2198,2203, + 3,120,60,0,2199,2200,5,1135,0,0,2200,2202,3,120,60,0,2201,2199,1, + 0,0,0,2202,2205,1,0,0,0,2203,2201,1,0,0,0,2203,2204,1,0,0,0,2204, + 2206,1,0,0,0,2205,2203,1,0,0,0,2206,2210,5,1134,0,0,2207,2209,3, + 124,62,0,2208,2207,1,0,0,0,2209,2212,1,0,0,0,2210,2208,1,0,0,0,2210, + 2211,1,0,0,0,2211,2224,1,0,0,0,2212,2210,1,0,0,0,2213,2214,5,1133, + 0,0,2214,2219,3,122,61,0,2215,2216,5,1135,0,0,2216,2218,3,122,61, + 0,2217,2215,1,0,0,0,2218,2221,1,0,0,0,2219,2217,1,0,0,0,2219,2220, + 1,0,0,0,2220,2222,1,0,0,0,2221,2219,1,0,0,0,2222,2223,5,1134,0,0, + 2223,2225,1,0,0,0,2224,2213,1,0,0,0,2224,2225,1,0,0,0,2225,2248, + 1,0,0,0,2226,2227,5,129,0,0,2227,2231,3,578,289,0,2228,2230,3,124, + 62,0,2229,2228,1,0,0,0,2230,2233,1,0,0,0,2231,2229,1,0,0,0,2231, + 2232,1,0,0,0,2232,2245,1,0,0,0,2233,2231,1,0,0,0,2234,2235,5,1133, + 0,0,2235,2240,3,122,61,0,2236,2237,5,1135,0,0,2237,2239,3,122,61, + 0,2238,2236,1,0,0,0,2239,2242,1,0,0,0,2240,2238,1,0,0,0,2240,2241, + 1,0,0,0,2241,2243,1,0,0,0,2242,2240,1,0,0,0,2243,2244,5,1134,0,0, + 2244,2246,1,0,0,0,2245,2234,1,0,0,0,2245,2246,1,0,0,0,2246,2248, + 1,0,0,0,2247,2101,1,0,0,0,2247,2135,1,0,0,0,2247,2160,1,0,0,0,2247, + 2193,1,0,0,0,2247,2226,1,0,0,0,2248,117,1,0,0,0,2249,2253,3,596, + 298,0,2250,2253,3,682,341,0,2251,2253,5,110,0,0,2252,2249,1,0,0, + 0,2252,2250,1,0,0,0,2252,2251,1,0,0,0,2253,119,1,0,0,0,2254,2255, + 5,1133,0,0,2255,2258,3,118,59,0,2256,2257,5,1135,0,0,2257,2259,3, + 118,59,0,2258,2256,1,0,0,0,2259,2260,1,0,0,0,2260,2258,1,0,0,0,2260, + 2261,1,0,0,0,2261,2262,1,0,0,0,2262,2263,5,1134,0,0,2263,121,1,0, + 0,0,2264,2265,5,641,0,0,2265,2269,3,578,289,0,2266,2268,3,124,62, + 0,2267,2266,1,0,0,0,2268,2271,1,0,0,0,2269,2267,1,0,0,0,2269,2270, + 1,0,0,0,2270,123,1,0,0,0,2271,2269,1,0,0,0,2272,2274,5,42,0,0,2273, + 2272,1,0,0,0,2273,2274,1,0,0,0,2274,2276,1,0,0,0,2275,2277,5,636, + 0,0,2276,2275,1,0,0,0,2276,2277,1,0,0,0,2277,2278,1,0,0,0,2278,2280, + 5,409,0,0,2279,2281,5,1124,0,0,2280,2279,1,0,0,0,2280,2281,1,0,0, + 0,2281,2282,1,0,0,0,2282,2321,3,566,283,0,2283,2285,5,368,0,0,2284, + 2286,5,1124,0,0,2285,2284,1,0,0,0,2285,2286,1,0,0,0,2286,2287,1, + 0,0,0,2287,2321,5,1148,0,0,2288,2289,5,388,0,0,2289,2291,5,395,0, + 0,2290,2292,5,1124,0,0,2291,2290,1,0,0,0,2291,2292,1,0,0,0,2292, + 2293,1,0,0,0,2293,2321,5,1148,0,0,2294,2295,5,81,0,0,2295,2297,5, + 395,0,0,2296,2298,5,1124,0,0,2297,2296,1,0,0,0,2297,2298,1,0,0,0, + 2298,2299,1,0,0,0,2299,2321,5,1148,0,0,2300,2302,5,500,0,0,2301, + 2303,5,1124,0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303,2304,1, + 0,0,0,2304,2321,3,584,292,0,2305,2307,5,510,0,0,2306,2308,5,1124, + 0,0,2307,2306,1,0,0,0,2307,2308,1,0,0,0,2308,2309,1,0,0,0,2309,2321, + 3,584,292,0,2310,2312,5,647,0,0,2311,2313,5,1124,0,0,2312,2311,1, + 0,0,0,2312,2313,1,0,0,0,2313,2314,1,0,0,0,2314,2321,3,578,289,0, + 2315,2317,5,528,0,0,2316,2318,5,1124,0,0,2317,2316,1,0,0,0,2317, + 2318,1,0,0,0,2318,2319,1,0,0,0,2319,2321,3,578,289,0,2320,2273,1, + 0,0,0,2320,2283,1,0,0,0,2320,2288,1,0,0,0,2320,2294,1,0,0,0,2320, + 2300,1,0,0,0,2320,2305,1,0,0,0,2320,2310,1,0,0,0,2320,2315,1,0,0, + 0,2321,125,1,0,0,0,2322,2323,5,7,0,0,2323,2325,7,0,0,0,2324,2326, + 3,578,289,0,2325,2324,1,0,0,0,2325,2326,1,0,0,0,2326,2328,1,0,0, + 0,2327,2329,3,58,29,0,2328,2327,1,0,0,0,2329,2330,1,0,0,0,2330,2328, + 1,0,0,0,2330,2331,1,0,0,0,2331,2341,1,0,0,0,2332,2333,5,7,0,0,2333, + 2334,7,0,0,0,2334,2335,3,578,289,0,2335,2336,5,664,0,0,2336,2337, + 5,388,0,0,2337,2338,5,395,0,0,2338,2339,5,516,0,0,2339,2341,1,0, + 0,0,2340,2322,1,0,0,0,2340,2332,1,0,0,0,2341,127,1,0,0,0,2342,2344, + 5,7,0,0,2343,2345,3,62,31,0,2344,2343,1,0,0,0,2344,2345,1,0,0,0, + 2345,2346,1,0,0,0,2346,2347,5,415,0,0,2347,2351,3,548,274,0,2348, + 2349,5,118,0,0,2349,2350,5,605,0,0,2350,2352,3,64,32,0,2351,2348, + 1,0,0,0,2351,2352,1,0,0,0,2352,2359,1,0,0,0,2353,2354,5,118,0,0, + 2354,2356,5,371,0,0,2355,2357,5,114,0,0,2356,2355,1,0,0,0,2356,2357, + 1,0,0,0,2357,2358,1,0,0,0,2358,2360,5,561,0,0,2359,2353,1,0,0,0, + 2359,2360,1,0,0,0,2360,2364,1,0,0,0,2361,2362,5,139,0,0,2362,2363, + 5,175,0,0,2363,2365,3,548,274,0,2364,2361,1,0,0,0,2364,2365,1,0, + 0,0,2365,2367,1,0,0,0,2366,2368,3,72,36,0,2367,2366,1,0,0,0,2367, + 2368,1,0,0,0,2368,2371,1,0,0,0,2369,2370,5,368,0,0,2370,2372,5,1148, + 0,0,2371,2369,1,0,0,0,2371,2372,1,0,0,0,2372,2375,1,0,0,0,2373,2374, + 5,399,0,0,2374,2376,3,386,193,0,2375,2373,1,0,0,0,2375,2376,1,0, + 0,0,2376,129,1,0,0,0,2377,2378,5,7,0,0,2378,2379,5,437,0,0,2379, + 2383,3,548,274,0,2380,2382,3,82,41,0,2381,2380,1,0,0,0,2382,2385, + 1,0,0,0,2383,2381,1,0,0,0,2383,2384,1,0,0,0,2384,131,1,0,0,0,2385, + 2383,1,0,0,0,2386,2387,5,7,0,0,2387,2388,5,457,0,0,2388,2389,5,599, + 0,0,2389,2390,5,791,0,0,2390,2391,5,477,0,0,2391,2392,5,91,0,0,2392, + 133,1,0,0,0,2393,2394,5,7,0,0,2394,2395,5,475,0,0,2395,2396,5,73, + 0,0,2396,2397,3,578,289,0,2397,2398,5,5,0,0,2398,2399,5,659,0,0, + 2399,2405,5,1148,0,0,2400,2402,5,453,0,0,2401,2403,5,1124,0,0,2402, + 2401,1,0,0,0,2402,2403,1,0,0,0,2403,2404,1,0,0,0,2404,2406,3,586, + 293,0,2405,2400,1,0,0,0,2405,2406,1,0,0,0,2406,2408,1,0,0,0,2407, + 2409,5,674,0,0,2408,2407,1,0,0,0,2408,2409,1,0,0,0,2409,2410,1,0, + 0,0,2410,2412,5,409,0,0,2411,2413,5,1124,0,0,2412,2411,1,0,0,0,2412, + 2413,1,0,0,0,2413,2414,1,0,0,0,2414,2415,3,566,283,0,2415,135,1, + 0,0,0,2416,2417,5,7,0,0,2417,2418,5,131,0,0,2418,2422,3,548,274, + 0,2419,2421,3,82,41,0,2420,2419,1,0,0,0,2421,2424,1,0,0,0,2422,2420, + 1,0,0,0,2422,2423,1,0,0,0,2423,137,1,0,0,0,2424,2422,1,0,0,0,2425, + 2426,5,7,0,0,2426,2427,5,608,0,0,2427,2428,3,578,289,0,2428,2429, + 5,541,0,0,2429,2430,5,1133,0,0,2430,2435,3,84,42,0,2431,2432,5,1135, + 0,0,2432,2434,3,84,42,0,2433,2431,1,0,0,0,2434,2437,1,0,0,0,2435, + 2433,1,0,0,0,2435,2436,1,0,0,0,2436,2438,1,0,0,0,2437,2435,1,0,0, + 0,2438,2439,5,1134,0,0,2439,139,1,0,0,0,2440,2442,5,7,0,0,2441,2443, + 7,1,0,0,2442,2441,1,0,0,0,2442,2443,1,0,0,0,2443,2445,1,0,0,0,2444, + 2446,5,78,0,0,2445,2444,1,0,0,0,2445,2446,1,0,0,0,2446,2447,1,0, + 0,0,2447,2448,5,172,0,0,2448,2450,3,550,275,0,2449,2451,3,640,320, + 0,2450,2449,1,0,0,0,2450,2451,1,0,0,0,2451,2460,1,0,0,0,2452,2457, + 3,146,73,0,2453,2454,5,1135,0,0,2454,2456,3,146,73,0,2455,2453,1, + 0,0,0,2456,2459,1,0,0,0,2457,2455,1,0,0,0,2457,2458,1,0,0,0,2458, + 2461,1,0,0,0,2459,2457,1,0,0,0,2460,2452,1,0,0,0,2460,2461,1,0,0, + 0,2461,2463,1,0,0,0,2462,2464,3,110,55,0,2463,2462,1,0,0,0,2463, + 2464,1,0,0,0,2464,141,1,0,0,0,2465,2466,5,7,0,0,2466,2467,5,647, + 0,0,2467,2468,3,578,289,0,2468,2469,7,33,0,0,2469,2470,5,389,0,0, + 2470,2474,5,1148,0,0,2471,2472,5,453,0,0,2472,2473,5,1124,0,0,2473, + 2475,3,586,293,0,2474,2471,1,0,0,0,2474,2475,1,0,0,0,2475,2477,1, + 0,0,0,2476,2478,5,674,0,0,2477,2476,1,0,0,0,2477,2478,1,0,0,0,2478, + 2479,1,0,0,0,2479,2481,5,409,0,0,2480,2482,5,1124,0,0,2481,2480, + 1,0,0,0,2481,2482,1,0,0,0,2482,2483,1,0,0,0,2483,2484,3,566,283, + 0,2484,143,1,0,0,0,2485,2489,5,7,0,0,2486,2487,5,336,0,0,2487,2488, + 5,1124,0,0,2488,2490,7,10,0,0,2489,2486,1,0,0,0,2489,2490,1,0,0, + 0,2490,2492,1,0,0,0,2491,2493,3,62,31,0,2492,2491,1,0,0,0,2492,2493, + 1,0,0,0,2493,2497,1,0,0,0,2494,2495,5,160,0,0,2495,2496,5,606,0, + 0,2496,2498,7,11,0,0,2497,2494,1,0,0,0,2497,2498,1,0,0,0,2498,2499, + 1,0,0,0,2499,2500,5,671,0,0,2500,2505,3,548,274,0,2501,2502,5,1133, + 0,0,2502,2503,3,610,305,0,2503,2504,5,1134,0,0,2504,2506,1,0,0,0, + 2505,2501,1,0,0,0,2505,2506,1,0,0,0,2506,2507,1,0,0,0,2507,2508, + 5,12,0,0,2508,2515,3,198,99,0,2509,2511,5,192,0,0,2510,2512,7,12, + 0,0,2511,2510,1,0,0,0,2511,2512,1,0,0,0,2512,2513,1,0,0,0,2513,2514, + 5,26,0,0,2514,2516,5,120,0,0,2515,2509,1,0,0,0,2515,2516,1,0,0,0, + 2516,145,1,0,0,0,2517,2524,3,104,52,0,2518,2520,5,1135,0,0,2519, + 2518,1,0,0,0,2519,2520,1,0,0,0,2520,2521,1,0,0,0,2521,2523,3,104, + 52,0,2522,2519,1,0,0,0,2523,2526,1,0,0,0,2524,2522,1,0,0,0,2524, + 2525,1,0,0,0,2525,2869,1,0,0,0,2526,2524,1,0,0,0,2527,2529,5,5,0, + 0,2528,2530,5,28,0,0,2529,2528,1,0,0,0,2529,2530,1,0,0,0,2530,2531, + 1,0,0,0,2531,2532,3,578,289,0,2532,2536,3,90,45,0,2533,2537,5,430, + 0,0,2534,2535,5,334,0,0,2535,2537,3,578,289,0,2536,2533,1,0,0,0, + 2536,2534,1,0,0,0,2536,2537,1,0,0,0,2537,2869,1,0,0,0,2538,2540, + 5,5,0,0,2539,2541,5,28,0,0,2540,2539,1,0,0,0,2540,2541,1,0,0,0,2541, + 2542,1,0,0,0,2542,2543,5,1133,0,0,2543,2544,3,578,289,0,2544,2551, + 3,90,45,0,2545,2546,5,1135,0,0,2546,2547,3,578,289,0,2547,2548,3, + 90,45,0,2548,2550,1,0,0,0,2549,2545,1,0,0,0,2550,2553,1,0,0,0,2551, + 2549,1,0,0,0,2551,2552,1,0,0,0,2552,2554,1,0,0,0,2553,2551,1,0,0, + 0,2554,2555,5,1134,0,0,2555,2869,1,0,0,0,2556,2557,5,5,0,0,2557, + 2559,7,20,0,0,2558,2560,3,578,289,0,2559,2558,1,0,0,0,2559,2560, + 1,0,0,0,2560,2562,1,0,0,0,2561,2563,3,74,37,0,2562,2561,1,0,0,0, + 2562,2563,1,0,0,0,2563,2564,1,0,0,0,2564,2568,3,616,308,0,2565,2567, + 3,76,38,0,2566,2565,1,0,0,0,2567,2570,1,0,0,0,2568,2566,1,0,0,0, + 2568,2569,1,0,0,0,2569,2869,1,0,0,0,2570,2568,1,0,0,0,2571,2576, + 5,5,0,0,2572,2574,5,30,0,0,2573,2575,3,578,289,0,2574,2573,1,0,0, + 0,2574,2575,1,0,0,0,2575,2577,1,0,0,0,2576,2572,1,0,0,0,2576,2577, + 1,0,0,0,2577,2578,1,0,0,0,2578,2579,5,130,0,0,2579,2581,5,91,0,0, + 2580,2582,3,578,289,0,2581,2580,1,0,0,0,2581,2582,1,0,0,0,2582,2584, + 1,0,0,0,2583,2585,3,74,37,0,2584,2583,1,0,0,0,2584,2585,1,0,0,0, + 2585,2586,1,0,0,0,2586,2590,3,616,308,0,2587,2589,3,76,38,0,2588, + 2587,1,0,0,0,2589,2592,1,0,0,0,2590,2588,1,0,0,0,2590,2591,1,0,0, + 0,2591,2869,1,0,0,0,2592,2590,1,0,0,0,2593,2598,5,5,0,0,2594,2596, + 5,30,0,0,2595,2597,3,578,289,0,2596,2595,1,0,0,0,2596,2597,1,0,0, + 0,2597,2599,1,0,0,0,2598,2594,1,0,0,0,2598,2599,1,0,0,0,2599,2600, + 1,0,0,0,2600,2602,5,181,0,0,2601,2603,7,20,0,0,2602,2601,1,0,0,0, + 2602,2603,1,0,0,0,2603,2605,1,0,0,0,2604,2606,3,578,289,0,2605,2604, + 1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607,2609,3,74,37,0, + 2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1,0,0,0,2610,2614, + 3,616,308,0,2611,2613,3,76,38,0,2612,2611,1,0,0,0,2613,2616,1,0, + 0,0,2614,2612,1,0,0,0,2614,2615,1,0,0,0,2615,2869,1,0,0,0,2616,2614, + 1,0,0,0,2617,2618,5,5,0,0,2618,2620,7,22,0,0,2619,2621,7,20,0,0, + 2620,2619,1,0,0,0,2620,2621,1,0,0,0,2621,2623,1,0,0,0,2622,2624, + 3,578,289,0,2623,2622,1,0,0,0,2623,2624,1,0,0,0,2624,2625,1,0,0, + 0,2625,2629,3,616,308,0,2626,2628,3,76,38,0,2627,2626,1,0,0,0,2628, + 2631,1,0,0,0,2629,2627,1,0,0,0,2629,2630,1,0,0,0,2630,2869,1,0,0, + 0,2631,2629,1,0,0,0,2632,2637,5,5,0,0,2633,2635,5,30,0,0,2634,2636, + 3,578,289,0,2635,2634,1,0,0,0,2635,2636,1,0,0,0,2636,2638,1,0,0, + 0,2637,2633,1,0,0,0,2637,2638,1,0,0,0,2638,2639,1,0,0,0,2639,2640, + 5,67,0,0,2640,2642,5,91,0,0,2641,2643,3,578,289,0,2642,2641,1,0, + 0,0,2642,2643,1,0,0,0,2643,2644,1,0,0,0,2644,2645,3,616,308,0,2645, + 2646,3,96,48,0,2646,2869,1,0,0,0,2647,2652,5,5,0,0,2648,2650,5,30, + 0,0,2649,2651,3,578,289,0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651, + 2653,1,0,0,0,2652,2648,1,0,0,0,2652,2653,1,0,0,0,2653,2654,1,0,0, + 0,2654,2661,5,26,0,0,2655,2662,3,578,289,0,2656,2662,3,588,294,0, + 2657,2658,5,1133,0,0,2658,2659,3,682,341,0,2659,2660,5,1134,0,0, + 2660,2662,1,0,0,0,2661,2655,1,0,0,0,2661,2656,1,0,0,0,2661,2657, + 1,0,0,0,2662,2664,1,0,0,0,2663,2665,5,114,0,0,2664,2663,1,0,0,0, + 2664,2665,1,0,0,0,2665,2667,1,0,0,0,2666,2668,5,57,0,0,2667,2666, + 1,0,0,0,2667,2668,1,0,0,0,2668,2869,1,0,0,0,2669,2674,5,7,0,0,2670, + 2672,5,30,0,0,2671,2673,3,578,289,0,2672,2671,1,0,0,0,2672,2673, + 1,0,0,0,2673,2675,1,0,0,0,2674,2670,1,0,0,0,2674,2675,1,0,0,0,2675, + 2676,1,0,0,0,2676,2683,5,26,0,0,2677,2684,3,578,289,0,2678,2684, + 3,588,294,0,2679,2680,5,1133,0,0,2680,2681,3,682,341,0,2681,2682, + 5,1134,0,0,2682,2684,1,0,0,0,2683,2677,1,0,0,0,2683,2678,1,0,0,0, + 2683,2679,1,0,0,0,2684,2686,1,0,0,0,2685,2687,5,114,0,0,2686,2685, + 1,0,0,0,2686,2687,1,0,0,0,2687,2689,1,0,0,0,2688,2690,5,57,0,0,2689, + 2688,1,0,0,0,2689,2690,1,0,0,0,2690,2869,1,0,0,0,2691,2696,5,5,0, + 0,2692,2694,5,30,0,0,2693,2695,3,578,289,0,2694,2693,1,0,0,0,2694, + 2695,1,0,0,0,2695,2697,1,0,0,0,2696,2692,1,0,0,0,2696,2697,1,0,0, + 0,2697,2698,1,0,0,0,2698,2699,5,26,0,0,2699,2700,5,1133,0,0,2700, + 2701,3,682,341,0,2701,2702,5,1134,0,0,2702,2869,1,0,0,0,2703,2705, + 5,336,0,0,2704,2706,5,1124,0,0,2705,2704,1,0,0,0,2705,2706,1,0,0, + 0,2706,2707,1,0,0,0,2707,2869,7,34,0,0,2708,2710,5,7,0,0,2709,2711, + 5,28,0,0,2710,2709,1,0,0,0,2710,2711,1,0,0,0,2711,2712,1,0,0,0,2712, + 2718,3,578,289,0,2713,2714,5,153,0,0,2714,2715,5,42,0,0,2715,2719, + 3,628,314,0,2716,2717,5,51,0,0,2717,2719,5,42,0,0,2718,2713,1,0, + 0,0,2718,2716,1,0,0,0,2719,2869,1,0,0,0,2720,2722,5,24,0,0,2721, + 2723,5,28,0,0,2722,2721,1,0,0,0,2722,2723,1,0,0,0,2723,2724,1,0, + 0,0,2724,2725,3,578,289,0,2725,2726,3,578,289,0,2726,2730,3,90,45, + 0,2727,2731,5,430,0,0,2728,2729,5,334,0,0,2729,2731,3,578,289,0, + 2730,2727,1,0,0,0,2730,2728,1,0,0,0,2730,2731,1,0,0,0,2731,2869, + 1,0,0,0,2732,2733,5,139,0,0,2733,2734,5,28,0,0,2734,2735,3,578,289, + 0,2735,2736,5,175,0,0,2736,2737,3,578,289,0,2737,2869,1,0,0,0,2738, + 2740,5,103,0,0,2739,2741,5,1124,0,0,2740,2739,1,0,0,0,2740,2741, + 1,0,0,0,2741,2742,1,0,0,0,2742,2869,7,4,0,0,2743,2745,5,512,0,0, + 2744,2746,5,28,0,0,2745,2744,1,0,0,0,2745,2746,1,0,0,0,2746,2747, + 1,0,0,0,2747,2748,3,578,289,0,2748,2752,3,90,45,0,2749,2753,5,430, + 0,0,2750,2751,5,334,0,0,2751,2753,3,578,289,0,2752,2749,1,0,0,0, + 2752,2750,1,0,0,0,2752,2753,1,0,0,0,2753,2869,1,0,0,0,2754,2756, + 5,51,0,0,2755,2757,5,28,0,0,2756,2755,1,0,0,0,2756,2757,1,0,0,0, + 2757,2758,1,0,0,0,2758,2760,3,578,289,0,2759,2761,5,144,0,0,2760, + 2759,1,0,0,0,2760,2761,1,0,0,0,2761,2869,1,0,0,0,2762,2763,5,51, + 0,0,2763,2764,7,35,0,0,2764,2869,3,578,289,0,2765,2766,5,51,0,0, + 2766,2767,5,130,0,0,2767,2869,5,91,0,0,2768,2769,5,51,0,0,2769,2770, + 7,20,0,0,2770,2869,3,578,289,0,2771,2772,5,139,0,0,2772,2773,7,20, + 0,0,2773,2774,3,578,289,0,2774,2775,5,175,0,0,2775,2776,3,578,289, + 0,2776,2869,1,0,0,0,2777,2779,5,7,0,0,2778,2780,5,28,0,0,2779,2778, + 1,0,0,0,2779,2780,1,0,0,0,2780,2781,1,0,0,0,2781,2795,3,578,289, + 0,2782,2783,5,153,0,0,2783,2789,5,42,0,0,2784,2790,3,588,294,0,2785, + 2786,5,1133,0,0,2786,2787,3,682,341,0,2787,2788,5,1134,0,0,2788, + 2790,1,0,0,0,2789,2784,1,0,0,0,2789,2785,1,0,0,0,2790,2796,1,0,0, + 0,2791,2792,5,153,0,0,2792,2796,7,15,0,0,2793,2794,5,51,0,0,2794, + 2796,5,42,0,0,2795,2782,1,0,0,0,2795,2791,1,0,0,0,2795,2793,1,0, + 0,0,2796,2869,1,0,0,0,2797,2798,5,7,0,0,2798,2799,5,81,0,0,2799, + 2800,3,578,289,0,2800,2801,7,15,0,0,2801,2869,1,0,0,0,2802,2803, + 5,51,0,0,2803,2804,5,67,0,0,2804,2805,5,91,0,0,2805,2869,3,578,289, + 0,2806,2807,5,396,0,0,2807,2869,5,92,0,0,2808,2809,5,403,0,0,2809, + 2869,5,92,0,0,2810,2812,5,139,0,0,2811,2813,7,36,0,0,2812,2811,1, + 0,0,0,2812,2813,1,0,0,0,2813,2816,1,0,0,0,2814,2817,3,578,289,0, + 2815,2817,3,548,274,0,2816,2814,1,0,0,0,2816,2815,1,0,0,0,2817,2869, + 1,0,0,0,2818,2819,5,124,0,0,2819,2820,5,19,0,0,2820,2869,3,610,305, + 0,2821,2822,5,32,0,0,2822,2826,5,175,0,0,2823,2827,5,841,0,0,2824, + 2825,5,25,0,0,2825,2827,5,153,0,0,2826,2823,1,0,0,0,2826,2824,1, + 0,0,0,2827,2828,1,0,0,0,2828,2831,3,562,281,0,2829,2830,5,27,0,0, + 2830,2832,3,564,282,0,2831,2829,1,0,0,0,2831,2832,1,0,0,0,2832,2869, + 1,0,0,0,2833,2835,5,42,0,0,2834,2833,1,0,0,0,2834,2835,1,0,0,0,2835, + 2836,1,0,0,0,2836,2837,5,25,0,0,2837,2838,5,153,0,0,2838,2839,5, + 1124,0,0,2839,2843,3,562,281,0,2840,2841,5,27,0,0,2841,2842,5,1124, + 0,0,2842,2844,3,564,282,0,2843,2840,1,0,0,0,2843,2844,1,0,0,0,2844, + 2869,1,0,0,0,2845,2846,5,397,0,0,2846,2869,5,647,0,0,2847,2848,5, + 450,0,0,2848,2869,5,647,0,0,2849,2869,5,66,0,0,2850,2851,7,37,0, + 0,2851,2869,5,668,0,0,2852,2854,5,5,0,0,2853,2855,5,28,0,0,2854, + 2853,1,0,0,0,2854,2855,1,0,0,0,2855,2856,1,0,0,0,2856,2857,5,1133, + 0,0,2857,2862,3,88,44,0,2858,2859,5,1135,0,0,2859,2861,3,88,44,0, + 2860,2858,1,0,0,0,2861,2864,1,0,0,0,2862,2860,1,0,0,0,2862,2863, + 1,0,0,0,2863,2865,1,0,0,0,2864,2862,1,0,0,0,2865,2866,5,1134,0,0, + 2866,2869,1,0,0,0,2867,2869,3,148,74,0,2868,2517,1,0,0,0,2868,2527, + 1,0,0,0,2868,2538,1,0,0,0,2868,2556,1,0,0,0,2868,2571,1,0,0,0,2868, + 2593,1,0,0,0,2868,2617,1,0,0,0,2868,2632,1,0,0,0,2868,2647,1,0,0, + 0,2868,2669,1,0,0,0,2868,2691,1,0,0,0,2868,2703,1,0,0,0,2868,2708, + 1,0,0,0,2868,2720,1,0,0,0,2868,2732,1,0,0,0,2868,2738,1,0,0,0,2868, + 2743,1,0,0,0,2868,2754,1,0,0,0,2868,2762,1,0,0,0,2868,2765,1,0,0, + 0,2868,2768,1,0,0,0,2868,2771,1,0,0,0,2868,2777,1,0,0,0,2868,2797, + 1,0,0,0,2868,2802,1,0,0,0,2868,2806,1,0,0,0,2868,2808,1,0,0,0,2868, + 2810,1,0,0,0,2868,2818,1,0,0,0,2868,2821,1,0,0,0,2868,2834,1,0,0, + 0,2868,2845,1,0,0,0,2868,2847,1,0,0,0,2868,2849,1,0,0,0,2868,2850, + 1,0,0,0,2868,2852,1,0,0,0,2868,2867,1,0,0,0,2869,147,1,0,0,0,2870, + 2871,5,5,0,0,2871,2872,5,129,0,0,2872,2873,5,1133,0,0,2873,2878, + 3,116,58,0,2874,2875,5,1135,0,0,2875,2877,3,116,58,0,2876,2874,1, + 0,0,0,2877,2880,1,0,0,0,2878,2876,1,0,0,0,2878,2879,1,0,0,0,2879, + 2881,1,0,0,0,2880,2878,1,0,0,0,2881,2882,5,1134,0,0,2882,2969,1, + 0,0,0,2883,2884,5,51,0,0,2884,2885,5,129,0,0,2885,2969,3,610,305, + 0,2886,2887,5,397,0,0,2887,2890,5,129,0,0,2888,2891,3,610,305,0, + 2889,2891,5,6,0,0,2890,2888,1,0,0,0,2890,2889,1,0,0,0,2891,2892, + 1,0,0,0,2892,2969,5,647,0,0,2893,2894,5,450,0,0,2894,2897,5,129, + 0,0,2895,2898,3,610,305,0,2896,2898,5,6,0,0,2897,2895,1,0,0,0,2897, + 2896,1,0,0,0,2898,2899,1,0,0,0,2899,2969,5,647,0,0,2900,2901,5,656, + 0,0,2901,2904,5,129,0,0,2902,2905,3,610,305,0,2903,2905,5,6,0,0, + 2904,2902,1,0,0,0,2904,2903,1,0,0,0,2905,2969,1,0,0,0,2906,2907, + 5,363,0,0,2907,2908,5,129,0,0,2908,2969,3,584,292,0,2909,2910,5, + 579,0,0,2910,2911,5,129,0,0,2911,2912,3,610,305,0,2912,2913,5,87, + 0,0,2913,2914,5,1133,0,0,2914,2919,3,116,58,0,2915,2916,5,1135,0, + 0,2916,2918,3,116,58,0,2917,2915,1,0,0,0,2918,2921,1,0,0,0,2919, + 2917,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0,0,2921,2919,1,0,0, + 0,2922,2923,5,1134,0,0,2923,2969,1,0,0,0,2924,2925,5,418,0,0,2925, + 2926,5,129,0,0,2926,2927,3,578,289,0,2927,2928,5,192,0,0,2928,2929, + 5,172,0,0,2929,2932,3,550,275,0,2930,2931,7,37,0,0,2931,2933,5,668, + 0,0,2932,2930,1,0,0,0,2932,2933,1,0,0,0,2933,2969,1,0,0,0,2934,2935, + 5,9,0,0,2935,2938,5,129,0,0,2936,2939,3,610,305,0,2937,2939,5,6, + 0,0,2938,2936,1,0,0,0,2938,2937,1,0,0,0,2939,2969,1,0,0,0,2940,2941, + 5,26,0,0,2941,2944,5,129,0,0,2942,2945,3,610,305,0,2943,2945,5,6, + 0,0,2944,2942,1,0,0,0,2944,2943,1,0,0,0,2945,2969,1,0,0,0,2946,2947, + 5,119,0,0,2947,2950,5,129,0,0,2948,2951,3,610,305,0,2949,2951,5, + 6,0,0,2950,2948,1,0,0,0,2950,2949,1,0,0,0,2951,2969,1,0,0,0,2952, + 2953,5,569,0,0,2953,2956,5,129,0,0,2954,2957,3,610,305,0,2955,2957, + 5,6,0,0,2956,2954,1,0,0,0,2956,2955,1,0,0,0,2957,2969,1,0,0,0,2958, + 2959,5,580,0,0,2959,2962,5,129,0,0,2960,2963,3,610,305,0,2961,2963, + 5,6,0,0,2962,2960,1,0,0,0,2962,2961,1,0,0,0,2963,2969,1,0,0,0,2964, + 2965,5,578,0,0,2965,2969,5,549,0,0,2966,2967,5,664,0,0,2967,2969, + 5,549,0,0,2968,2870,1,0,0,0,2968,2883,1,0,0,0,2968,2886,1,0,0,0, + 2968,2893,1,0,0,0,2968,2900,1,0,0,0,2968,2906,1,0,0,0,2968,2909, + 1,0,0,0,2968,2924,1,0,0,0,2968,2934,1,0,0,0,2968,2940,1,0,0,0,2968, + 2946,1,0,0,0,2968,2952,1,0,0,0,2968,2958,1,0,0,0,2968,2964,1,0,0, + 0,2968,2966,1,0,0,0,2969,149,1,0,0,0,2970,2971,5,51,0,0,2971,2973, + 7,0,0,0,2972,2974,3,634,317,0,2973,2972,1,0,0,0,2973,2974,1,0,0, + 0,2974,2975,1,0,0,0,2975,2976,3,578,289,0,2976,151,1,0,0,0,2977, + 2978,5,51,0,0,2978,2980,5,415,0,0,2979,2981,3,634,317,0,2980,2979, + 1,0,0,0,2980,2981,1,0,0,0,2981,2982,1,0,0,0,2982,2983,3,548,274, + 0,2983,153,1,0,0,0,2984,2985,5,51,0,0,2985,2987,5,81,0,0,2986,2988, + 7,1,0,0,2987,2986,1,0,0,0,2987,2988,1,0,0,0,2988,2989,1,0,0,0,2989, + 2990,3,578,289,0,2990,2991,5,118,0,0,2991,3004,3,550,275,0,2992, + 2994,5,336,0,0,2993,2995,5,1124,0,0,2994,2993,1,0,0,0,2994,2995, + 1,0,0,0,2995,2996,1,0,0,0,2996,3003,7,3,0,0,2997,2999,5,103,0,0, + 2998,3000,5,1124,0,0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,3001, + 1,0,0,0,3001,3003,7,4,0,0,3002,2992,1,0,0,0,3002,2997,1,0,0,0,3003, + 3006,1,0,0,0,3004,3002,1,0,0,0,3004,3005,1,0,0,0,3005,155,1,0,0, + 0,3006,3004,1,0,0,0,3007,3008,5,51,0,0,3008,3009,5,475,0,0,3009, + 3010,5,73,0,0,3010,3011,3,578,289,0,3011,3012,5,409,0,0,3012,3013, + 5,1124,0,0,3013,3014,3,566,283,0,3014,157,1,0,0,0,3015,3016,5,51, + 0,0,3016,3018,5,131,0,0,3017,3019,3,634,317,0,3018,3017,1,0,0,0, + 3018,3019,1,0,0,0,3019,3020,1,0,0,0,3020,3021,3,548,274,0,3021,159, + 1,0,0,0,3022,3023,5,51,0,0,3023,3025,5,437,0,0,3024,3026,3,634,317, + 0,3025,3024,1,0,0,0,3025,3026,1,0,0,0,3026,3027,1,0,0,0,3027,3028, + 3,548,274,0,3028,161,1,0,0,0,3029,3030,5,51,0,0,3030,3032,5,608, + 0,0,3031,3033,3,634,317,0,3032,3031,1,0,0,0,3032,3033,1,0,0,0,3033, + 3034,1,0,0,0,3034,3035,3,578,289,0,3035,163,1,0,0,0,3036,3038,5, + 51,0,0,3037,3039,5,649,0,0,3038,3037,1,0,0,0,3038,3039,1,0,0,0,3039, + 3040,1,0,0,0,3040,3042,5,172,0,0,3041,3043,3,634,317,0,3042,3041, + 1,0,0,0,3042,3043,1,0,0,0,3043,3044,1,0,0,0,3044,3046,3,614,307, + 0,3045,3047,7,38,0,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,165, + 1,0,0,0,3048,3049,5,51,0,0,3049,3050,5,647,0,0,3050,3056,3,578,289, + 0,3051,3053,5,409,0,0,3052,3054,5,1124,0,0,3053,3052,1,0,0,0,3053, + 3054,1,0,0,0,3054,3055,1,0,0,0,3055,3057,3,566,283,0,3056,3051,1, + 0,0,0,3056,3057,1,0,0,0,3057,167,1,0,0,0,3058,3059,5,51,0,0,3059, + 3061,5,177,0,0,3060,3062,3,634,317,0,3061,3060,1,0,0,0,3061,3062, + 1,0,0,0,3062,3063,1,0,0,0,3063,3064,3,548,274,0,3064,169,1,0,0,0, + 3065,3066,5,51,0,0,3066,3068,5,671,0,0,3067,3069,3,634,317,0,3068, + 3067,1,0,0,0,3068,3069,1,0,0,0,3069,3070,1,0,0,0,3070,3075,3,548, + 274,0,3071,3072,5,1135,0,0,3072,3074,3,548,274,0,3073,3071,1,0,0, + 0,3074,3077,1,0,0,0,3075,3073,1,0,0,0,3075,3076,1,0,0,0,3076,3079, + 1,0,0,0,3077,3075,1,0,0,0,3078,3080,7,38,0,0,3079,3078,1,0,0,0,3079, + 3080,1,0,0,0,3080,171,1,0,0,0,3081,3082,5,51,0,0,3082,3084,5,596, + 0,0,3083,3085,3,634,317,0,3084,3083,1,0,0,0,3084,3085,1,0,0,0,3085, + 3086,1,0,0,0,3086,3091,3,552,276,0,3087,3088,5,1135,0,0,3088,3090, + 3,552,276,0,3089,3087,1,0,0,0,3090,3093,1,0,0,0,3091,3089,1,0,0, + 0,3091,3092,1,0,0,0,3092,173,1,0,0,0,3093,3091,1,0,0,0,3094,3095, + 5,153,0,0,3095,3096,5,42,0,0,3096,3107,5,596,0,0,3097,3108,5,529, + 0,0,3098,3108,5,6,0,0,3099,3104,3,552,276,0,3100,3101,5,1135,0,0, + 3101,3103,3,552,276,0,3102,3100,1,0,0,0,3103,3106,1,0,0,0,3104,3102, + 1,0,0,0,3104,3105,1,0,0,0,3105,3108,1,0,0,0,3106,3104,1,0,0,0,3107, + 3097,1,0,0,0,3107,3098,1,0,0,0,3107,3099,1,0,0,0,3108,3109,1,0,0, + 0,3109,3112,5,175,0,0,3110,3113,3,558,279,0,3111,3113,3,578,289, + 0,3112,3110,1,0,0,0,3112,3111,1,0,0,0,3113,3121,1,0,0,0,3114,3117, + 5,1135,0,0,3115,3118,3,558,279,0,3116,3118,3,578,289,0,3117,3115, + 1,0,0,0,3117,3116,1,0,0,0,3118,3120,1,0,0,0,3119,3114,1,0,0,0,3120, + 3123,1,0,0,0,3121,3119,1,0,0,0,3121,3122,1,0,0,0,3122,3128,1,0,0, + 0,3123,3121,1,0,0,0,3124,3125,5,153,0,0,3125,3126,5,596,0,0,3126, + 3128,3,432,216,0,3127,3094,1,0,0,0,3127,3124,1,0,0,0,3128,175,1, + 0,0,0,3129,3130,5,139,0,0,3130,3131,5,172,0,0,3131,3136,3,178,89, + 0,3132,3133,5,1135,0,0,3133,3135,3,178,89,0,3134,3132,1,0,0,0,3135, + 3138,1,0,0,0,3136,3134,1,0,0,0,3136,3137,1,0,0,0,3137,177,1,0,0, + 0,3138,3136,1,0,0,0,3139,3140,3,550,275,0,3140,3141,5,175,0,0,3141, + 3142,3,550,275,0,3142,179,1,0,0,0,3143,3145,5,656,0,0,3144,3146, + 5,172,0,0,3145,3144,1,0,0,0,3145,3146,1,0,0,0,3146,3147,1,0,0,0, + 3147,3148,3,550,275,0,3148,181,1,0,0,0,3149,3150,5,20,0,0,3150,3157, + 3,548,274,0,3151,3154,5,1133,0,0,3152,3155,3,622,311,0,3153,3155, + 3,618,309,0,3154,3152,1,0,0,0,3154,3153,1,0,0,0,3154,3155,1,0,0, + 0,3155,3156,1,0,0,0,3156,3158,5,1134,0,0,3157,3151,1,0,0,0,3157, + 3158,1,0,0,0,3158,183,1,0,0,0,3159,3162,3,212,106,0,3160,3162,3, + 214,107,0,3161,3159,1,0,0,0,3161,3160,1,0,0,0,3162,185,1,0,0,0,3163, + 3164,5,399,0,0,3164,3165,3,618,309,0,3165,187,1,0,0,0,3166,3171, + 3,216,108,0,3167,3171,3,218,109,0,3168,3171,3,220,110,0,3169,3171, + 3,222,111,0,3170,3166,1,0,0,0,3170,3167,1,0,0,0,3170,3168,1,0,0, + 0,3170,3169,1,0,0,0,3171,189,1,0,0,0,3172,3174,5,85,0,0,3173,3175, + 7,39,0,0,3174,3173,1,0,0,0,3174,3175,1,0,0,0,3175,3177,1,0,0,0,3176, + 3178,5,78,0,0,3177,3176,1,0,0,0,3177,3178,1,0,0,0,3178,3180,1,0, + 0,0,3179,3181,5,87,0,0,3180,3179,1,0,0,0,3180,3181,1,0,0,0,3181, + 3182,1,0,0,0,3182,3189,3,550,275,0,3183,3184,5,129,0,0,3184,3186, + 5,1133,0,0,3185,3187,3,610,305,0,3186,3185,1,0,0,0,3186,3187,1,0, + 0,0,3187,3188,1,0,0,0,3188,3190,5,1134,0,0,3189,3183,1,0,0,0,3189, + 3190,1,0,0,0,3190,3213,1,0,0,0,3191,3192,5,1133,0,0,3192,3193,3, + 612,306,0,3193,3194,5,1134,0,0,3194,3196,1,0,0,0,3195,3191,1,0,0, + 0,3195,3196,1,0,0,0,3196,3197,1,0,0,0,3197,3202,3,204,102,0,3198, + 3200,5,12,0,0,3199,3198,1,0,0,0,3199,3200,1,0,0,0,3200,3201,1,0, + 0,0,3201,3203,3,578,289,0,3202,3199,1,0,0,0,3202,3203,1,0,0,0,3203, + 3214,1,0,0,0,3204,3205,5,153,0,0,3205,3210,3,206,103,0,3206,3207, + 5,1135,0,0,3207,3209,3,206,103,0,3208,3206,1,0,0,0,3209,3212,1,0, + 0,0,3210,3208,1,0,0,0,3210,3211,1,0,0,0,3211,3214,1,0,0,0,3212,3210, + 1,0,0,0,3213,3195,1,0,0,0,3213,3204,1,0,0,0,3214,3227,1,0,0,0,3215, + 3216,5,118,0,0,3216,3217,5,401,0,0,3217,3218,5,91,0,0,3218,3219, + 5,184,0,0,3219,3224,3,206,103,0,3220,3221,5,1135,0,0,3221,3223,3, + 206,103,0,3222,3220,1,0,0,0,3223,3226,1,0,0,0,3224,3222,1,0,0,0, + 3224,3225,1,0,0,0,3225,3228,1,0,0,0,3226,3224,1,0,0,0,3227,3215, + 1,0,0,0,3227,3228,1,0,0,0,3228,191,1,0,0,0,3229,3230,5,102,0,0,3230, + 3232,5,388,0,0,3231,3233,7,40,0,0,3232,3231,1,0,0,0,3232,3233,1, + 0,0,0,3233,3235,1,0,0,0,3234,3236,5,474,0,0,3235,3234,1,0,0,0,3235, + 3236,1,0,0,0,3236,3237,1,0,0,0,3237,3238,5,82,0,0,3238,3240,5,1148, + 0,0,3239,3241,7,6,0,0,3240,3239,1,0,0,0,3240,3241,1,0,0,0,3241,3242, + 1,0,0,0,3242,3243,5,87,0,0,3243,3244,5,172,0,0,3244,3250,3,550,275, + 0,3245,3246,5,129,0,0,3246,3247,5,1133,0,0,3247,3248,3,610,305,0, + 3248,3249,5,1134,0,0,3249,3251,1,0,0,0,3250,3245,1,0,0,0,3250,3251, + 1,0,0,0,3251,3255,1,0,0,0,3252,3253,5,25,0,0,3253,3254,5,153,0,0, + 3254,3256,3,562,281,0,3255,3252,1,0,0,0,3255,3256,1,0,0,0,3256,3263, + 1,0,0,0,3257,3259,7,41,0,0,3258,3260,3,278,139,0,3259,3258,1,0,0, + 0,3260,3261,1,0,0,0,3261,3259,1,0,0,0,3261,3262,1,0,0,0,3262,3264, + 1,0,0,0,3263,3257,1,0,0,0,3263,3264,1,0,0,0,3264,3271,1,0,0,0,3265, + 3267,5,101,0,0,3266,3268,3,280,140,0,3267,3266,1,0,0,0,3268,3269, + 1,0,0,0,3269,3267,1,0,0,0,3269,3270,1,0,0,0,3270,3272,1,0,0,0,3271, + 3265,1,0,0,0,3271,3272,1,0,0,0,3272,3277,1,0,0,0,3273,3274,5,78, + 0,0,3274,3275,3,584,292,0,3275,3276,7,42,0,0,3276,3278,1,0,0,0,3277, + 3273,1,0,0,0,3277,3278,1,0,0,0,3278,3290,1,0,0,0,3279,3280,5,1133, + 0,0,3280,3285,3,208,104,0,3281,3282,5,1135,0,0,3282,3284,3,208,104, + 0,3283,3281,1,0,0,0,3284,3287,1,0,0,0,3285,3283,1,0,0,0,3285,3286, + 1,0,0,0,3286,3288,1,0,0,0,3287,3285,1,0,0,0,3288,3289,5,1134,0,0, + 3289,3291,1,0,0,0,3290,3279,1,0,0,0,3290,3291,1,0,0,0,3291,3301, + 1,0,0,0,3292,3293,5,153,0,0,3293,3298,3,206,103,0,3294,3295,5,1135, + 0,0,3295,3297,3,206,103,0,3296,3294,1,0,0,0,3297,3300,1,0,0,0,3298, + 3296,1,0,0,0,3298,3299,1,0,0,0,3299,3302,1,0,0,0,3300,3298,1,0,0, + 0,3301,3292,1,0,0,0,3301,3302,1,0,0,0,3302,193,1,0,0,0,3303,3304, + 5,102,0,0,3304,3306,5,682,0,0,3305,3307,7,40,0,0,3306,3305,1,0,0, + 0,3306,3307,1,0,0,0,3307,3309,1,0,0,0,3308,3310,5,474,0,0,3309,3308, + 1,0,0,0,3309,3310,1,0,0,0,3310,3311,1,0,0,0,3311,3312,5,82,0,0,3312, + 3314,5,1148,0,0,3313,3315,7,6,0,0,3314,3313,1,0,0,0,3314,3315,1, + 0,0,0,3315,3316,1,0,0,0,3316,3317,5,87,0,0,3317,3318,5,172,0,0,3318, + 3322,3,550,275,0,3319,3320,5,25,0,0,3320,3321,5,153,0,0,3321,3323, + 3,562,281,0,3322,3319,1,0,0,0,3322,3323,1,0,0,0,3323,3330,1,0,0, + 0,3324,3325,5,601,0,0,3325,3326,5,448,0,0,3326,3327,5,19,0,0,3327, + 3328,5,1126,0,0,3328,3329,5,1148,0,0,3329,3331,5,1125,0,0,3330,3324, + 1,0,0,0,3330,3331,1,0,0,0,3331,3336,1,0,0,0,3332,3333,5,78,0,0,3333, + 3334,3,584,292,0,3334,3335,7,42,0,0,3335,3337,1,0,0,0,3336,3332, + 1,0,0,0,3336,3337,1,0,0,0,3337,3349,1,0,0,0,3338,3339,5,1133,0,0, + 3339,3344,3,208,104,0,3340,3341,5,1135,0,0,3341,3343,3,208,104,0, + 3342,3340,1,0,0,0,3343,3346,1,0,0,0,3344,3342,1,0,0,0,3344,3345, + 1,0,0,0,3345,3347,1,0,0,0,3346,3344,1,0,0,0,3347,3348,5,1134,0,0, + 3348,3350,1,0,0,0,3349,3338,1,0,0,0,3349,3350,1,0,0,0,3350,3360, + 1,0,0,0,3351,3352,5,153,0,0,3352,3357,3,206,103,0,3353,3354,5,1135, + 0,0,3354,3356,3,206,103,0,3355,3353,1,0,0,0,3356,3359,1,0,0,0,3357, + 3355,1,0,0,0,3357,3358,1,0,0,0,3358,3361,1,0,0,0,3359,3357,1,0,0, + 0,3360,3351,1,0,0,0,3360,3361,1,0,0,0,3361,195,1,0,0,0,3362,3364, + 5,141,0,0,3363,3365,7,43,0,0,3364,3363,1,0,0,0,3364,3365,1,0,0,0, + 3365,3367,1,0,0,0,3366,3368,5,87,0,0,3367,3366,1,0,0,0,3367,3368, + 1,0,0,0,3368,3369,1,0,0,0,3369,3375,3,550,275,0,3370,3371,5,129, + 0,0,3371,3372,5,1133,0,0,3372,3373,3,610,305,0,3373,3374,5,1134, + 0,0,3374,3376,1,0,0,0,3375,3370,1,0,0,0,3375,3376,1,0,0,0,3376,3393, + 1,0,0,0,3377,3378,5,1133,0,0,3378,3379,3,610,305,0,3379,3380,5,1134, + 0,0,3380,3382,1,0,0,0,3381,3377,1,0,0,0,3381,3382,1,0,0,0,3382,3383, + 1,0,0,0,3383,3394,3,204,102,0,3384,3385,5,153,0,0,3385,3390,3,206, + 103,0,3386,3387,5,1135,0,0,3387,3389,3,206,103,0,3388,3386,1,0,0, + 0,3389,3392,1,0,0,0,3390,3388,1,0,0,0,3390,3391,1,0,0,0,3391,3394, + 1,0,0,0,3392,3390,1,0,0,0,3393,3381,1,0,0,0,3393,3384,1,0,0,0,3394, + 197,1,0,0,0,3395,3397,3,250,125,0,3396,3398,3,210,105,0,3397,3396, + 1,0,0,0,3397,3398,1,0,0,0,3398,3458,1,0,0,0,3399,3401,3,246,123, + 0,3400,3402,3,210,105,0,3401,3400,1,0,0,0,3401,3402,1,0,0,0,3402, + 3458,1,0,0,0,3403,3405,3,252,126,0,3404,3406,3,256,128,0,3405,3404, + 1,0,0,0,3406,3407,1,0,0,0,3407,3405,1,0,0,0,3407,3408,1,0,0,0,3408, + 3417,1,0,0,0,3409,3411,5,180,0,0,3410,3412,7,44,0,0,3411,3410,1, + 0,0,0,3411,3412,1,0,0,0,3412,3415,1,0,0,0,3413,3416,3,250,125,0, + 3414,3416,3,246,123,0,3415,3413,1,0,0,0,3415,3414,1,0,0,0,3416,3418, + 1,0,0,0,3417,3409,1,0,0,0,3417,3418,1,0,0,0,3418,3420,1,0,0,0,3419, + 3421,3,228,114,0,3420,3419,1,0,0,0,3420,3421,1,0,0,0,3421,3423,1, + 0,0,0,3422,3424,3,292,146,0,3423,3422,1,0,0,0,3423,3424,1,0,0,0, + 3424,3426,1,0,0,0,3425,3427,3,210,105,0,3426,3425,1,0,0,0,3426,3427, + 1,0,0,0,3427,3458,1,0,0,0,3428,3430,3,248,124,0,3429,3431,3,254, + 127,0,3430,3429,1,0,0,0,3431,3432,1,0,0,0,3432,3430,1,0,0,0,3432, + 3433,1,0,0,0,3433,3439,1,0,0,0,3434,3436,5,180,0,0,3435,3437,7,44, + 0,0,3436,3435,1,0,0,0,3436,3437,1,0,0,0,3437,3438,1,0,0,0,3438,3440, + 3,246,123,0,3439,3434,1,0,0,0,3439,3440,1,0,0,0,3440,3442,1,0,0, + 0,3441,3443,3,228,114,0,3442,3441,1,0,0,0,3442,3443,1,0,0,0,3443, + 3445,1,0,0,0,3444,3446,3,292,146,0,3445,3444,1,0,0,0,3445,3446,1, + 0,0,0,3446,3448,1,0,0,0,3447,3449,3,210,105,0,3448,3447,1,0,0,0, + 3448,3449,1,0,0,0,3449,3458,1,0,0,0,3450,3453,3,252,126,0,3451,3452, + 5,1135,0,0,3452,3454,3,258,129,0,3453,3451,1,0,0,0,3454,3455,1,0, + 0,0,3455,3453,1,0,0,0,3455,3456,1,0,0,0,3456,3458,1,0,0,0,3457,3395, + 1,0,0,0,3457,3399,1,0,0,0,3457,3403,1,0,0,0,3457,3428,1,0,0,0,3457, + 3450,1,0,0,0,3458,199,1,0,0,0,3459,3462,3,224,112,0,3460,3462,3, + 226,113,0,3461,3459,1,0,0,0,3461,3460,1,0,0,0,3462,201,1,0,0,0,3463, + 3464,5,188,0,0,3464,3466,5,1133,0,0,3465,3467,3,620,310,0,3466,3465, + 1,0,0,0,3466,3467,1,0,0,0,3467,3468,1,0,0,0,3468,3477,5,1134,0,0, + 3469,3470,5,1135,0,0,3470,3472,5,1133,0,0,3471,3473,3,620,310,0, + 3472,3471,1,0,0,0,3472,3473,1,0,0,0,3473,3474,1,0,0,0,3474,3476, + 5,1134,0,0,3475,3469,1,0,0,0,3476,3479,1,0,0,0,3477,3475,1,0,0,0, + 3477,3478,1,0,0,0,3478,203,1,0,0,0,3479,3477,1,0,0,0,3480,3499,3, + 198,99,0,3481,3482,7,45,0,0,3482,3484,5,1133,0,0,3483,3485,3,620, + 310,0,3484,3483,1,0,0,0,3484,3485,1,0,0,0,3485,3486,1,0,0,0,3486, + 3495,5,1134,0,0,3487,3488,5,1135,0,0,3488,3490,5,1133,0,0,3489,3491, + 3,620,310,0,3490,3489,1,0,0,0,3490,3491,1,0,0,0,3491,3492,1,0,0, + 0,3492,3494,5,1134,0,0,3493,3487,1,0,0,0,3494,3497,1,0,0,0,3495, + 3493,1,0,0,0,3495,3496,1,0,0,0,3496,3499,1,0,0,0,3497,3495,1,0,0, + 0,3498,3480,1,0,0,0,3498,3481,1,0,0,0,3499,205,1,0,0,0,3500,3501, + 3,554,277,0,3501,3504,5,1124,0,0,3502,3505,3,682,341,0,3503,3505, + 5,42,0,0,3504,3502,1,0,0,0,3504,3503,1,0,0,0,3505,207,1,0,0,0,3506, + 3509,3,578,289,0,3507,3509,5,1160,0,0,3508,3506,1,0,0,0,3508,3507, + 1,0,0,0,3509,209,1,0,0,0,3510,3511,5,65,0,0,3511,3517,5,184,0,0, + 3512,3513,5,103,0,0,3513,3514,5,80,0,0,3514,3515,5,610,0,0,3515, + 3517,5,511,0,0,3516,3510,1,0,0,0,3516,3512,1,0,0,0,3517,211,1,0, + 0,0,3518,3520,5,44,0,0,3519,3521,5,106,0,0,3520,3519,1,0,0,0,3520, + 3521,1,0,0,0,3521,3523,1,0,0,0,3522,3524,5,568,0,0,3523,3522,1,0, + 0,0,3523,3524,1,0,0,0,3524,3526,1,0,0,0,3525,3527,5,78,0,0,3526, + 3525,1,0,0,0,3526,3527,1,0,0,0,3527,3528,1,0,0,0,3528,3529,5,68, + 0,0,3529,3534,3,550,275,0,3530,3532,5,12,0,0,3531,3530,1,0,0,0,3531, + 3532,1,0,0,0,3532,3533,1,0,0,0,3533,3535,3,578,289,0,3534,3531,1, + 0,0,0,3534,3535,1,0,0,0,3535,3541,1,0,0,0,3536,3537,5,129,0,0,3537, + 3538,5,1133,0,0,3538,3539,3,610,305,0,3539,3540,5,1134,0,0,3540, + 3542,1,0,0,0,3541,3536,1,0,0,0,3541,3542,1,0,0,0,3542,3545,1,0,0, + 0,3543,3544,5,190,0,0,3544,3546,3,682,341,0,3545,3543,1,0,0,0,3545, + 3546,1,0,0,0,3546,3548,1,0,0,0,3547,3549,3,228,114,0,3548,3547,1, + 0,0,0,3548,3549,1,0,0,0,3549,3552,1,0,0,0,3550,3551,5,99,0,0,3551, + 3553,3,294,147,0,3552,3550,1,0,0,0,3552,3553,1,0,0,0,3553,213,1, + 0,0,0,3554,3556,5,44,0,0,3555,3557,5,106,0,0,3556,3555,1,0,0,0,3556, + 3557,1,0,0,0,3557,3559,1,0,0,0,3558,3560,5,568,0,0,3559,3558,1,0, + 0,0,3559,3560,1,0,0,0,3560,3562,1,0,0,0,3561,3563,5,78,0,0,3562, + 3561,1,0,0,0,3562,3563,1,0,0,0,3563,3603,1,0,0,0,3564,3567,3,550, + 275,0,3565,3566,5,1132,0,0,3566,3568,5,1117,0,0,3567,3565,1,0,0, + 0,3567,3568,1,0,0,0,3568,3577,1,0,0,0,3569,3570,5,1135,0,0,3570, + 3573,3,550,275,0,3571,3572,5,1132,0,0,3572,3574,5,1117,0,0,3573, + 3571,1,0,0,0,3573,3574,1,0,0,0,3574,3576,1,0,0,0,3575,3569,1,0,0, + 0,3576,3579,1,0,0,0,3577,3575,1,0,0,0,3577,3578,1,0,0,0,3578,3580, + 1,0,0,0,3579,3577,1,0,0,0,3580,3581,5,68,0,0,3581,3582,3,232,116, + 0,3582,3604,1,0,0,0,3583,3584,5,68,0,0,3584,3587,3,550,275,0,3585, + 3586,5,1132,0,0,3586,3588,5,1117,0,0,3587,3585,1,0,0,0,3587,3588, + 1,0,0,0,3588,3597,1,0,0,0,3589,3590,5,1135,0,0,3590,3593,3,550,275, + 0,3591,3592,5,1132,0,0,3592,3594,5,1117,0,0,3593,3591,1,0,0,0,3593, + 3594,1,0,0,0,3594,3596,1,0,0,0,3595,3589,1,0,0,0,3596,3599,1,0,0, + 0,3597,3595,1,0,0,0,3597,3598,1,0,0,0,3598,3600,1,0,0,0,3599,3597, + 1,0,0,0,3600,3601,5,187,0,0,3601,3602,3,232,116,0,3602,3604,1,0, + 0,0,3603,3564,1,0,0,0,3603,3583,1,0,0,0,3604,3607,1,0,0,0,3605,3606, + 5,190,0,0,3606,3608,3,682,341,0,3607,3605,1,0,0,0,3607,3608,1,0, + 0,0,3608,215,1,0,0,0,3609,3610,5,442,0,0,3610,3611,3,550,275,0,3611, + 3616,5,539,0,0,3612,3614,5,12,0,0,3613,3612,1,0,0,0,3613,3614,1, + 0,0,0,3614,3615,1,0,0,0,3615,3617,3,578,289,0,3616,3613,1,0,0,0, + 3616,3617,1,0,0,0,3617,217,1,0,0,0,3618,3619,5,442,0,0,3619,3620, + 3,550,275,0,3620,3621,5,134,0,0,3621,3628,3,578,289,0,3622,3623, + 3,690,345,0,3623,3624,5,1133,0,0,3624,3625,3,622,311,0,3625,3626, + 5,1134,0,0,3626,3629,1,0,0,0,3627,3629,7,46,0,0,3628,3622,1,0,0, + 0,3628,3627,1,0,0,0,3629,3632,1,0,0,0,3630,3631,5,190,0,0,3631,3633, + 3,682,341,0,3632,3630,1,0,0,0,3632,3633,1,0,0,0,3633,3636,1,0,0, + 0,3634,3635,5,99,0,0,3635,3637,3,294,147,0,3636,3634,1,0,0,0,3636, + 3637,1,0,0,0,3637,219,1,0,0,0,3638,3639,5,442,0,0,3639,3640,3,550, + 275,0,3640,3641,5,134,0,0,3641,3644,7,47,0,0,3642,3643,5,190,0,0, + 3643,3645,3,682,341,0,3644,3642,1,0,0,0,3644,3645,1,0,0,0,3645,3648, + 1,0,0,0,3646,3647,5,99,0,0,3647,3649,3,294,147,0,3648,3646,1,0,0, + 0,3648,3649,1,0,0,0,3649,221,1,0,0,0,3650,3651,5,442,0,0,3651,3652, + 3,550,275,0,3652,3653,5,361,0,0,3653,223,1,0,0,0,3654,3656,5,184, + 0,0,3655,3657,5,106,0,0,3656,3655,1,0,0,0,3656,3657,1,0,0,0,3657, + 3659,1,0,0,0,3658,3660,5,78,0,0,3659,3658,1,0,0,0,3659,3660,1,0, + 0,0,3660,3661,1,0,0,0,3661,3666,3,550,275,0,3662,3664,5,12,0,0,3663, + 3662,1,0,0,0,3663,3664,1,0,0,0,3664,3665,1,0,0,0,3665,3667,3,578, + 289,0,3666,3663,1,0,0,0,3666,3667,1,0,0,0,3667,3668,1,0,0,0,3668, + 3669,5,153,0,0,3669,3674,3,206,103,0,3670,3671,5,1135,0,0,3671,3673, + 3,206,103,0,3672,3670,1,0,0,0,3673,3676,1,0,0,0,3674,3672,1,0,0, + 0,3674,3675,1,0,0,0,3675,3679,1,0,0,0,3676,3674,1,0,0,0,3677,3678, + 5,190,0,0,3678,3680,3,682,341,0,3679,3677,1,0,0,0,3679,3680,1,0, + 0,0,3680,3682,1,0,0,0,3681,3683,3,228,114,0,3682,3681,1,0,0,0,3682, + 3683,1,0,0,0,3683,3685,1,0,0,0,3684,3686,3,292,146,0,3685,3684,1, + 0,0,0,3685,3686,1,0,0,0,3686,225,1,0,0,0,3687,3689,5,184,0,0,3688, + 3690,5,106,0,0,3689,3688,1,0,0,0,3689,3690,1,0,0,0,3690,3692,1,0, + 0,0,3691,3693,5,78,0,0,3692,3691,1,0,0,0,3692,3693,1,0,0,0,3693, + 3694,1,0,0,0,3694,3695,3,232,116,0,3695,3696,5,153,0,0,3696,3701, + 3,206,103,0,3697,3698,5,1135,0,0,3698,3700,3,206,103,0,3699,3697, + 1,0,0,0,3700,3703,1,0,0,0,3701,3699,1,0,0,0,3701,3702,1,0,0,0,3702, + 3706,1,0,0,0,3703,3701,1,0,0,0,3704,3705,5,190,0,0,3705,3707,3,682, + 341,0,3706,3704,1,0,0,0,3706,3707,1,0,0,0,3707,227,1,0,0,0,3708, + 3709,5,124,0,0,3709,3710,5,19,0,0,3710,3715,3,230,115,0,3711,3712, + 5,1135,0,0,3712,3714,3,230,115,0,3713,3711,1,0,0,0,3714,3717,1,0, + 0,0,3715,3713,1,0,0,0,3715,3716,1,0,0,0,3716,229,1,0,0,0,3717,3715, + 1,0,0,0,3718,3720,3,682,341,0,3719,3721,7,48,0,0,3720,3719,1,0,0, + 0,3720,3721,1,0,0,0,3721,231,1,0,0,0,3722,3727,3,234,117,0,3723, + 3724,5,1135,0,0,3724,3726,3,234,117,0,3725,3723,1,0,0,0,3726,3729, + 1,0,0,0,3727,3725,1,0,0,0,3727,3728,1,0,0,0,3728,233,1,0,0,0,3729, + 3727,1,0,0,0,3730,3734,3,236,118,0,3731,3733,3,242,121,0,3732,3731, + 1,0,0,0,3733,3736,1,0,0,0,3734,3732,1,0,0,0,3734,3735,1,0,0,0,3735, + 3749,1,0,0,0,3736,3734,1,0,0,0,3737,3738,5,1133,0,0,3738,3742,3, + 236,118,0,3739,3741,3,242,121,0,3740,3739,1,0,0,0,3741,3744,1,0, + 0,0,3742,3740,1,0,0,0,3742,3743,1,0,0,0,3743,3745,1,0,0,0,3744,3742, + 1,0,0,0,3745,3746,5,1134,0,0,3746,3749,1,0,0,0,3747,3749,3,260,130, + 0,3748,3730,1,0,0,0,3748,3737,1,0,0,0,3748,3747,1,0,0,0,3749,235, + 1,0,0,0,3750,3756,3,550,275,0,3751,3752,5,129,0,0,3752,3753,5,1133, + 0,0,3753,3754,3,610,305,0,3754,3755,5,1134,0,0,3755,3757,1,0,0,0, + 3756,3751,1,0,0,0,3756,3757,1,0,0,0,3757,3762,1,0,0,0,3758,3760, + 5,12,0,0,3759,3758,1,0,0,0,3759,3760,1,0,0,0,3760,3761,1,0,0,0,3761, + 3763,3,578,289,0,3762,3759,1,0,0,0,3762,3763,1,0,0,0,3763,3772,1, + 0,0,0,3764,3769,3,238,119,0,3765,3766,5,1135,0,0,3766,3768,3,238, + 119,0,3767,3765,1,0,0,0,3768,3771,1,0,0,0,3769,3767,1,0,0,0,3769, + 3770,1,0,0,0,3770,3773,1,0,0,0,3771,3769,1,0,0,0,3772,3764,1,0,0, + 0,3772,3773,1,0,0,0,3773,3791,1,0,0,0,3774,3780,3,198,99,0,3775, + 3776,5,1133,0,0,3776,3777,3,198,99,0,3777,3778,5,1134,0,0,3778,3780, + 1,0,0,0,3779,3774,1,0,0,0,3779,3775,1,0,0,0,3780,3782,1,0,0,0,3781, + 3783,5,12,0,0,3782,3781,1,0,0,0,3782,3783,1,0,0,0,3783,3784,1,0, + 0,0,3784,3785,3,578,289,0,3785,3791,1,0,0,0,3786,3787,5,1133,0,0, + 3787,3788,3,232,116,0,3788,3789,5,1134,0,0,3789,3791,1,0,0,0,3790, + 3750,1,0,0,0,3790,3779,1,0,0,0,3790,3786,1,0,0,0,3791,237,1,0,0, + 0,3792,3793,7,49,0,0,3793,3796,7,20,0,0,3794,3795,5,65,0,0,3795, + 3797,3,240,120,0,3796,3794,1,0,0,0,3796,3797,1,0,0,0,3797,3798,1, + 0,0,0,3798,3799,5,1133,0,0,3799,3800,3,610,305,0,3800,3801,5,1134, + 0,0,3801,239,1,0,0,0,3802,3808,5,90,0,0,3803,3804,5,124,0,0,3804, + 3808,5,19,0,0,3805,3806,5,73,0,0,3806,3808,5,19,0,0,3807,3802,1, + 0,0,0,3807,3803,1,0,0,0,3807,3805,1,0,0,0,3808,241,1,0,0,0,3809, + 3811,7,50,0,0,3810,3809,1,0,0,0,3810,3811,1,0,0,0,3811,3812,1,0, + 0,0,3812,3814,5,90,0,0,3813,3815,5,94,0,0,3814,3813,1,0,0,0,3814, + 3815,1,0,0,0,3815,3816,1,0,0,0,3816,3820,3,236,118,0,3817,3819,3, + 244,122,0,3818,3817,1,0,0,0,3819,3822,1,0,0,0,3820,3818,1,0,0,0, + 3820,3821,1,0,0,0,3821,3857,1,0,0,0,3822,3820,1,0,0,0,3823,3824, + 5,171,0,0,3824,3829,3,236,118,0,3825,3826,5,118,0,0,3826,3828,3, + 682,341,0,3827,3825,1,0,0,0,3828,3831,1,0,0,0,3829,3827,1,0,0,0, + 3829,3830,1,0,0,0,3830,3857,1,0,0,0,3831,3829,1,0,0,0,3832,3834, + 7,51,0,0,3833,3835,5,126,0,0,3834,3833,1,0,0,0,3834,3835,1,0,0,0, + 3835,3836,1,0,0,0,3836,3838,5,90,0,0,3837,3839,5,94,0,0,3838,3837, + 1,0,0,0,3838,3839,1,0,0,0,3839,3840,1,0,0,0,3840,3844,3,236,118, + 0,3841,3843,3,244,122,0,3842,3841,1,0,0,0,3843,3846,1,0,0,0,3844, + 3842,1,0,0,0,3844,3845,1,0,0,0,3845,3857,1,0,0,0,3846,3844,1,0,0, + 0,3847,3852,5,113,0,0,3848,3850,7,51,0,0,3849,3851,5,126,0,0,3850, + 3849,1,0,0,0,3850,3851,1,0,0,0,3851,3853,1,0,0,0,3852,3848,1,0,0, + 0,3852,3853,1,0,0,0,3853,3854,1,0,0,0,3854,3855,5,90,0,0,3855,3857, + 3,236,118,0,3856,3810,1,0,0,0,3856,3823,1,0,0,0,3856,3832,1,0,0, + 0,3856,3847,1,0,0,0,3857,243,1,0,0,0,3858,3859,5,118,0,0,3859,3866, + 3,682,341,0,3860,3861,5,187,0,0,3861,3862,5,1133,0,0,3862,3863,3, + 610,305,0,3863,3864,5,1134,0,0,3864,3866,1,0,0,0,3865,3858,1,0,0, + 0,3865,3860,1,0,0,0,3866,245,1,0,0,0,3867,3868,5,1133,0,0,3868,3869, + 3,250,125,0,3869,3870,5,1134,0,0,3870,3876,1,0,0,0,3871,3872,5,1133, + 0,0,3872,3873,3,246,123,0,3873,3874,5,1134,0,0,3874,3876,1,0,0,0, + 3875,3867,1,0,0,0,3875,3871,1,0,0,0,3876,247,1,0,0,0,3877,3878,5, + 1133,0,0,3878,3879,3,252,126,0,3879,3880,5,1134,0,0,3880,3886,1, + 0,0,0,3881,3882,5,1133,0,0,3882,3883,3,248,124,0,3883,3884,5,1134, + 0,0,3884,3886,1,0,0,0,3885,3877,1,0,0,0,3885,3881,1,0,0,0,3886,249, + 1,0,0,0,3887,3891,5,152,0,0,3888,3890,3,270,135,0,3889,3888,1,0, + 0,0,3890,3893,1,0,0,0,3891,3889,1,0,0,0,3891,3892,1,0,0,0,3892,3894, + 1,0,0,0,3893,3891,1,0,0,0,3894,3896,3,272,136,0,3895,3897,3,276, + 138,0,3896,3895,1,0,0,0,3896,3897,1,0,0,0,3897,3898,1,0,0,0,3898, + 3900,3,282,141,0,3899,3901,3,284,142,0,3900,3899,1,0,0,0,3900,3901, + 1,0,0,0,3901,3903,1,0,0,0,3902,3904,3,286,143,0,3903,3902,1,0,0, + 0,3903,3904,1,0,0,0,3904,3906,1,0,0,0,3905,3907,3,288,144,0,3906, + 3905,1,0,0,0,3906,3907,1,0,0,0,3907,3909,1,0,0,0,3908,3910,3,228, + 114,0,3909,3908,1,0,0,0,3909,3910,1,0,0,0,3910,3912,1,0,0,0,3911, + 3913,3,292,146,0,3912,3911,1,0,0,0,3912,3913,1,0,0,0,3913,3942,1, + 0,0,0,3914,3918,5,152,0,0,3915,3917,3,270,135,0,3916,3915,1,0,0, + 0,3917,3920,1,0,0,0,3918,3916,1,0,0,0,3918,3919,1,0,0,0,3919,3921, + 1,0,0,0,3920,3918,1,0,0,0,3921,3922,3,272,136,0,3922,3924,3,282, + 141,0,3923,3925,3,284,142,0,3924,3923,1,0,0,0,3924,3925,1,0,0,0, + 3925,3927,1,0,0,0,3926,3928,3,286,143,0,3927,3926,1,0,0,0,3927,3928, + 1,0,0,0,3928,3930,1,0,0,0,3929,3931,3,288,144,0,3930,3929,1,0,0, + 0,3930,3931,1,0,0,0,3931,3933,1,0,0,0,3932,3934,3,228,114,0,3933, + 3932,1,0,0,0,3933,3934,1,0,0,0,3934,3936,1,0,0,0,3935,3937,3,292, + 146,0,3936,3935,1,0,0,0,3936,3937,1,0,0,0,3937,3939,1,0,0,0,3938, + 3940,3,276,138,0,3939,3938,1,0,0,0,3939,3940,1,0,0,0,3940,3942,1, + 0,0,0,3941,3887,1,0,0,0,3941,3914,1,0,0,0,3942,251,1,0,0,0,3943, + 3947,5,152,0,0,3944,3946,3,270,135,0,3945,3944,1,0,0,0,3946,3949, + 1,0,0,0,3947,3945,1,0,0,0,3947,3948,1,0,0,0,3948,3950,1,0,0,0,3949, + 3947,1,0,0,0,3950,3951,3,272,136,0,3951,3953,3,282,141,0,3952,3954, + 3,284,142,0,3953,3952,1,0,0,0,3953,3954,1,0,0,0,3954,3956,1,0,0, + 0,3955,3957,3,286,143,0,3956,3955,1,0,0,0,3956,3957,1,0,0,0,3957, + 3959,1,0,0,0,3958,3960,3,288,144,0,3959,3958,1,0,0,0,3959,3960,1, + 0,0,0,3960,3962,1,0,0,0,3961,3963,3,228,114,0,3962,3961,1,0,0,0, + 3962,3963,1,0,0,0,3963,3965,1,0,0,0,3964,3966,3,292,146,0,3965,3964, + 1,0,0,0,3965,3966,1,0,0,0,3966,253,1,0,0,0,3967,3969,5,180,0,0,3968, + 3970,7,44,0,0,3969,3968,1,0,0,0,3969,3970,1,0,0,0,3970,3971,1,0, + 0,0,3971,3972,3,248,124,0,3972,255,1,0,0,0,3973,3975,5,180,0,0,3974, + 3976,7,44,0,0,3975,3974,1,0,0,0,3975,3976,1,0,0,0,3976,3979,1,0, + 0,0,3977,3980,3,252,126,0,3978,3980,3,248,124,0,3979,3977,1,0,0, + 0,3979,3978,1,0,0,0,3980,257,1,0,0,0,3981,3996,5,94,0,0,3982,3997, + 3,252,126,0,3983,3997,3,248,124,0,3984,3987,5,1133,0,0,3985,3988, + 3,252,126,0,3986,3988,3,248,124,0,3987,3985,1,0,0,0,3987,3986,1, + 0,0,0,3988,3989,1,0,0,0,3989,3994,5,1134,0,0,3990,3992,5,12,0,0, + 3991,3990,1,0,0,0,3991,3992,1,0,0,0,3992,3993,1,0,0,0,3993,3995, + 3,578,289,0,3994,3991,1,0,0,0,3994,3995,1,0,0,0,3995,3997,1,0,0, + 0,3996,3982,1,0,0,0,3996,3983,1,0,0,0,3996,3984,1,0,0,0,3997,259, + 1,0,0,0,3998,3999,5,278,0,0,3999,4000,5,1133,0,0,4000,4001,5,1148, + 0,0,4001,4002,5,1135,0,0,4002,4003,5,1148,0,0,4003,4004,5,365,0, + 0,4004,4005,5,1133,0,0,4005,4006,3,262,131,0,4006,4007,5,1134,0, + 0,4007,4012,5,1134,0,0,4008,4010,5,12,0,0,4009,4008,1,0,0,0,4009, + 4010,1,0,0,0,4010,4011,1,0,0,0,4011,4013,3,578,289,0,4012,4009,1, + 0,0,0,4012,4013,1,0,0,0,4013,261,1,0,0,0,4014,4019,3,264,132,0,4015, + 4016,5,1135,0,0,4016,4018,3,264,132,0,4017,4015,1,0,0,0,4018,4021, + 1,0,0,0,4019,4017,1,0,0,0,4019,4020,1,0,0,0,4020,263,1,0,0,0,4021, + 4019,1,0,0,0,4022,4039,3,554,277,0,4023,4024,5,65,0,0,4024,4040, + 5,284,0,0,4025,4037,3,598,299,0,4026,4027,5,285,0,0,4027,4029,5, + 1148,0,0,4028,4030,3,266,133,0,4029,4028,1,0,0,0,4029,4030,1,0,0, + 0,4030,4032,1,0,0,0,4031,4033,3,268,134,0,4032,4031,1,0,0,0,4032, + 4033,1,0,0,0,4033,4038,1,0,0,0,4034,4035,5,60,0,0,4035,4036,5,285, + 0,0,4036,4038,5,1148,0,0,4037,4026,1,0,0,0,4037,4034,1,0,0,0,4038, + 4040,1,0,0,0,4039,4023,1,0,0,0,4039,4025,1,0,0,0,4040,4052,1,0,0, + 0,4041,4043,5,283,0,0,4042,4044,5,285,0,0,4043,4042,1,0,0,0,4043, + 4044,1,0,0,0,4044,4045,1,0,0,0,4045,4046,5,1148,0,0,4046,4047,5, + 365,0,0,4047,4048,5,1133,0,0,4048,4049,3,262,131,0,4049,4050,5,1134, + 0,0,4050,4052,1,0,0,0,4051,4022,1,0,0,0,4051,4041,1,0,0,0,4052,265, + 1,0,0,0,4053,4058,5,116,0,0,4054,4058,5,411,0,0,4055,4056,5,42,0, + 0,4056,4058,3,628,314,0,4057,4053,1,0,0,0,4057,4054,1,0,0,0,4057, + 4055,1,0,0,0,4058,4059,1,0,0,0,4059,4060,5,118,0,0,4060,4061,5,55, + 0,0,4061,267,1,0,0,0,4062,4067,5,116,0,0,4063,4067,5,411,0,0,4064, + 4065,5,42,0,0,4065,4067,3,628,314,0,4066,4062,1,0,0,0,4066,4063, + 1,0,0,0,4066,4064,1,0,0,0,4067,4068,1,0,0,0,4068,4069,5,118,0,0, + 4069,4070,5,411,0,0,4070,269,1,0,0,0,4071,4080,7,52,0,0,4072,4080, + 5,75,0,0,4073,4080,5,171,0,0,4074,4080,5,166,0,0,4075,4080,5,164, + 0,0,4076,4080,5,625,0,0,4077,4080,7,53,0,0,4078,4080,5,165,0,0,4079, + 4071,1,0,0,0,4079,4072,1,0,0,0,4079,4073,1,0,0,0,4079,4074,1,0,0, + 0,4079,4075,1,0,0,0,4079,4076,1,0,0,0,4079,4077,1,0,0,0,4079,4078, + 1,0,0,0,4080,271,1,0,0,0,4081,4084,5,1117,0,0,4082,4084,3,274,137, + 0,4083,4081,1,0,0,0,4083,4082,1,0,0,0,4084,4089,1,0,0,0,4085,4086, + 5,1135,0,0,4086,4088,3,274,137,0,4087,4085,1,0,0,0,4088,4091,1,0, + 0,0,4089,4087,1,0,0,0,4089,4090,1,0,0,0,4090,273,1,0,0,0,4091,4089, + 1,0,0,0,4092,4093,3,548,274,0,4093,4094,5,1132,0,0,4094,4095,5,1117, + 0,0,4095,4122,1,0,0,0,4096,4101,3,554,277,0,4097,4099,5,12,0,0,4098, + 4097,1,0,0,0,4098,4099,1,0,0,0,4099,4100,1,0,0,0,4100,4102,3,578, + 289,0,4101,4098,1,0,0,0,4101,4102,1,0,0,0,4102,4122,1,0,0,0,4103, + 4108,3,642,321,0,4104,4106,5,12,0,0,4105,4104,1,0,0,0,4105,4106, + 1,0,0,0,4106,4107,1,0,0,0,4107,4109,3,578,289,0,4108,4105,1,0,0, + 0,4108,4109,1,0,0,0,4109,4122,1,0,0,0,4110,4111,5,1160,0,0,4111, + 4113,5,1108,0,0,4112,4110,1,0,0,0,4112,4113,1,0,0,0,4113,4114,1, + 0,0,0,4114,4119,3,682,341,0,4115,4117,5,12,0,0,4116,4115,1,0,0,0, + 4116,4117,1,0,0,0,4117,4118,1,0,0,0,4118,4120,3,578,289,0,4119,4116, + 1,0,0,0,4119,4120,1,0,0,0,4120,4122,1,0,0,0,4121,4092,1,0,0,0,4121, + 4096,1,0,0,0,4121,4103,1,0,0,0,4121,4112,1,0,0,0,4122,275,1,0,0, + 0,4123,4124,5,87,0,0,4124,4129,3,208,104,0,4125,4126,5,1135,0,0, + 4126,4128,3,208,104,0,4127,4125,1,0,0,0,4128,4131,1,0,0,0,4129,4127, + 1,0,0,0,4129,4130,1,0,0,0,4130,4160,1,0,0,0,4131,4129,1,0,0,0,4132, + 4133,5,87,0,0,4133,4134,5,400,0,0,4134,4160,5,1148,0,0,4135,4136, + 5,87,0,0,4136,4137,5,127,0,0,4137,4141,5,1148,0,0,4138,4139,5,25, + 0,0,4139,4140,5,153,0,0,4140,4142,3,562,281,0,4141,4138,1,0,0,0, + 4141,4142,1,0,0,0,4142,4149,1,0,0,0,4143,4145,7,41,0,0,4144,4146, + 3,278,139,0,4145,4144,1,0,0,0,4146,4147,1,0,0,0,4147,4145,1,0,0, + 0,4147,4148,1,0,0,0,4148,4150,1,0,0,0,4149,4143,1,0,0,0,4149,4150, + 1,0,0,0,4150,4157,1,0,0,0,4151,4153,5,101,0,0,4152,4154,3,280,140, + 0,4153,4152,1,0,0,0,4154,4155,1,0,0,0,4155,4153,1,0,0,0,4155,4156, + 1,0,0,0,4156,4158,1,0,0,0,4157,4151,1,0,0,0,4157,4158,1,0,0,0,4158, + 4160,1,0,0,0,4159,4123,1,0,0,0,4159,4132,1,0,0,0,4159,4135,1,0,0, + 0,4160,277,1,0,0,0,4161,4162,5,173,0,0,4162,4163,5,19,0,0,4163,4174, + 5,1148,0,0,4164,4166,5,122,0,0,4165,4164,1,0,0,0,4165,4166,1,0,0, + 0,4166,4167,1,0,0,0,4167,4168,5,56,0,0,4168,4169,5,19,0,0,4169,4174, + 5,1148,0,0,4170,4171,5,58,0,0,4171,4172,5,19,0,0,4172,4174,5,1148, + 0,0,4173,4161,1,0,0,0,4173,4165,1,0,0,0,4173,4170,1,0,0,0,4174,279, + 1,0,0,0,4175,4176,5,169,0,0,4176,4177,5,19,0,0,4177,4182,5,1148, + 0,0,4178,4179,5,173,0,0,4179,4180,5,19,0,0,4180,4182,5,1148,0,0, + 4181,4175,1,0,0,0,4181,4178,1,0,0,0,4182,281,1,0,0,0,4183,4184,5, + 68,0,0,4184,4186,3,232,116,0,4185,4183,1,0,0,0,4185,4186,1,0,0,0, + 4186,4189,1,0,0,0,4187,4188,5,190,0,0,4188,4190,3,682,341,0,4189, + 4187,1,0,0,0,4189,4190,1,0,0,0,4190,283,1,0,0,0,4191,4192,5,73,0, + 0,4192,4193,5,19,0,0,4193,4198,3,290,145,0,4194,4195,5,1135,0,0, + 4195,4197,3,290,145,0,4196,4194,1,0,0,0,4197,4200,1,0,0,0,4198,4196, + 1,0,0,0,4198,4199,1,0,0,0,4199,4203,1,0,0,0,4200,4198,1,0,0,0,4201, + 4202,5,192,0,0,4202,4204,5,598,0,0,4203,4201,1,0,0,0,4203,4204,1, + 0,0,0,4204,285,1,0,0,0,4205,4206,5,74,0,0,4206,4207,3,682,341,0, + 4207,287,1,0,0,0,4208,4209,5,676,0,0,4209,4210,3,660,330,0,4210, + 4211,5,12,0,0,4211,4212,5,1133,0,0,4212,4213,3,658,329,0,4213,4223, + 5,1134,0,0,4214,4215,5,1135,0,0,4215,4216,3,660,330,0,4216,4217, + 5,12,0,0,4217,4218,5,1133,0,0,4218,4219,3,658,329,0,4219,4220,5, + 1134,0,0,4220,4222,1,0,0,0,4221,4214,1,0,0,0,4222,4225,1,0,0,0,4223, + 4221,1,0,0,0,4223,4224,1,0,0,0,4224,289,1,0,0,0,4225,4223,1,0,0, + 0,4226,4228,3,682,341,0,4227,4229,7,48,0,0,4228,4227,1,0,0,0,4228, + 4229,1,0,0,0,4229,291,1,0,0,0,4230,4241,5,99,0,0,4231,4232,3,294, + 147,0,4232,4233,5,1135,0,0,4233,4235,1,0,0,0,4234,4231,1,0,0,0,4234, + 4235,1,0,0,0,4235,4236,1,0,0,0,4236,4242,3,294,147,0,4237,4238,3, + 294,147,0,4238,4239,5,532,0,0,4239,4240,3,294,147,0,4240,4242,1, + 0,0,0,4241,4234,1,0,0,0,4241,4237,1,0,0,0,4242,293,1,0,0,0,4243, + 4247,3,584,292,0,4244,4247,3,560,280,0,4245,4247,3,580,290,0,4246, + 4243,1,0,0,0,4246,4244,1,0,0,0,4246,4245,1,0,0,0,4247,295,1,0,0, + 0,4248,4249,5,629,0,0,4249,4258,5,653,0,0,4250,4255,3,318,159,0, + 4251,4252,5,1135,0,0,4252,4254,3,318,159,0,4253,4251,1,0,0,0,4254, + 4257,1,0,0,0,4255,4253,1,0,0,0,4255,4256,1,0,0,0,4256,4259,1,0,0, + 0,4257,4255,1,0,0,0,4258,4250,1,0,0,0,4258,4259,1,0,0,0,4259,297, + 1,0,0,0,4260,4262,5,344,0,0,4261,4263,5,678,0,0,4262,4261,1,0,0, + 0,4262,4263,1,0,0,0,4263,299,1,0,0,0,4264,4266,5,369,0,0,4265,4267, + 5,678,0,0,4266,4265,1,0,0,0,4266,4267,1,0,0,0,4267,4273,1,0,0,0, + 4268,4270,5,10,0,0,4269,4271,5,521,0,0,4270,4269,1,0,0,0,4270,4271, + 1,0,0,0,4271,4272,1,0,0,0,4272,4274,5,353,0,0,4273,4268,1,0,0,0, + 4273,4274,1,0,0,0,4274,4279,1,0,0,0,4275,4277,5,521,0,0,4276,4275, + 1,0,0,0,4276,4277,1,0,0,0,4277,4278,1,0,0,0,4278,4280,5,138,0,0, + 4279,4276,1,0,0,0,4279,4280,1,0,0,0,4280,301,1,0,0,0,4281,4283,5, + 597,0,0,4282,4284,5,678,0,0,4283,4282,1,0,0,0,4283,4284,1,0,0,0, + 4284,4290,1,0,0,0,4285,4287,5,10,0,0,4286,4288,5,521,0,0,4287,4286, + 1,0,0,0,4287,4288,1,0,0,0,4288,4289,1,0,0,0,4289,4291,5,353,0,0, + 4290,4285,1,0,0,0,4290,4291,1,0,0,0,4291,4296,1,0,0,0,4292,4294, + 5,521,0,0,4293,4292,1,0,0,0,4293,4294,1,0,0,0,4294,4295,1,0,0,0, + 4295,4297,5,138,0,0,4296,4293,1,0,0,0,4296,4297,1,0,0,0,4297,303, + 1,0,0,0,4298,4299,5,604,0,0,4299,4300,3,578,289,0,4300,305,1,0,0, + 0,4301,4303,5,597,0,0,4302,4304,5,678,0,0,4303,4302,1,0,0,0,4303, + 4304,1,0,0,0,4304,4305,1,0,0,0,4305,4307,5,175,0,0,4306,4308,5,604, + 0,0,4307,4306,1,0,0,0,4307,4308,1,0,0,0,4308,4309,1,0,0,0,4309,4310, + 3,578,289,0,4310,307,1,0,0,0,4311,4312,5,138,0,0,4312,4313,5,604, + 0,0,4313,4314,3,578,289,0,4314,309,1,0,0,0,4315,4316,5,103,0,0,4316, + 4317,7,54,0,0,4317,4322,3,320,160,0,4318,4319,5,1135,0,0,4319,4321, + 3,320,160,0,4320,4318,1,0,0,0,4321,4324,1,0,0,0,4322,4320,1,0,0, + 0,4322,4323,1,0,0,0,4323,4326,1,0,0,0,4324,4322,1,0,0,0,4325,4327, + 3,640,320,0,4326,4325,1,0,0,0,4326,4327,1,0,0,0,4327,311,1,0,0,0, + 4328,4329,5,182,0,0,4329,4330,5,742,0,0,4330,313,1,0,0,0,4331,4332, + 5,153,0,0,4332,4333,5,340,0,0,4333,4334,5,1124,0,0,4334,4335,7,24, + 0,0,4335,315,1,0,0,0,4336,4338,5,153,0,0,4337,4339,7,55,0,0,4338, + 4337,1,0,0,0,4338,4339,1,0,0,0,4339,4340,1,0,0,0,4340,4341,5,653, + 0,0,4341,4346,3,324,162,0,4342,4343,5,1135,0,0,4343,4345,3,324,162, + 0,4344,4342,1,0,0,0,4345,4348,1,0,0,0,4346,4344,1,0,0,0,4346,4347, + 1,0,0,0,4347,317,1,0,0,0,4348,4346,1,0,0,0,4349,4350,5,192,0,0,4350, + 4351,5,377,0,0,4351,4357,5,616,0,0,4352,4353,5,134,0,0,4353,4357, + 5,193,0,0,4354,4355,5,134,0,0,4355,4357,5,538,0,0,4356,4349,1,0, + 0,0,4356,4352,1,0,0,0,4356,4354,1,0,0,0,4357,319,1,0,0,0,4358,4363, + 3,550,275,0,4359,4361,5,12,0,0,4360,4359,1,0,0,0,4360,4361,1,0,0, + 0,4361,4362,1,0,0,0,4362,4364,3,578,289,0,4363,4360,1,0,0,0,4363, + 4364,1,0,0,0,4364,4365,1,0,0,0,4365,4366,3,322,161,0,4366,321,1, + 0,0,0,4367,4369,5,134,0,0,4368,4370,5,474,0,0,4369,4368,1,0,0,0, + 4369,4370,1,0,0,0,4370,4376,1,0,0,0,4371,4373,5,106,0,0,4372,4371, + 1,0,0,0,4372,4373,1,0,0,0,4373,4374,1,0,0,0,4374,4376,5,193,0,0, + 4375,4367,1,0,0,0,4375,4372,1,0,0,0,4376,323,1,0,0,0,4377,4378,5, + 464,0,0,4378,4379,5,472,0,0,4379,4385,3,326,163,0,4380,4381,5,134, + 0,0,4381,4385,5,193,0,0,4382,4383,5,134,0,0,4383,4385,5,538,0,0, + 4384,4377,1,0,0,0,4384,4380,1,0,0,0,4384,4382,1,0,0,0,4385,325,1, + 0,0,0,4386,4387,5,799,0,0,4387,4394,5,134,0,0,4388,4389,5,134,0, + 0,4389,4394,5,800,0,0,4390,4391,5,134,0,0,4391,4394,5,801,0,0,4392, + 4394,5,802,0,0,4393,4386,1,0,0,0,4393,4388,1,0,0,0,4393,4390,1,0, + 0,0,4393,4392,1,0,0,0,4394,327,1,0,0,0,4395,4396,5,24,0,0,4396,4397, + 5,477,0,0,4397,4398,5,175,0,0,4398,4403,3,346,173,0,4399,4400,5, + 1135,0,0,4400,4402,3,346,173,0,4401,4399,1,0,0,0,4402,4405,1,0,0, + 0,4403,4401,1,0,0,0,4403,4404,1,0,0,0,4404,4407,1,0,0,0,4405,4403, + 1,0,0,0,4406,4408,3,354,177,0,4407,4406,1,0,0,0,4407,4408,1,0,0, + 0,4408,329,1,0,0,0,4409,4410,5,24,0,0,4410,4411,5,588,0,0,4411,4412, + 5,429,0,0,4412,4417,3,356,178,0,4413,4414,5,1135,0,0,4414,4416,3, + 356,178,0,4415,4413,1,0,0,0,4416,4419,1,0,0,0,4417,4415,1,0,0,0, + 4417,4418,1,0,0,0,4418,331,1,0,0,0,4419,4417,1,0,0,0,4420,4421,5, + 132,0,0,4421,4422,7,56,0,0,4422,4427,5,476,0,0,4423,4424,5,175,0, + 0,4424,4428,5,1148,0,0,4425,4426,5,15,0,0,4426,4428,5,1148,0,0,4427, + 4423,1,0,0,0,4427,4425,1,0,0,0,4428,333,1,0,0,0,4429,4430,5,589, + 0,0,4430,4431,5,477,0,0,4431,335,1,0,0,0,4432,4433,5,589,0,0,4433, + 4435,5,614,0,0,4434,4436,5,6,0,0,4435,4434,1,0,0,0,4435,4436,1,0, + 0,0,4436,4438,1,0,0,0,4437,4439,3,354,177,0,4438,4437,1,0,0,0,4438, + 4439,1,0,0,0,4439,337,1,0,0,0,4440,4441,5,629,0,0,4441,4450,5,614, + 0,0,4442,4447,3,360,180,0,4443,4444,5,1135,0,0,4444,4446,3,360,180, + 0,4445,4443,1,0,0,0,4446,4449,1,0,0,0,4447,4445,1,0,0,0,4447,4448, + 1,0,0,0,4448,4451,1,0,0,0,4449,4447,1,0,0,0,4450,4442,1,0,0,0,4450, + 4451,1,0,0,0,4451,4454,1,0,0,0,4452,4453,5,663,0,0,4453,4455,3,362, + 181,0,4454,4452,1,0,0,0,4454,4455,1,0,0,0,4455,4459,1,0,0,0,4456, + 4458,3,364,182,0,4457,4456,1,0,0,0,4458,4461,1,0,0,0,4459,4457,1, + 0,0,0,4459,4460,1,0,0,0,4460,4463,1,0,0,0,4461,4459,1,0,0,0,4462, + 4464,3,354,177,0,4463,4462,1,0,0,0,4463,4464,1,0,0,0,4464,339,1, + 0,0,0,4465,4466,5,635,0,0,4466,4475,5,614,0,0,4467,4472,3,360,180, + 0,4468,4469,5,1135,0,0,4469,4471,3,360,180,0,4470,4468,1,0,0,0,4471, + 4474,1,0,0,0,4472,4470,1,0,0,0,4472,4473,1,0,0,0,4473,4476,1,0,0, + 0,4474,4472,1,0,0,0,4475,4467,1,0,0,0,4475,4476,1,0,0,0,4476,341, + 1,0,0,0,4477,4478,5,629,0,0,4478,4479,5,441,0,0,4479,343,1,0,0,0, + 4480,4481,5,635,0,0,4481,4482,5,441,0,0,4482,345,1,0,0,0,4483,4484, + 3,348,174,0,4484,4485,5,1124,0,0,4485,4486,5,1148,0,0,4486,4513, + 1,0,0,0,4487,4488,3,350,175,0,4488,4489,5,1124,0,0,4489,4490,3,584, + 292,0,4490,4513,1,0,0,0,4491,4492,3,352,176,0,4492,4493,5,1124,0, + 0,4493,4494,7,24,0,0,4494,4513,1,0,0,0,4495,4496,5,481,0,0,4496, + 4497,5,1124,0,0,4497,4513,5,1151,0,0,4498,4499,5,449,0,0,4499,4500, + 5,1124,0,0,4500,4509,5,1133,0,0,4501,4506,3,578,289,0,4502,4503, + 5,1135,0,0,4503,4505,3,578,289,0,4504,4502,1,0,0,0,4505,4508,1,0, + 0,0,4506,4504,1,0,0,0,4506,4507,1,0,0,0,4507,4510,1,0,0,0,4508,4506, + 1,0,0,0,4509,4501,1,0,0,0,4509,4510,1,0,0,0,4510,4511,1,0,0,0,4511, + 4513,5,1134,0,0,4512,4483,1,0,0,0,4512,4487,1,0,0,0,4512,4491,1, + 0,0,0,4512,4495,1,0,0,0,4512,4498,1,0,0,0,4513,347,1,0,0,0,4514, + 4515,7,57,0,0,4515,349,1,0,0,0,4516,4517,7,58,0,0,4517,351,1,0,0, + 0,4518,4519,7,59,0,0,4519,353,1,0,0,0,4520,4521,5,65,0,0,4521,4522, + 5,355,0,0,4522,4523,5,1148,0,0,4523,355,1,0,0,0,4524,4525,5,581, + 0,0,4525,4526,5,1124,0,0,4526,4527,5,1133,0,0,4527,4528,3,610,305, + 0,4528,4529,5,1134,0,0,4529,4574,1,0,0,0,4530,4531,5,583,0,0,4531, + 4532,5,1124,0,0,4532,4533,5,1133,0,0,4533,4534,3,610,305,0,4534, + 4535,5,1134,0,0,4535,4574,1,0,0,0,4536,4537,5,582,0,0,4537,4538, + 5,1124,0,0,4538,4539,5,1133,0,0,4539,4540,3,614,307,0,4540,4541, + 5,1134,0,0,4541,4574,1,0,0,0,4542,4543,5,584,0,0,4543,4544,5,1124, + 0,0,4544,4545,5,1133,0,0,4545,4546,3,614,307,0,4546,4547,5,1134, + 0,0,4547,4574,1,0,0,0,4548,4549,5,586,0,0,4549,4550,5,1124,0,0,4550, + 4551,5,1133,0,0,4551,4552,3,624,312,0,4552,4553,5,1134,0,0,4553, + 4574,1,0,0,0,4554,4555,5,587,0,0,4555,4556,5,1124,0,0,4556,4557, + 5,1133,0,0,4557,4558,3,624,312,0,4558,4559,5,1134,0,0,4559,4574, + 1,0,0,0,4560,4561,5,585,0,0,4561,4562,5,1124,0,0,4562,4563,5,1133, + 0,0,4563,4568,3,358,179,0,4564,4565,5,1135,0,0,4565,4567,3,358,179, + 0,4566,4564,1,0,0,0,4567,4570,1,0,0,0,4568,4566,1,0,0,0,4568,4569, + 1,0,0,0,4569,4571,1,0,0,0,4570,4568,1,0,0,0,4571,4572,5,1134,0,0, + 4572,4574,1,0,0,0,4573,4524,1,0,0,0,4573,4530,1,0,0,0,4573,4536, + 1,0,0,0,4573,4542,1,0,0,0,4573,4548,1,0,0,0,4573,4554,1,0,0,0,4573, + 4560,1,0,0,0,4574,357,1,0,0,0,4575,4576,5,1133,0,0,4576,4577,3,550, + 275,0,4577,4578,5,1135,0,0,4578,4579,3,550,275,0,4579,4580,5,1134, + 0,0,4580,359,1,0,0,0,4581,4582,7,60,0,0,4582,361,1,0,0,0,4583,4584, + 7,61,0,0,4584,4585,5,1124,0,0,4585,4602,3,366,183,0,4586,4587,5, + 483,0,0,4587,4588,5,1124,0,0,4588,4589,5,1148,0,0,4589,4590,5,1135, + 0,0,4590,4591,5,484,0,0,4591,4592,5,1124,0,0,4592,4602,3,584,292, + 0,4593,4594,5,575,0,0,4594,4595,5,1124,0,0,4595,4596,5,1148,0,0, + 4596,4597,5,1135,0,0,4597,4598,5,576,0,0,4598,4599,5,1124,0,0,4599, + 4602,3,584,292,0,4600,4602,5,623,0,0,4601,4583,1,0,0,0,4601,4586, + 1,0,0,0,4601,4593,1,0,0,0,4601,4600,1,0,0,0,4602,363,1,0,0,0,4603, + 4604,5,665,0,0,4604,4605,5,1124,0,0,4605,4616,5,1148,0,0,4606,4607, + 5,551,0,0,4607,4608,5,1124,0,0,4608,4616,5,1148,0,0,4609,4610,5, + 391,0,0,4610,4611,5,1124,0,0,4611,4616,5,1148,0,0,4612,4613,5,555, + 0,0,4613,4614,5,1124,0,0,4614,4616,5,1148,0,0,4615,4603,1,0,0,0, + 4615,4606,1,0,0,0,4615,4609,1,0,0,0,4615,4612,1,0,0,0,4616,365,1, + 0,0,0,4617,4622,3,570,285,0,4618,4619,5,1135,0,0,4619,4621,3,570, + 285,0,4620,4618,1,0,0,0,4621,4624,1,0,0,0,4622,4620,1,0,0,0,4622, + 4623,1,0,0,0,4623,4627,1,0,0,0,4624,4622,1,0,0,0,4625,4627,5,1148, + 0,0,4626,4617,1,0,0,0,4626,4625,1,0,0,0,4627,367,1,0,0,0,4628,4629, + 5,681,0,0,4629,4630,7,62,0,0,4630,4632,3,572,286,0,4631,4633,7,63, + 0,0,4632,4631,1,0,0,0,4632,4633,1,0,0,0,4633,369,1,0,0,0,4634,4635, + 5,681,0,0,4635,4636,5,407,0,0,4636,4642,3,572,286,0,4637,4640,5, + 643,0,0,4638,4639,5,65,0,0,4639,4641,5,509,0,0,4640,4638,1,0,0,0, + 4640,4641,1,0,0,0,4641,4643,1,0,0,0,4642,4637,1,0,0,0,4642,4643, + 1,0,0,0,4643,371,1,0,0,0,4644,4645,5,681,0,0,4645,4646,5,560,0,0, + 4646,4647,3,572,286,0,4647,373,1,0,0,0,4648,4649,5,681,0,0,4649, + 4650,5,369,0,0,4650,4653,3,572,286,0,4651,4652,5,536,0,0,4652,4654, + 5,553,0,0,4653,4651,1,0,0,0,4653,4654,1,0,0,0,4654,375,1,0,0,0,4655, + 4656,5,681,0,0,4656,4657,5,597,0,0,4657,4658,3,572,286,0,4658,377, + 1,0,0,0,4659,4660,5,681,0,0,4660,4663,5,570,0,0,4661,4662,5,32,0, + 0,4662,4664,3,572,286,0,4663,4661,1,0,0,0,4663,4664,1,0,0,0,4664, + 379,1,0,0,0,4665,4666,5,560,0,0,4666,4667,3,578,289,0,4667,4670, + 5,68,0,0,4668,4671,5,1148,0,0,4669,4671,5,1160,0,0,4670,4668,1,0, + 0,0,4670,4669,1,0,0,0,4671,381,1,0,0,0,4672,4673,5,708,0,0,4673, + 4676,3,578,289,0,4674,4675,5,187,0,0,4675,4677,3,626,313,0,4676, + 4674,1,0,0,0,4676,4677,1,0,0,0,4677,383,1,0,0,0,4678,4679,7,64,0, + 0,4679,4680,5,560,0,0,4680,4681,3,578,289,0,4681,385,1,0,0,0,4682, + 4685,3,388,194,0,4683,4685,3,4,2,0,4684,4682,1,0,0,0,4684,4683,1, + 0,0,0,4685,387,1,0,0,0,4686,4687,3,578,289,0,4687,4688,5,1144,0, + 0,4688,4690,1,0,0,0,4689,4686,1,0,0,0,4689,4690,1,0,0,0,4690,4691, + 1,0,0,0,4691,4697,5,344,0,0,4692,4693,3,408,204,0,4693,4694,5,1136, + 0,0,4694,4696,1,0,0,0,4695,4692,1,0,0,0,4696,4699,1,0,0,0,4697,4695, + 1,0,0,0,4697,4698,1,0,0,0,4698,4705,1,0,0,0,4699,4697,1,0,0,0,4700, + 4701,3,410,205,0,4701,4702,5,1136,0,0,4702,4704,1,0,0,0,4703,4700, + 1,0,0,0,4704,4707,1,0,0,0,4705,4703,1,0,0,0,4705,4706,1,0,0,0,4706, + 4713,1,0,0,0,4707,4705,1,0,0,0,4708,4709,3,412,206,0,4709,4710,5, + 1136,0,0,4710,4712,1,0,0,0,4711,4708,1,0,0,0,4712,4715,1,0,0,0,4713, + 4711,1,0,0,0,4713,4714,1,0,0,0,4714,4721,1,0,0,0,4715,4713,1,0,0, + 0,4716,4717,3,414,207,0,4717,4718,5,1136,0,0,4718,4720,1,0,0,0,4719, + 4716,1,0,0,0,4720,4723,1,0,0,0,4721,4719,1,0,0,0,4721,4722,1,0,0, + 0,4722,4727,1,0,0,0,4723,4721,1,0,0,0,4724,4726,3,418,209,0,4725, + 4724,1,0,0,0,4726,4729,1,0,0,0,4727,4725,1,0,0,0,4727,4728,1,0,0, + 0,4728,4730,1,0,0,0,4729,4727,1,0,0,0,4730,4732,5,407,0,0,4731,4733, + 3,578,289,0,4732,4731,1,0,0,0,4732,4733,1,0,0,0,4733,389,1,0,0,0, + 4734,4737,5,22,0,0,4735,4738,3,578,289,0,4736,4738,3,682,341,0,4737, + 4735,1,0,0,0,4737,4736,1,0,0,0,4737,4738,1,0,0,0,4738,4740,1,0,0, + 0,4739,4741,3,420,210,0,4740,4739,1,0,0,0,4741,4742,1,0,0,0,4742, + 4740,1,0,0,0,4742,4743,1,0,0,0,4743,4750,1,0,0,0,4744,4746,5,53, + 0,0,4745,4747,3,418,209,0,4746,4745,1,0,0,0,4747,4748,1,0,0,0,4748, + 4746,1,0,0,0,4748,4749,1,0,0,0,4749,4751,1,0,0,0,4750,4744,1,0,0, + 0,4750,4751,1,0,0,0,4751,4752,1,0,0,0,4752,4753,5,407,0,0,4753,4754, + 5,22,0,0,4754,391,1,0,0,0,4755,4756,5,77,0,0,4756,4757,3,682,341, + 0,4757,4759,5,174,0,0,4758,4760,3,418,209,0,4759,4758,1,0,0,0,4760, + 4761,1,0,0,0,4761,4759,1,0,0,0,4761,4762,1,0,0,0,4762,4766,1,0,0, + 0,4763,4765,3,422,211,0,4764,4763,1,0,0,0,4765,4768,1,0,0,0,4766, + 4764,1,0,0,0,4766,4767,1,0,0,0,4767,4775,1,0,0,0,4768,4766,1,0,0, + 0,4769,4771,5,53,0,0,4770,4772,3,418,209,0,4771,4770,1,0,0,0,4772, + 4773,1,0,0,0,4773,4771,1,0,0,0,4773,4774,1,0,0,0,4774,4776,1,0,0, + 0,4775,4769,1,0,0,0,4775,4776,1,0,0,0,4776,4777,1,0,0,0,4777,4778, + 5,407,0,0,4778,4779,5,77,0,0,4779,393,1,0,0,0,4780,4781,5,89,0,0, + 4781,4782,3,578,289,0,4782,395,1,0,0,0,4783,4784,5,96,0,0,4784,4785, + 3,578,289,0,4785,397,1,0,0,0,4786,4787,3,578,289,0,4787,4788,5,1144, + 0,0,4788,4790,1,0,0,0,4789,4786,1,0,0,0,4789,4790,1,0,0,0,4790,4791, + 1,0,0,0,4791,4793,5,105,0,0,4792,4794,3,418,209,0,4793,4792,1,0, + 0,0,4794,4795,1,0,0,0,4795,4793,1,0,0,0,4795,4796,1,0,0,0,4796,4797, + 1,0,0,0,4797,4798,5,407,0,0,4798,4800,5,105,0,0,4799,4801,3,578, + 289,0,4800,4799,1,0,0,0,4800,4801,1,0,0,0,4801,399,1,0,0,0,4802, + 4803,3,578,289,0,4803,4804,5,1144,0,0,4804,4806,1,0,0,0,4805,4802, + 1,0,0,0,4805,4806,1,0,0,0,4806,4807,1,0,0,0,4807,4809,5,140,0,0, + 4808,4810,3,418,209,0,4809,4808,1,0,0,0,4810,4811,1,0,0,0,4811,4809, + 1,0,0,0,4811,4812,1,0,0,0,4812,4813,1,0,0,0,4813,4814,5,663,0,0, + 4814,4815,3,682,341,0,4815,4816,5,407,0,0,4816,4818,5,140,0,0,4817, + 4819,3,578,289,0,4818,4817,1,0,0,0,4818,4819,1,0,0,0,4819,401,1, + 0,0,0,4820,4821,5,146,0,0,4821,4822,3,682,341,0,4822,403,1,0,0,0, + 4823,4824,3,578,289,0,4824,4825,5,1144,0,0,4825,4827,1,0,0,0,4826, + 4823,1,0,0,0,4826,4827,1,0,0,0,4827,4828,1,0,0,0,4828,4829,5,191, + 0,0,4829,4830,3,682,341,0,4830,4832,5,399,0,0,4831,4833,3,418,209, + 0,4832,4831,1,0,0,0,4833,4834,1,0,0,0,4834,4832,1,0,0,0,4834,4835, + 1,0,0,0,4835,4836,1,0,0,0,4836,4837,5,407,0,0,4837,4839,5,191,0, + 0,4838,4840,3,578,289,0,4839,4838,1,0,0,0,4839,4840,1,0,0,0,4840, + 405,1,0,0,0,4841,4842,5,361,0,0,4842,4857,3,578,289,0,4843,4848, + 5,64,0,0,4844,4846,5,520,0,0,4845,4844,1,0,0,0,4845,4846,1,0,0,0, + 4846,4847,1,0,0,0,4847,4849,5,68,0,0,4848,4845,1,0,0,0,4848,4849, + 1,0,0,0,4849,4850,1,0,0,0,4850,4851,3,578,289,0,4851,4852,5,87,0, + 0,4852,4853,3,610,305,0,4853,4857,1,0,0,0,4854,4855,5,539,0,0,4855, + 4857,3,578,289,0,4856,4841,1,0,0,0,4856,4843,1,0,0,0,4856,4854,1, + 0,0,0,4857,407,1,0,0,0,4858,4859,5,41,0,0,4859,4860,3,610,305,0, + 4860,4863,3,598,299,0,4861,4862,5,42,0,0,4862,4864,3,682,341,0,4863, + 4861,1,0,0,0,4863,4864,1,0,0,0,4864,409,1,0,0,0,4865,4866,5,41,0, + 0,4866,4867,3,578,289,0,4867,4868,5,29,0,0,4868,4875,5,65,0,0,4869, + 4876,3,584,292,0,4870,4872,5,162,0,0,4871,4873,5,669,0,0,4872,4871, + 1,0,0,0,4872,4873,1,0,0,0,4873,4874,1,0,0,0,4874,4876,5,1148,0,0, + 4875,4869,1,0,0,0,4875,4870,1,0,0,0,4876,411,1,0,0,0,4877,4878,5, + 41,0,0,4878,4879,3,578,289,0,4879,4880,5,38,0,0,4880,4881,5,65,0, + 0,4881,4882,3,198,99,0,4882,413,1,0,0,0,4883,4884,5,41,0,0,4884, + 4885,7,65,0,0,4885,4886,5,442,0,0,4886,4887,5,65,0,0,4887,4892,3, + 416,208,0,4888,4889,5,1135,0,0,4889,4891,3,416,208,0,4890,4888,1, + 0,0,0,4891,4894,1,0,0,0,4892,4890,1,0,0,0,4892,4893,1,0,0,0,4893, + 4895,1,0,0,0,4894,4892,1,0,0,0,4895,4896,3,386,193,0,4896,415,1, + 0,0,0,4897,4909,3,584,292,0,4898,4900,5,162,0,0,4899,4901,5,669, + 0,0,4900,4899,1,0,0,0,4900,4901,1,0,0,0,4901,4902,1,0,0,0,4902,4909, + 5,1148,0,0,4903,4909,3,578,289,0,4904,4909,5,163,0,0,4905,4906,5, + 114,0,0,4906,4909,5,435,0,0,4907,4909,5,161,0,0,4908,4897,1,0,0, + 0,4908,4898,1,0,0,0,4908,4903,1,0,0,0,4908,4904,1,0,0,0,4908,4905, + 1,0,0,0,4908,4907,1,0,0,0,4909,417,1,0,0,0,4910,4913,3,18,9,0,4911, + 4913,3,4,2,0,4912,4910,1,0,0,0,4912,4911,1,0,0,0,4913,4914,1,0,0, + 0,4914,4915,5,1136,0,0,4915,419,1,0,0,0,4916,4919,5,189,0,0,4917, + 4920,3,596,298,0,4918,4920,3,682,341,0,4919,4917,1,0,0,0,4919,4918, + 1,0,0,0,4920,4921,1,0,0,0,4921,4923,5,174,0,0,4922,4924,3,418,209, + 0,4923,4922,1,0,0,0,4924,4925,1,0,0,0,4925,4923,1,0,0,0,4925,4926, + 1,0,0,0,4926,421,1,0,0,0,4927,4928,5,54,0,0,4928,4929,3,682,341, + 0,4929,4931,5,174,0,0,4930,4932,3,418,209,0,4931,4930,1,0,0,0,4932, + 4933,1,0,0,0,4933,4931,1,0,0,0,4933,4934,1,0,0,0,4934,423,1,0,0, + 0,4935,4936,5,7,0,0,4936,4937,5,665,0,0,4937,4942,3,444,222,0,4938, + 4939,5,1135,0,0,4939,4941,3,444,222,0,4940,4938,1,0,0,0,4941,4944, + 1,0,0,0,4942,4940,1,0,0,0,4942,4943,1,0,0,0,4943,5009,1,0,0,0,4944, + 4942,1,0,0,0,4945,4946,5,7,0,0,4946,4948,5,665,0,0,4947,4949,3,634, + 317,0,4948,4947,1,0,0,0,4948,4949,1,0,0,0,4949,4950,1,0,0,0,4950, + 4955,3,446,223,0,4951,4952,5,1135,0,0,4952,4954,3,446,223,0,4953, + 4951,1,0,0,0,4954,4957,1,0,0,0,4955,4953,1,0,0,0,4955,4956,1,0,0, + 0,4956,4972,1,0,0,0,4957,4955,1,0,0,0,4958,4970,5,142,0,0,4959,4971, + 5,529,0,0,4960,4967,3,452,226,0,4961,4963,5,10,0,0,4962,4961,1,0, + 0,0,4962,4963,1,0,0,0,4963,4964,1,0,0,0,4964,4966,3,452,226,0,4965, + 4962,1,0,0,0,4966,4969,1,0,0,0,4967,4965,1,0,0,0,4967,4968,1,0,0, + 0,4968,4971,1,0,0,0,4969,4967,1,0,0,0,4970,4959,1,0,0,0,4970,4960, + 1,0,0,0,4971,4973,1,0,0,0,4972,4958,1,0,0,0,4972,4973,1,0,0,0,4973, + 4980,1,0,0,0,4974,4976,5,192,0,0,4975,4977,3,454,227,0,4976,4975, + 1,0,0,0,4977,4978,1,0,0,0,4978,4976,1,0,0,0,4978,4979,1,0,0,0,4979, + 4981,1,0,0,0,4980,4974,1,0,0,0,4980,4981,1,0,0,0,4981,4986,1,0,0, + 0,4982,4985,3,456,228,0,4983,4985,3,458,229,0,4984,4982,1,0,0,0, + 4984,4983,1,0,0,0,4985,4988,1,0,0,0,4986,4984,1,0,0,0,4986,4987, + 1,0,0,0,4987,4993,1,0,0,0,4988,4986,1,0,0,0,4989,4990,5,368,0,0, + 4990,4994,5,1148,0,0,4991,4992,5,14,0,0,4992,4994,5,1148,0,0,4993, + 4989,1,0,0,0,4993,4991,1,0,0,0,4993,4994,1,0,0,0,4994,5009,1,0,0, + 0,4995,4996,5,7,0,0,4996,4998,5,665,0,0,4997,4999,3,634,317,0,4998, + 4997,1,0,0,0,4998,4999,1,0,0,0,4999,5002,1,0,0,0,5000,5003,3,558, + 279,0,5001,5003,3,578,289,0,5002,5000,1,0,0,0,5002,5001,1,0,0,0, + 5003,5004,1,0,0,0,5004,5005,5,42,0,0,5005,5006,5,596,0,0,5006,5007, + 3,432,216,0,5007,5009,1,0,0,0,5008,4935,1,0,0,0,5008,4945,1,0,0, + 0,5008,4995,1,0,0,0,5009,425,1,0,0,0,5010,5011,5,33,0,0,5011,5012, + 5,665,0,0,5012,5017,3,446,223,0,5013,5014,5,1135,0,0,5014,5016,3, + 446,223,0,5015,5013,1,0,0,0,5016,5019,1,0,0,0,5017,5015,1,0,0,0, + 5017,5018,1,0,0,0,5018,5076,1,0,0,0,5019,5017,1,0,0,0,5020,5021, + 5,33,0,0,5021,5023,5,665,0,0,5022,5024,3,636,318,0,5023,5022,1,0, + 0,0,5023,5024,1,0,0,0,5024,5025,1,0,0,0,5025,5030,3,446,223,0,5026, + 5027,5,1135,0,0,5027,5029,3,446,223,0,5028,5026,1,0,0,0,5029,5032, + 1,0,0,0,5030,5028,1,0,0,0,5030,5031,1,0,0,0,5031,5036,1,0,0,0,5032, + 5030,1,0,0,0,5033,5034,5,42,0,0,5034,5035,5,596,0,0,5035,5037,3, + 432,216,0,5036,5033,1,0,0,0,5036,5037,1,0,0,0,5037,5052,1,0,0,0, + 5038,5050,5,142,0,0,5039,5051,5,529,0,0,5040,5047,3,452,226,0,5041, + 5043,5,10,0,0,5042,5041,1,0,0,0,5042,5043,1,0,0,0,5043,5044,1,0, + 0,0,5044,5046,3,452,226,0,5045,5042,1,0,0,0,5046,5049,1,0,0,0,5047, + 5045,1,0,0,0,5047,5048,1,0,0,0,5048,5051,1,0,0,0,5049,5047,1,0,0, + 0,5050,5039,1,0,0,0,5050,5040,1,0,0,0,5051,5053,1,0,0,0,5052,5038, + 1,0,0,0,5052,5053,1,0,0,0,5053,5060,1,0,0,0,5054,5056,5,192,0,0, + 5055,5057,3,454,227,0,5056,5055,1,0,0,0,5057,5058,1,0,0,0,5058,5056, + 1,0,0,0,5058,5059,1,0,0,0,5059,5061,1,0,0,0,5060,5054,1,0,0,0,5060, + 5061,1,0,0,0,5061,5066,1,0,0,0,5062,5065,3,456,228,0,5063,5065,3, + 458,229,0,5064,5062,1,0,0,0,5064,5063,1,0,0,0,5065,5068,1,0,0,0, + 5066,5064,1,0,0,0,5066,5067,1,0,0,0,5067,5073,1,0,0,0,5068,5066, + 1,0,0,0,5069,5070,5,368,0,0,5070,5074,5,1148,0,0,5071,5072,5,14, + 0,0,5072,5074,5,1148,0,0,5073,5069,1,0,0,0,5073,5071,1,0,0,0,5073, + 5074,1,0,0,0,5074,5076,1,0,0,0,5075,5010,1,0,0,0,5075,5020,1,0,0, + 0,5076,427,1,0,0,0,5077,5078,5,51,0,0,5078,5080,5,665,0,0,5079,5081, + 3,634,317,0,5080,5079,1,0,0,0,5080,5081,1,0,0,0,5081,5082,1,0,0, + 0,5082,5087,3,558,279,0,5083,5084,5,1135,0,0,5084,5086,3,558,279, + 0,5085,5083,1,0,0,0,5086,5089,1,0,0,0,5087,5085,1,0,0,0,5087,5088, + 1,0,0,0,5088,429,1,0,0,0,5089,5087,1,0,0,0,5090,5091,5,72,0,0,5091, + 5096,3,460,230,0,5092,5093,5,1135,0,0,5093,5095,3,460,230,0,5094, + 5092,1,0,0,0,5095,5098,1,0,0,0,5096,5094,1,0,0,0,5096,5097,1,0,0, + 0,5097,5099,1,0,0,0,5098,5096,1,0,0,0,5099,5101,5,118,0,0,5100,5102, + 7,66,0,0,5101,5100,1,0,0,0,5101,5102,1,0,0,0,5102,5103,1,0,0,0,5103, + 5104,3,464,232,0,5104,5105,5,175,0,0,5105,5110,3,446,223,0,5106, + 5107,5,1135,0,0,5107,5109,3,446,223,0,5108,5106,1,0,0,0,5109,5112, + 1,0,0,0,5110,5108,1,0,0,0,5110,5111,1,0,0,0,5111,5127,1,0,0,0,5112, + 5110,1,0,0,0,5113,5125,5,142,0,0,5114,5126,5,529,0,0,5115,5122,3, + 452,226,0,5116,5118,5,10,0,0,5117,5116,1,0,0,0,5117,5118,1,0,0,0, + 5118,5119,1,0,0,0,5119,5121,3,452,226,0,5120,5117,1,0,0,0,5121,5124, + 1,0,0,0,5122,5120,1,0,0,0,5122,5123,1,0,0,0,5123,5126,1,0,0,0,5124, + 5122,1,0,0,0,5125,5114,1,0,0,0,5125,5115,1,0,0,0,5126,5128,1,0,0, + 0,5127,5113,1,0,0,0,5127,5128,1,0,0,0,5128,5138,1,0,0,0,5129,5135, + 5,192,0,0,5130,5131,5,72,0,0,5131,5134,5,120,0,0,5132,5134,3,454, + 227,0,5133,5130,1,0,0,0,5133,5132,1,0,0,0,5134,5137,1,0,0,0,5135, + 5133,1,0,0,0,5135,5136,1,0,0,0,5136,5139,1,0,0,0,5137,5135,1,0,0, + 0,5138,5129,1,0,0,0,5138,5139,1,0,0,0,5139,5146,1,0,0,0,5140,5141, + 5,12,0,0,5141,5142,3,558,279,0,5142,5143,5,192,0,0,5143,5144,5,596, + 0,0,5144,5145,3,432,216,0,5145,5147,1,0,0,0,5146,5140,1,0,0,0,5146, + 5147,1,0,0,0,5147,5184,1,0,0,0,5148,5151,5,72,0,0,5149,5152,3,558, + 279,0,5150,5152,3,578,289,0,5151,5149,1,0,0,0,5151,5150,1,0,0,0, + 5152,5160,1,0,0,0,5153,5156,5,1135,0,0,5154,5157,3,558,279,0,5155, + 5157,3,578,289,0,5156,5154,1,0,0,0,5156,5155,1,0,0,0,5157,5159,1, + 0,0,0,5158,5153,1,0,0,0,5159,5162,1,0,0,0,5160,5158,1,0,0,0,5160, + 5161,1,0,0,0,5161,5163,1,0,0,0,5162,5160,1,0,0,0,5163,5166,5,175, + 0,0,5164,5167,3,558,279,0,5165,5167,3,578,289,0,5166,5164,1,0,0, + 0,5166,5165,1,0,0,0,5167,5175,1,0,0,0,5168,5171,5,1135,0,0,5169, + 5172,3,558,279,0,5170,5172,3,578,289,0,5171,5169,1,0,0,0,5171,5170, + 1,0,0,0,5172,5174,1,0,0,0,5173,5168,1,0,0,0,5174,5177,1,0,0,0,5175, + 5173,1,0,0,0,5175,5176,1,0,0,0,5176,5181,1,0,0,0,5177,5175,1,0,0, + 0,5178,5179,5,192,0,0,5179,5180,5,697,0,0,5180,5182,5,120,0,0,5181, + 5178,1,0,0,0,5181,5182,1,0,0,0,5182,5184,1,0,0,0,5183,5090,1,0,0, + 0,5183,5148,1,0,0,0,5184,431,1,0,0,0,5185,5208,5,42,0,0,5186,5208, + 5,529,0,0,5187,5197,5,6,0,0,5188,5189,5,59,0,0,5189,5194,3,558,279, + 0,5190,5191,5,1135,0,0,5191,5193,3,558,279,0,5192,5190,1,0,0,0,5193, + 5196,1,0,0,0,5194,5192,1,0,0,0,5194,5195,1,0,0,0,5195,5198,1,0,0, + 0,5196,5194,1,0,0,0,5197,5188,1,0,0,0,5197,5198,1,0,0,0,5198,5208, + 1,0,0,0,5199,5204,3,558,279,0,5200,5201,5,1135,0,0,5201,5203,3,558, + 279,0,5202,5200,1,0,0,0,5203,5206,1,0,0,0,5204,5202,1,0,0,0,5204, + 5205,1,0,0,0,5205,5208,1,0,0,0,5206,5204,1,0,0,0,5207,5185,1,0,0, + 0,5207,5186,1,0,0,0,5207,5187,1,0,0,0,5207,5199,1,0,0,0,5208,433, + 1,0,0,0,5209,5210,5,72,0,0,5210,5211,5,566,0,0,5211,5212,5,118,0, + 0,5212,5213,3,558,279,0,5213,5214,5,175,0,0,5214,5219,3,558,279, + 0,5215,5216,5,1135,0,0,5216,5218,3,558,279,0,5217,5215,1,0,0,0,5218, + 5221,1,0,0,0,5219,5217,1,0,0,0,5219,5220,1,0,0,0,5220,5225,1,0,0, + 0,5221,5219,1,0,0,0,5222,5223,5,192,0,0,5223,5224,5,72,0,0,5224, + 5226,5,120,0,0,5225,5222,1,0,0,0,5225,5226,1,0,0,0,5226,435,1,0, + 0,0,5227,5228,5,139,0,0,5228,5229,5,665,0,0,5229,5234,3,466,233, + 0,5230,5231,5,1135,0,0,5231,5233,3,466,233,0,5232,5230,1,0,0,0,5233, + 5236,1,0,0,0,5234,5232,1,0,0,0,5234,5235,1,0,0,0,5235,437,1,0,0, + 0,5236,5234,1,0,0,0,5237,5238,5,147,0,0,5238,5243,3,460,230,0,5239, + 5240,5,1135,0,0,5240,5242,3,460,230,0,5241,5239,1,0,0,0,5242,5245, + 1,0,0,0,5243,5241,1,0,0,0,5243,5244,1,0,0,0,5244,5246,1,0,0,0,5245, + 5243,1,0,0,0,5246,5248,5,118,0,0,5247,5249,7,66,0,0,5248,5247,1, + 0,0,0,5248,5249,1,0,0,0,5249,5250,1,0,0,0,5250,5251,3,464,232,0, + 5251,5252,5,68,0,0,5252,5257,3,558,279,0,5253,5254,5,1135,0,0,5254, + 5256,3,558,279,0,5255,5253,1,0,0,0,5256,5259,1,0,0,0,5257,5255,1, + 0,0,0,5257,5258,1,0,0,0,5258,5308,1,0,0,0,5259,5257,1,0,0,0,5260, + 5261,5,147,0,0,5261,5263,5,6,0,0,5262,5264,5,725,0,0,5263,5262,1, + 0,0,0,5263,5264,1,0,0,0,5264,5265,1,0,0,0,5265,5266,5,1135,0,0,5266, + 5267,5,72,0,0,5267,5268,5,120,0,0,5268,5269,5,68,0,0,5269,5274,3, + 558,279,0,5270,5271,5,1135,0,0,5271,5273,3,558,279,0,5272,5270,1, + 0,0,0,5273,5276,1,0,0,0,5274,5272,1,0,0,0,5274,5275,1,0,0,0,5275, + 5308,1,0,0,0,5276,5274,1,0,0,0,5277,5280,5,147,0,0,5278,5281,3,558, + 279,0,5279,5281,3,578,289,0,5280,5278,1,0,0,0,5280,5279,1,0,0,0, + 5281,5289,1,0,0,0,5282,5285,5,1135,0,0,5283,5286,3,558,279,0,5284, + 5286,3,578,289,0,5285,5283,1,0,0,0,5285,5284,1,0,0,0,5286,5288,1, + 0,0,0,5287,5282,1,0,0,0,5288,5291,1,0,0,0,5289,5287,1,0,0,0,5289, + 5290,1,0,0,0,5290,5292,1,0,0,0,5291,5289,1,0,0,0,5292,5295,5,68, + 0,0,5293,5296,3,558,279,0,5294,5296,3,578,289,0,5295,5293,1,0,0, + 0,5295,5294,1,0,0,0,5296,5304,1,0,0,0,5297,5300,5,1135,0,0,5298, + 5301,3,558,279,0,5299,5301,3,578,289,0,5300,5298,1,0,0,0,5300,5299, + 1,0,0,0,5301,5303,1,0,0,0,5302,5297,1,0,0,0,5303,5306,1,0,0,0,5304, + 5302,1,0,0,0,5304,5305,1,0,0,0,5305,5308,1,0,0,0,5306,5304,1,0,0, + 0,5307,5237,1,0,0,0,5307,5260,1,0,0,0,5307,5277,1,0,0,0,5308,439, + 1,0,0,0,5309,5310,5,147,0,0,5310,5311,5,566,0,0,5311,5312,5,118, + 0,0,5312,5313,3,558,279,0,5313,5314,5,68,0,0,5314,5319,3,558,279, + 0,5315,5316,5,1135,0,0,5316,5318,3,558,279,0,5317,5315,1,0,0,0,5318, + 5321,1,0,0,0,5319,5317,1,0,0,0,5319,5320,1,0,0,0,5320,441,1,0,0, + 0,5321,5319,1,0,0,0,5322,5323,5,153,0,0,5323,5326,5,551,0,0,5324, + 5325,5,65,0,0,5325,5327,3,558,279,0,5326,5324,1,0,0,0,5326,5327, + 1,0,0,0,5327,5328,1,0,0,0,5328,5331,5,1124,0,0,5329,5332,3,676,338, + 0,5330,5332,5,1148,0,0,5331,5329,1,0,0,0,5331,5330,1,0,0,0,5332, + 443,1,0,0,0,5333,5334,3,558,279,0,5334,5335,3,456,228,0,5335,445, + 1,0,0,0,5336,5337,3,558,279,0,5337,5338,5,448,0,0,5338,5339,5,19, + 0,0,5339,5340,5,551,0,0,5340,5341,5,1148,0,0,5341,5362,1,0,0,0,5342, + 5343,3,558,279,0,5343,5344,5,448,0,0,5344,5345,5,19,0,0,5345,5346, + 5,991,0,0,5346,5347,5,551,0,0,5347,5348,3,448,224,0,5348,5362,1, + 0,0,0,5349,5350,3,558,279,0,5350,5351,5,448,0,0,5351,5352,5,19,0, + 0,5352,5353,5,1148,0,0,5353,5354,3,448,224,0,5354,5362,1,0,0,0,5355, + 5356,3,558,279,0,5356,5357,5,448,0,0,5357,5358,5,192,0,0,5358,5359, + 3,450,225,0,5359,5362,1,0,0,0,5360,5362,3,558,279,0,5361,5336,1, + 0,0,0,5361,5342,1,0,0,0,5361,5349,1,0,0,0,5361,5355,1,0,0,0,5361, + 5360,1,0,0,0,5362,447,1,0,0,0,5363,5364,5,141,0,0,5364,5366,5,1148, + 0,0,5365,5363,1,0,0,0,5365,5366,1,0,0,0,5366,5370,1,0,0,0,5367,5368, + 5,145,0,0,5368,5369,5,35,0,0,5369,5371,5,551,0,0,5370,5367,1,0,0, + 0,5370,5371,1,0,0,0,5371,449,1,0,0,0,5372,5380,3,576,288,0,5373, + 5377,7,67,0,0,5374,5378,5,1148,0,0,5375,5376,5,991,0,0,5376,5378, + 5,551,0,0,5377,5374,1,0,0,0,5377,5375,1,0,0,0,5378,5379,1,0,0,0, + 5379,5381,3,448,224,0,5380,5373,1,0,0,0,5380,5381,1,0,0,0,5381,5387, + 1,0,0,0,5382,5383,3,576,288,0,5383,5384,5,187,0,0,5384,5385,3,676, + 338,0,5385,5387,1,0,0,0,5386,5372,1,0,0,0,5386,5382,1,0,0,0,5387, + 451,1,0,0,0,5388,5397,5,167,0,0,5389,5397,5,680,0,0,5390,5391,5, + 358,0,0,5391,5397,5,1148,0,0,5392,5393,5,465,0,0,5393,5397,5,1148, + 0,0,5394,5395,5,640,0,0,5395,5397,5,1148,0,0,5396,5388,1,0,0,0,5396, + 5389,1,0,0,0,5396,5390,1,0,0,0,5396,5392,1,0,0,0,5396,5394,1,0,0, + 0,5397,453,1,0,0,0,5398,5399,5,499,0,0,5399,5407,3,584,292,0,5400, + 5401,5,502,0,0,5401,5407,3,584,292,0,5402,5403,5,498,0,0,5403,5407, + 3,584,292,0,5404,5405,5,503,0,0,5405,5407,3,584,292,0,5406,5398, + 1,0,0,0,5406,5400,1,0,0,0,5406,5402,1,0,0,0,5406,5404,1,0,0,0,5407, + 455,1,0,0,0,5408,5409,5,551,0,0,5409,5416,5,420,0,0,5410,5417,5, + 42,0,0,5411,5417,5,519,0,0,5412,5413,5,86,0,0,5413,5414,3,584,292, + 0,5414,5415,5,691,0,0,5415,5417,1,0,0,0,5416,5410,1,0,0,0,5416,5411, + 1,0,0,0,5416,5412,1,0,0,0,5416,5417,1,0,0,0,5417,5447,1,0,0,0,5418, + 5419,5,551,0,0,5419,5422,5,445,0,0,5420,5423,5,42,0,0,5421,5423, + 3,584,292,0,5422,5420,1,0,0,0,5422,5421,1,0,0,0,5423,5447,1,0,0, + 0,5424,5425,5,551,0,0,5425,5426,5,595,0,0,5426,5431,5,86,0,0,5427, + 5432,5,42,0,0,5428,5429,3,584,292,0,5429,5430,5,691,0,0,5430,5432, + 1,0,0,0,5431,5427,1,0,0,0,5431,5428,1,0,0,0,5432,5447,1,0,0,0,5433, + 5434,5,551,0,0,5434,5435,5,142,0,0,5435,5437,5,35,0,0,5436,5438, + 7,68,0,0,5437,5436,1,0,0,0,5437,5438,1,0,0,0,5438,5447,1,0,0,0,5439, + 5440,5,424,0,0,5440,5447,3,584,292,0,5441,5444,5,552,0,0,5442,5445, + 3,584,292,0,5443,5445,5,657,0,0,5444,5442,1,0,0,0,5444,5443,1,0, + 0,0,5445,5447,1,0,0,0,5446,5408,1,0,0,0,5446,5418,1,0,0,0,5446,5424, + 1,0,0,0,5446,5433,1,0,0,0,5446,5439,1,0,0,0,5446,5441,1,0,0,0,5447, + 457,1,0,0,0,5448,5449,5,332,0,0,5449,5450,7,69,0,0,5450,459,1,0, + 0,0,5451,5456,3,462,231,0,5452,5453,5,1133,0,0,5453,5454,3,610,305, + 0,5454,5455,5,1134,0,0,5455,5457,1,0,0,0,5456,5452,1,0,0,0,5456, + 5457,1,0,0,0,5457,461,1,0,0,0,5458,5460,5,6,0,0,5459,5461,5,725, + 0,0,5460,5459,1,0,0,0,5460,5461,1,0,0,0,5461,5552,1,0,0,0,5462,5464, + 5,7,0,0,5463,5465,5,733,0,0,5464,5463,1,0,0,0,5464,5465,1,0,0,0, + 5465,5552,1,0,0,0,5466,5474,5,33,0,0,5467,5468,5,649,0,0,5468,5475, + 5,742,0,0,5469,5475,5,733,0,0,5470,5475,5,671,0,0,5471,5475,5,665, + 0,0,5472,5475,5,647,0,0,5473,5475,5,596,0,0,5474,5467,1,0,0,0,5474, + 5469,1,0,0,0,5474,5470,1,0,0,0,5474,5471,1,0,0,0,5474,5472,1,0,0, + 0,5474,5473,1,0,0,0,5474,5475,1,0,0,0,5475,5552,1,0,0,0,5476,5552, + 5,44,0,0,5477,5479,5,51,0,0,5478,5480,5,596,0,0,5479,5478,1,0,0, + 0,5479,5480,1,0,0,0,5480,5552,1,0,0,0,5481,5552,5,415,0,0,5482,5552, + 5,708,0,0,5483,5552,5,709,0,0,5484,5485,5,72,0,0,5485,5552,5,120, + 0,0,5486,5552,5,81,0,0,5487,5552,5,85,0,0,5488,5489,5,103,0,0,5489, + 5552,5,742,0,0,5490,5552,5,726,0,0,5491,5552,5,566,0,0,5492,5552, + 5,136,0,0,5493,5552,5,727,0,0,5494,5495,5,588,0,0,5495,5552,7,70, + 0,0,5496,5552,5,152,0,0,5497,5498,5,155,0,0,5498,5552,7,71,0,0,5499, + 5552,5,739,0,0,5500,5552,5,740,0,0,5501,5552,5,177,0,0,5502,5552, + 5,184,0,0,5503,5552,5,185,0,0,5504,5552,5,698,0,0,5505,5552,5,699, + 0,0,5506,5552,5,700,0,0,5507,5552,5,701,0,0,5508,5552,5,702,0,0, + 5509,5552,5,703,0,0,5510,5552,5,704,0,0,5511,5552,5,705,0,0,5512, + 5552,5,706,0,0,5513,5552,5,707,0,0,5514,5552,5,710,0,0,5515,5552, + 5,711,0,0,5516,5552,5,712,0,0,5517,5552,5,713,0,0,5518,5552,5,714, + 0,0,5519,5552,5,715,0,0,5520,5552,5,716,0,0,5521,5552,5,717,0,0, + 5522,5552,5,718,0,0,5523,5552,5,719,0,0,5524,5552,5,722,0,0,5525, + 5552,5,723,0,0,5526,5552,5,724,0,0,5527,5552,5,728,0,0,5528,5552, + 5,729,0,0,5529,5552,5,730,0,0,5530,5552,5,731,0,0,5531,5552,5,732, + 0,0,5532,5552,5,735,0,0,5533,5552,5,736,0,0,5534,5552,5,737,0,0, + 5535,5552,5,158,0,0,5536,5552,5,738,0,0,5537,5552,5,1077,0,0,5538, + 5552,5,741,0,0,5539,5552,5,743,0,0,5540,5552,5,1088,0,0,5541,5552, + 5,744,0,0,5542,5552,5,745,0,0,5543,5544,5,102,0,0,5544,5545,5,68, + 0,0,5545,5552,5,734,0,0,5546,5547,5,152,0,0,5547,5548,5,87,0,0,5548, + 5552,5,734,0,0,5549,5550,5,720,0,0,5550,5552,5,721,0,0,5551,5458, + 1,0,0,0,5551,5462,1,0,0,0,5551,5466,1,0,0,0,5551,5476,1,0,0,0,5551, + 5477,1,0,0,0,5551,5481,1,0,0,0,5551,5482,1,0,0,0,5551,5483,1,0,0, + 0,5551,5484,1,0,0,0,5551,5486,1,0,0,0,5551,5487,1,0,0,0,5551,5488, + 1,0,0,0,5551,5490,1,0,0,0,5551,5491,1,0,0,0,5551,5492,1,0,0,0,5551, + 5493,1,0,0,0,5551,5494,1,0,0,0,5551,5496,1,0,0,0,5551,5497,1,0,0, + 0,5551,5499,1,0,0,0,5551,5500,1,0,0,0,5551,5501,1,0,0,0,5551,5502, + 1,0,0,0,5551,5503,1,0,0,0,5551,5504,1,0,0,0,5551,5505,1,0,0,0,5551, + 5506,1,0,0,0,5551,5507,1,0,0,0,5551,5508,1,0,0,0,5551,5509,1,0,0, + 0,5551,5510,1,0,0,0,5551,5511,1,0,0,0,5551,5512,1,0,0,0,5551,5513, + 1,0,0,0,5551,5514,1,0,0,0,5551,5515,1,0,0,0,5551,5516,1,0,0,0,5551, + 5517,1,0,0,0,5551,5518,1,0,0,0,5551,5519,1,0,0,0,5551,5520,1,0,0, + 0,5551,5521,1,0,0,0,5551,5522,1,0,0,0,5551,5523,1,0,0,0,5551,5524, + 1,0,0,0,5551,5525,1,0,0,0,5551,5526,1,0,0,0,5551,5527,1,0,0,0,5551, + 5528,1,0,0,0,5551,5529,1,0,0,0,5551,5530,1,0,0,0,5551,5531,1,0,0, + 0,5551,5532,1,0,0,0,5551,5533,1,0,0,0,5551,5534,1,0,0,0,5551,5535, + 1,0,0,0,5551,5536,1,0,0,0,5551,5537,1,0,0,0,5551,5538,1,0,0,0,5551, + 5539,1,0,0,0,5551,5540,1,0,0,0,5551,5541,1,0,0,0,5551,5542,1,0,0, + 0,5551,5543,1,0,0,0,5551,5546,1,0,0,0,5551,5549,1,0,0,0,5552,463, + 1,0,0,0,5553,5570,5,1117,0,0,5554,5555,5,1117,0,0,5555,5556,5,1132, + 0,0,5556,5570,5,1117,0,0,5557,5558,3,578,289,0,5558,5559,5,1132, + 0,0,5559,5560,5,1117,0,0,5560,5570,1,0,0,0,5561,5562,3,578,289,0, + 5562,5563,5,1132,0,0,5563,5564,3,578,289,0,5564,5570,1,0,0,0,5565, + 5566,3,578,289,0,5566,5567,3,582,291,0,5567,5570,1,0,0,0,5568,5570, + 3,578,289,0,5569,5553,1,0,0,0,5569,5554,1,0,0,0,5569,5557,1,0,0, + 0,5569,5561,1,0,0,0,5569,5565,1,0,0,0,5569,5568,1,0,0,0,5570,465, + 1,0,0,0,5571,5572,3,558,279,0,5572,5573,5,175,0,0,5573,5574,3,558, + 279,0,5574,467,1,0,0,0,5575,5577,5,9,0,0,5576,5578,7,72,0,0,5577, + 5576,1,0,0,0,5577,5578,1,0,0,0,5578,5579,1,0,0,0,5579,5580,7,54, + 0,0,5580,5598,3,614,307,0,5581,5582,5,184,0,0,5582,5583,5,76,0,0, + 5583,5584,5,118,0,0,5584,5589,3,554,277,0,5585,5586,5,1135,0,0,5586, + 5588,3,554,277,0,5587,5585,1,0,0,0,5588,5591,1,0,0,0,5589,5587,1, + 0,0,0,5589,5590,1,0,0,0,5590,5596,1,0,0,0,5591,5589,1,0,0,0,5592, + 5593,5,192,0,0,5593,5594,3,584,292,0,5594,5595,5,18,0,0,5595,5597, + 1,0,0,0,5596,5592,1,0,0,0,5596,5597,1,0,0,0,5597,5599,1,0,0,0,5598, + 5581,1,0,0,0,5598,5599,1,0,0,0,5599,5611,1,0,0,0,5600,5601,5,51, + 0,0,5601,5602,5,76,0,0,5602,5603,5,118,0,0,5603,5608,3,554,277,0, + 5604,5605,5,1135,0,0,5605,5607,3,554,277,0,5606,5604,1,0,0,0,5607, + 5610,1,0,0,0,5608,5606,1,0,0,0,5608,5609,1,0,0,0,5609,5612,1,0,0, + 0,5610,5608,1,0,0,0,5611,5600,1,0,0,0,5611,5612,1,0,0,0,5612,469, + 1,0,0,0,5613,5614,5,26,0,0,5614,5615,5,172,0,0,5615,5619,3,614,307, + 0,5616,5618,3,478,239,0,5617,5616,1,0,0,0,5618,5621,1,0,0,0,5619, + 5617,1,0,0,0,5619,5620,1,0,0,0,5620,471,1,0,0,0,5621,5619,1,0,0, + 0,5622,5623,5,356,0,0,5623,5624,5,172,0,0,5624,5626,3,614,307,0, + 5625,5627,7,73,0,0,5626,5625,1,0,0,0,5626,5627,1,0,0,0,5627,473, + 1,0,0,0,5628,5630,5,119,0,0,5629,5631,7,72,0,0,5630,5629,1,0,0,0, + 5630,5631,1,0,0,0,5631,5632,1,0,0,0,5632,5633,7,54,0,0,5633,5634, + 3,614,307,0,5634,475,1,0,0,0,5635,5637,5,580,0,0,5636,5638,7,72, + 0,0,5637,5636,1,0,0,0,5637,5638,1,0,0,0,5638,5639,1,0,0,0,5639,5640, + 5,172,0,0,5640,5642,3,614,307,0,5641,5643,5,568,0,0,5642,5641,1, + 0,0,0,5642,5643,1,0,0,0,5643,5645,1,0,0,0,5644,5646,5,422,0,0,5645, + 5644,1,0,0,0,5645,5646,1,0,0,0,5646,5648,1,0,0,0,5647,5649,5,666, + 0,0,5648,5647,1,0,0,0,5648,5649,1,0,0,0,5649,477,1,0,0,0,5650,5651, + 5,65,0,0,5651,5658,5,664,0,0,5652,5658,5,568,0,0,5653,5658,5,425, + 0,0,5654,5658,5,504,0,0,5655,5658,5,422,0,0,5656,5658,5,354,0,0, + 5657,5650,1,0,0,0,5657,5652,1,0,0,0,5657,5653,1,0,0,0,5657,5654, + 1,0,0,0,5657,5655,1,0,0,0,5657,5656,1,0,0,0,5658,479,1,0,0,0,5659, + 5661,5,33,0,0,5660,5662,5,335,0,0,5661,5660,1,0,0,0,5661,5662,1, + 0,0,0,5662,5663,1,0,0,0,5663,5665,5,437,0,0,5664,5666,3,636,318, + 0,5665,5664,1,0,0,0,5665,5666,1,0,0,0,5666,5667,1,0,0,0,5667,5668, + 3,578,289,0,5668,5669,5,594,0,0,5669,5670,7,74,0,0,5670,5671,5,619, + 0,0,5671,5672,5,1148,0,0,5672,481,1,0,0,0,5673,5674,5,456,0,0,5674, + 5675,5,554,0,0,5675,5676,3,578,289,0,5676,5677,5,619,0,0,5677,5678, + 5,1148,0,0,5678,483,1,0,0,0,5679,5680,5,661,0,0,5680,5681,5,554, + 0,0,5681,5682,3,578,289,0,5682,485,1,0,0,0,5683,5684,5,153,0,0,5684, + 5685,3,490,245,0,5685,5688,7,75,0,0,5686,5689,3,682,341,0,5687,5689, + 5,118,0,0,5688,5686,1,0,0,0,5688,5687,1,0,0,0,5689,5699,1,0,0,0, + 5690,5691,5,1135,0,0,5691,5692,3,490,245,0,5692,5695,7,75,0,0,5693, + 5696,3,682,341,0,5694,5696,5,118,0,0,5695,5693,1,0,0,0,5695,5694, + 1,0,0,0,5696,5698,1,0,0,0,5697,5690,1,0,0,0,5698,5701,1,0,0,0,5699, + 5697,1,0,0,0,5699,5700,1,0,0,0,5700,5736,1,0,0,0,5701,5699,1,0,0, + 0,5702,5703,5,153,0,0,5703,5706,3,60,30,0,5704,5707,3,562,281,0, + 5705,5707,5,42,0,0,5706,5704,1,0,0,0,5706,5705,1,0,0,0,5707,5736, + 1,0,0,0,5708,5709,5,153,0,0,5709,5716,5,517,0,0,5710,5713,3,562, + 281,0,5711,5712,5,27,0,0,5712,5714,3,564,282,0,5713,5711,1,0,0,0, + 5713,5714,1,0,0,0,5714,5717,1,0,0,0,5715,5717,5,42,0,0,5716,5710, + 1,0,0,0,5716,5715,1,0,0,0,5717,5736,1,0,0,0,5718,5736,3,442,221, + 0,5719,5736,3,316,158,0,5720,5736,3,314,157,0,5721,5722,5,153,0, + 0,5722,5723,3,548,274,0,5723,5724,7,75,0,0,5724,5732,3,682,341,0, + 5725,5726,5,1135,0,0,5726,5727,3,548,274,0,5727,5728,7,75,0,0,5728, + 5729,3,682,341,0,5729,5731,1,0,0,0,5730,5725,1,0,0,0,5731,5734,1, + 0,0,0,5732,5730,1,0,0,0,5732,5733,1,0,0,0,5733,5736,1,0,0,0,5734, + 5732,1,0,0,0,5735,5683,1,0,0,0,5735,5702,1,0,0,0,5735,5708,1,0,0, + 0,5735,5718,1,0,0,0,5735,5719,1,0,0,0,5735,5720,1,0,0,0,5735,5721, + 1,0,0,0,5736,487,1,0,0,0,5737,5738,5,155,0,0,5738,5739,7,56,0,0, + 5739,5891,5,476,0,0,5740,5741,5,155,0,0,5741,5742,7,76,0,0,5742, + 5745,5,416,0,0,5743,5744,5,80,0,0,5744,5746,5,1148,0,0,5745,5743, + 1,0,0,0,5745,5746,1,0,0,0,5746,5749,1,0,0,0,5747,5748,5,68,0,0,5748, + 5750,3,584,292,0,5749,5747,1,0,0,0,5749,5750,1,0,0,0,5750,5758,1, + 0,0,0,5751,5755,5,99,0,0,5752,5753,3,584,292,0,5753,5754,5,1135, + 0,0,5754,5756,1,0,0,0,5755,5752,1,0,0,0,5755,5756,1,0,0,0,5756,5757, + 1,0,0,0,5757,5759,3,584,292,0,5758,5751,1,0,0,0,5758,5759,1,0,0, + 0,5759,5891,1,0,0,0,5760,5761,5,155,0,0,5761,5763,3,492,246,0,5762, + 5764,3,494,247,0,5763,5762,1,0,0,0,5763,5764,1,0,0,0,5764,5891,1, + 0,0,0,5765,5767,5,155,0,0,5766,5768,5,436,0,0,5767,5766,1,0,0,0, + 5767,5768,1,0,0,0,5768,5769,1,0,0,0,5769,5770,7,41,0,0,5770,5771, + 7,77,0,0,5771,5774,3,550,275,0,5772,5773,7,77,0,0,5773,5775,3,578, + 289,0,5774,5772,1,0,0,0,5774,5775,1,0,0,0,5775,5777,1,0,0,0,5776, + 5778,3,494,247,0,5777,5776,1,0,0,0,5777,5778,1,0,0,0,5778,5891,1, + 0,0,0,5779,5780,5,155,0,0,5780,5781,5,33,0,0,5781,5783,7,0,0,0,5782, + 5784,3,636,318,0,5783,5782,1,0,0,0,5783,5784,1,0,0,0,5784,5785,1, + 0,0,0,5785,5891,3,578,289,0,5786,5787,5,155,0,0,5787,5788,5,33,0, + 0,5788,5789,7,78,0,0,5789,5891,3,548,274,0,5790,5791,5,155,0,0,5791, + 5792,5,33,0,0,5792,5793,5,665,0,0,5793,5891,3,558,279,0,5794,5795, + 5,155,0,0,5795,5796,5,409,0,0,5796,5797,3,566,283,0,5797,5798,7, + 79,0,0,5798,5891,1,0,0,0,5799,5800,5,155,0,0,5800,5891,3,496,248, + 0,5801,5802,5,155,0,0,5802,5810,7,80,0,0,5803,5807,5,99,0,0,5804, + 5805,3,584,292,0,5805,5806,5,1135,0,0,5806,5808,1,0,0,0,5807,5804, + 1,0,0,0,5807,5808,1,0,0,0,5808,5809,1,0,0,0,5809,5811,3,584,292, + 0,5810,5803,1,0,0,0,5810,5811,1,0,0,0,5811,5891,1,0,0,0,5812,5813, + 5,155,0,0,5813,5814,5,290,0,0,5814,5815,5,1133,0,0,5815,5816,5,1117, + 0,0,5816,5817,5,1134,0,0,5817,5891,7,80,0,0,5818,5819,5,155,0,0, + 5819,5822,3,498,249,0,5820,5821,7,77,0,0,5821,5823,3,578,289,0,5822, + 5820,1,0,0,0,5822,5823,1,0,0,0,5823,5825,1,0,0,0,5824,5826,3,494, + 247,0,5825,5824,1,0,0,0,5825,5826,1,0,0,0,5826,5891,1,0,0,0,5827, + 5828,5,155,0,0,5828,5829,7,81,0,0,5829,5830,5,364,0,0,5830,5891, + 3,548,274,0,5831,5832,5,155,0,0,5832,5835,5,440,0,0,5833,5834,5, + 65,0,0,5834,5836,3,558,279,0,5835,5833,1,0,0,0,5835,5836,1,0,0,0, + 5836,5891,1,0,0,0,5837,5838,5,155,0,0,5838,5839,7,82,0,0,5839,5840, + 7,77,0,0,5840,5843,3,550,275,0,5841,5842,7,77,0,0,5842,5844,3,578, + 289,0,5843,5841,1,0,0,0,5843,5844,1,0,0,0,5844,5847,1,0,0,0,5845, + 5846,5,190,0,0,5846,5848,3,682,341,0,5847,5845,1,0,0,0,5847,5848, + 1,0,0,0,5848,5891,1,0,0,0,5849,5850,5,155,0,0,5850,5851,5,539,0, + 0,5851,5854,5,742,0,0,5852,5853,7,77,0,0,5853,5855,3,578,289,0,5854, + 5852,1,0,0,0,5854,5855,1,0,0,0,5855,5857,1,0,0,0,5856,5858,3,494, + 247,0,5857,5856,1,0,0,0,5857,5858,1,0,0,0,5858,5891,1,0,0,0,5859, + 5860,5,155,0,0,5860,5861,5,564,0,0,5861,5866,3,500,250,0,5862,5863, + 5,1135,0,0,5863,5865,3,500,250,0,5864,5862,1,0,0,0,5865,5868,1,0, + 0,0,5866,5864,1,0,0,0,5866,5867,1,0,0,0,5867,5872,1,0,0,0,5868,5866, + 1,0,0,0,5869,5870,5,65,0,0,5870,5871,5,567,0,0,5871,5873,3,584,292, + 0,5872,5869,1,0,0,0,5872,5873,1,0,0,0,5873,5874,1,0,0,0,5874,5878, + 5,99,0,0,5875,5876,3,584,292,0,5876,5877,5,1135,0,0,5877,5879,1, + 0,0,0,5878,5875,1,0,0,0,5878,5879,1,0,0,0,5879,5880,1,0,0,0,5880, + 5881,3,584,292,0,5881,5891,1,0,0,0,5882,5883,5,155,0,0,5883,5884, + 5,614,0,0,5884,5888,5,634,0,0,5885,5886,5,65,0,0,5886,5887,5,355, + 0,0,5887,5889,5,1148,0,0,5888,5885,1,0,0,0,5888,5889,1,0,0,0,5889, + 5891,1,0,0,0,5890,5737,1,0,0,0,5890,5740,1,0,0,0,5890,5760,1,0,0, + 0,5890,5765,1,0,0,0,5890,5779,1,0,0,0,5890,5786,1,0,0,0,5890,5790, + 1,0,0,0,5890,5794,1,0,0,0,5890,5799,1,0,0,0,5890,5801,1,0,0,0,5890, + 5812,1,0,0,0,5890,5818,1,0,0,0,5890,5827,1,0,0,0,5890,5831,1,0,0, + 0,5890,5837,1,0,0,0,5890,5849,1,0,0,0,5890,5859,1,0,0,0,5890,5882, + 1,0,0,0,5891,489,1,0,0,0,5892,5903,5,1160,0,0,5893,5903,5,1161,0, + 0,5894,5895,5,1137,0,0,5895,5897,5,1137,0,0,5896,5894,1,0,0,0,5896, + 5897,1,0,0,0,5897,5898,1,0,0,0,5898,5900,7,83,0,0,5899,5896,1,0, + 0,0,5899,5900,1,0,0,0,5900,5901,1,0,0,0,5901,5903,3,578,289,0,5902, + 5892,1,0,0,0,5902,5893,1,0,0,0,5902,5899,1,0,0,0,5903,491,1,0,0, + 0,5904,5905,5,25,0,0,5905,5918,5,153,0,0,5906,5918,5,844,0,0,5907, + 5918,5,40,0,0,5908,5918,5,151,0,0,5909,5910,5,437,0,0,5910,5918, + 5,634,0,0,5911,5912,5,131,0,0,5912,5918,5,634,0,0,5913,5915,7,55, + 0,0,5914,5913,1,0,0,0,5914,5915,1,0,0,0,5915,5916,1,0,0,0,5916,5918, + 7,84,0,0,5917,5904,1,0,0,0,5917,5906,1,0,0,0,5917,5907,1,0,0,0,5917, + 5908,1,0,0,0,5917,5909,1,0,0,0,5917,5911,1,0,0,0,5917,5914,1,0,0, + 0,5918,493,1,0,0,0,5919,5920,5,98,0,0,5920,5924,5,1148,0,0,5921, + 5922,5,190,0,0,5922,5924,3,682,341,0,5923,5919,1,0,0,0,5923,5921, + 1,0,0,0,5924,495,1,0,0,0,5925,5927,5,636,0,0,5926,5925,1,0,0,0,5926, + 5927,1,0,0,0,5927,5928,1,0,0,0,5928,5943,5,410,0,0,5929,5930,5,477, + 0,0,5930,5943,5,634,0,0,5931,5943,5,556,0,0,5932,5943,5,725,0,0, + 5933,5935,5,436,0,0,5934,5933,1,0,0,0,5934,5935,1,0,0,0,5935,5936, + 1,0,0,0,5936,5943,5,563,0,0,5937,5943,5,565,0,0,5938,5939,5,614, + 0,0,5939,5943,5,447,0,0,5940,5943,5,339,0,0,5941,5943,5,383,0,0, + 5942,5926,1,0,0,0,5942,5929,1,0,0,0,5942,5931,1,0,0,0,5942,5932, + 1,0,0,0,5942,5934,1,0,0,0,5942,5937,1,0,0,0,5942,5938,1,0,0,0,5942, + 5940,1,0,0,0,5942,5941,1,0,0,0,5943,497,1,0,0,0,5944,5953,5,416, + 0,0,5945,5946,5,172,0,0,5946,5953,5,634,0,0,5947,5949,5,436,0,0, + 5948,5947,1,0,0,0,5948,5949,1,0,0,0,5949,5950,1,0,0,0,5950,5953, + 5,742,0,0,5951,5953,5,655,0,0,5952,5944,1,0,0,0,5952,5945,1,0,0, + 0,5952,5948,1,0,0,0,5952,5951,1,0,0,0,5953,499,1,0,0,0,5954,5967, + 5,6,0,0,5955,5956,5,347,0,0,5956,5967,5,461,0,0,5957,5958,5,382, + 0,0,5958,5967,5,645,0,0,5959,5967,5,385,0,0,5960,5967,5,463,0,0, + 5961,5967,5,792,0,0,5962,5963,5,544,0,0,5963,5967,5,426,0,0,5964, + 5967,5,621,0,0,5965,5967,5,644,0,0,5966,5954,1,0,0,0,5966,5955,1, + 0,0,0,5966,5957,1,0,0,0,5966,5959,1,0,0,0,5966,5960,1,0,0,0,5966, + 5961,1,0,0,0,5966,5962,1,0,0,0,5966,5964,1,0,0,0,5966,5965,1,0,0, + 0,5967,501,1,0,0,0,5968,5969,5,345,0,0,5969,5970,5,1148,0,0,5970, + 503,1,0,0,0,5971,5972,5,351,0,0,5972,5973,5,81,0,0,5973,5978,3,516, + 258,0,5974,5975,5,1135,0,0,5975,5977,3,516,258,0,5976,5974,1,0,0, + 0,5977,5980,1,0,0,0,5978,5976,1,0,0,0,5978,5979,1,0,0,0,5979,5988, + 1,0,0,0,5980,5978,1,0,0,0,5981,5982,5,129,0,0,5982,5985,5,1133,0, + 0,5983,5986,3,610,305,0,5984,5986,5,6,0,0,5985,5983,1,0,0,0,5985, + 5984,1,0,0,0,5986,5987,1,0,0,0,5987,5989,5,1134,0,0,5988,5981,1, + 0,0,0,5988,5989,1,0,0,0,5989,5990,1,0,0,0,5990,5991,5,80,0,0,5991, + 5992,3,578,289,0,5992,505,1,0,0,0,5993,5995,5,432,0,0,5994,5996, + 7,72,0,0,5995,5994,1,0,0,0,5995,5996,1,0,0,0,5996,5997,1,0,0,0,5997, + 6002,3,518,259,0,5998,5999,5,1135,0,0,5999,6001,3,518,259,0,6000, + 5998,1,0,0,0,6001,6004,1,0,0,0,6002,6000,1,0,0,0,6002,6003,1,0,0, + 0,6003,507,1,0,0,0,6004,6002,1,0,0,0,6005,6007,5,93,0,0,6006,6008, + 7,85,0,0,6007,6006,1,0,0,0,6007,6008,1,0,0,0,6008,6009,1,0,0,0,6009, + 6010,3,682,341,0,6010,509,1,0,0,0,6011,6012,5,102,0,0,6012,6013, + 5,81,0,0,6013,6014,5,87,0,0,6014,6015,5,351,0,0,6015,6020,3,522, + 261,0,6016,6017,5,1135,0,0,6017,6019,3,522,261,0,6018,6016,1,0,0, + 0,6019,6022,1,0,0,0,6020,6018,1,0,0,0,6020,6021,1,0,0,0,6021,511, + 1,0,0,0,6022,6020,1,0,0,0,6023,6024,5,589,0,0,6024,6025,5,567,0, + 0,6025,6026,5,351,0,0,6026,513,1,0,0,0,6027,6028,5,739,0,0,6028, + 515,1,0,0,0,6029,6037,3,550,275,0,6030,6032,7,20,0,0,6031,6030,1, + 0,0,0,6031,6032,1,0,0,0,6032,6033,1,0,0,0,6033,6034,5,1133,0,0,6034, + 6035,3,610,305,0,6035,6036,5,1134,0,0,6036,6038,1,0,0,0,6037,6031, + 1,0,0,0,6037,6038,1,0,0,0,6038,517,1,0,0,0,6039,6058,5,394,0,0,6040, + 6058,5,447,0,0,6041,6043,7,86,0,0,6042,6041,1,0,0,0,6042,6043,1, + 0,0,0,6043,6044,1,0,0,0,6044,6058,5,476,0,0,6045,6058,5,540,0,0, + 6046,6058,5,725,0,0,6047,6048,5,567,0,0,6048,6058,5,351,0,0,6049, + 6058,5,634,0,0,6050,6058,5,667,0,0,6051,6055,5,742,0,0,6052,6053, + 5,192,0,0,6053,6054,5,134,0,0,6054,6056,5,103,0,0,6055,6052,1,0, + 0,0,6055,6056,1,0,0,0,6056,6058,1,0,0,0,6057,6039,1,0,0,0,6057,6040, + 1,0,0,0,6057,6042,1,0,0,0,6057,6045,1,0,0,0,6057,6046,1,0,0,0,6057, + 6047,1,0,0,0,6057,6049,1,0,0,0,6057,6050,1,0,0,0,6057,6051,1,0,0, + 0,6058,6072,1,0,0,0,6059,6060,5,574,0,0,6060,6062,5,476,0,0,6061, + 6063,3,354,177,0,6062,6061,1,0,0,0,6062,6063,1,0,0,0,6063,6072,1, + 0,0,0,6064,6066,7,54,0,0,6065,6067,3,614,307,0,6066,6065,1,0,0,0, + 6066,6067,1,0,0,0,6067,6069,1,0,0,0,6068,6070,3,520,260,0,6069,6068, + 1,0,0,0,6069,6070,1,0,0,0,6070,6072,1,0,0,0,6071,6057,1,0,0,0,6071, + 6059,1,0,0,0,6071,6064,1,0,0,0,6072,519,1,0,0,0,6073,6074,5,192, + 0,0,6074,6075,5,134,0,0,6075,6079,5,103,0,0,6076,6077,5,65,0,0,6077, + 6079,5,421,0,0,6078,6073,1,0,0,0,6078,6076,1,0,0,0,6079,521,1,0, + 0,0,6080,6088,3,550,275,0,6081,6082,5,129,0,0,6082,6085,5,1133,0, + 0,6083,6086,3,610,305,0,6084,6086,5,6,0,0,6085,6083,1,0,0,0,6085, + 6084,1,0,0,0,6086,6087,1,0,0,0,6087,6089,5,1134,0,0,6088,6081,1, + 0,0,0,6088,6089,1,0,0,0,6089,6097,1,0,0,0,6090,6092,7,20,0,0,6091, + 6090,1,0,0,0,6091,6092,1,0,0,0,6092,6093,1,0,0,0,6093,6094,5,1133, + 0,0,6094,6095,3,610,305,0,6095,6096,5,1134,0,0,6096,6098,1,0,0,0, + 6097,6091,1,0,0,0,6097,6098,1,0,0,0,6098,6101,1,0,0,0,6099,6100, + 5,78,0,0,6100,6102,5,470,0,0,6101,6099,1,0,0,0,6101,6102,1,0,0,0, + 6102,523,1,0,0,0,6103,6104,7,87,0,0,6104,6107,3,550,275,0,6105,6108, + 3,578,289,0,6106,6108,5,1148,0,0,6107,6105,1,0,0,0,6107,6106,1,0, + 0,0,6107,6108,1,0,0,0,6108,525,1,0,0,0,6109,6113,7,87,0,0,6110,6111, + 7,88,0,0,6111,6112,5,1124,0,0,6112,6114,7,89,0,0,6113,6110,1,0,0, + 0,6113,6114,1,0,0,0,6114,6115,1,0,0,0,6115,6116,3,546,273,0,6116, + 527,1,0,0,0,6117,6118,5,444,0,0,6118,6119,5,1148,0,0,6119,529,1, + 0,0,0,6120,6121,5,186,0,0,6121,6122,3,578,289,0,6122,531,1,0,0,0, + 6123,6131,5,156,0,0,6124,6126,5,162,0,0,6125,6127,5,669,0,0,6126, + 6125,1,0,0,0,6126,6127,1,0,0,0,6127,6128,1,0,0,0,6128,6132,3,588, + 294,0,6129,6132,5,1156,0,0,6130,6132,5,1157,0,0,6131,6124,1,0,0, + 0,6131,6129,1,0,0,0,6131,6130,1,0,0,0,6132,6142,1,0,0,0,6133,6134, + 5,153,0,0,6134,6139,3,536,268,0,6135,6136,5,1135,0,0,6136,6138,3, + 536,268,0,6137,6135,1,0,0,0,6138,6141,1,0,0,0,6139,6137,1,0,0,0, + 6139,6140,1,0,0,0,6140,6143,1,0,0,0,6141,6139,1,0,0,0,6142,6133, + 1,0,0,0,6142,6143,1,0,0,0,6143,533,1,0,0,0,6144,6152,5,143,0,0,6145, + 6147,5,162,0,0,6146,6148,5,669,0,0,6147,6146,1,0,0,0,6147,6148,1, + 0,0,0,6148,6149,1,0,0,0,6149,6153,3,588,294,0,6150,6153,5,1156,0, + 0,6151,6153,5,1157,0,0,6152,6145,1,0,0,0,6152,6150,1,0,0,0,6152, + 6151,1,0,0,0,6152,6153,1,0,0,0,6153,6163,1,0,0,0,6154,6155,5,153, + 0,0,6155,6160,3,536,268,0,6156,6157,5,1135,0,0,6157,6159,3,536,268, + 0,6158,6156,1,0,0,0,6159,6162,1,0,0,0,6160,6158,1,0,0,0,6160,6161, + 1,0,0,0,6161,6164,1,0,0,0,6162,6160,1,0,0,0,6163,6154,1,0,0,0,6163, + 6164,1,0,0,0,6164,535,1,0,0,0,6165,6166,7,90,0,0,6166,6171,5,1124, + 0,0,6167,6172,3,588,294,0,6168,6172,5,1149,0,0,6169,6172,3,560,280, + 0,6170,6172,3,580,290,0,6171,6167,1,0,0,0,6171,6168,1,0,0,0,6171, + 6169,1,0,0,0,6171,6170,1,0,0,0,6172,537,1,0,0,0,6173,6175,5,192, + 0,0,6174,6176,5,571,0,0,6175,6174,1,0,0,0,6175,6176,1,0,0,0,6176, + 6177,1,0,0,0,6177,6182,3,50,25,0,6178,6179,5,1135,0,0,6179,6181, + 3,50,25,0,6180,6178,1,0,0,0,6181,6184,1,0,0,0,6182,6180,1,0,0,0, + 6182,6183,1,0,0,0,6183,539,1,0,0,0,6184,6182,1,0,0,0,6185,6186,5, + 172,0,0,6186,6188,3,550,275,0,6187,6189,3,228,114,0,6188,6187,1, + 0,0,0,6188,6189,1,0,0,0,6189,6191,1,0,0,0,6190,6192,3,292,146,0, + 6191,6190,1,0,0,0,6191,6192,1,0,0,0,6192,541,1,0,0,0,6193,6195,5, + 71,0,0,6194,6196,7,91,0,0,6195,6194,1,0,0,0,6195,6196,1,0,0,0,6196, + 6197,1,0,0,0,6197,6229,5,48,0,0,6198,6199,3,490,245,0,6199,6200, + 5,1124,0,0,6200,6208,7,92,0,0,6201,6202,5,1135,0,0,6202,6203,3,490, + 245,0,6203,6204,5,1124,0,0,6204,6205,7,92,0,0,6205,6207,1,0,0,0, + 6206,6201,1,0,0,0,6207,6210,1,0,0,0,6208,6206,1,0,0,0,6208,6209, + 1,0,0,0,6209,6230,1,0,0,0,6210,6208,1,0,0,0,6211,6214,5,29,0,0,6212, + 6215,3,584,292,0,6213,6215,3,490,245,0,6214,6212,1,0,0,0,6214,6213, + 1,0,0,0,6215,6216,1,0,0,0,6216,6217,3,490,245,0,6217,6218,5,1124, + 0,0,6218,6226,3,544,272,0,6219,6220,5,1135,0,0,6220,6221,3,490,245, + 0,6221,6222,5,1124,0,0,6222,6223,3,544,272,0,6223,6225,1,0,0,0,6224, + 6219,1,0,0,0,6225,6228,1,0,0,0,6226,6224,1,0,0,0,6226,6227,1,0,0, + 0,6227,6230,1,0,0,0,6228,6226,1,0,0,0,6229,6198,1,0,0,0,6229,6211, + 1,0,0,0,6230,543,1,0,0,0,6231,6232,7,93,0,0,6232,545,1,0,0,0,6233, + 6239,3,198,99,0,6234,6239,3,184,92,0,6235,6239,3,190,95,0,6236,6239, + 3,196,98,0,6237,6239,3,200,100,0,6238,6233,1,0,0,0,6238,6234,1,0, + 0,0,6238,6235,1,0,0,0,6238,6236,1,0,0,0,6238,6237,1,0,0,0,6239,6244, + 1,0,0,0,6240,6241,5,65,0,0,6241,6242,5,376,0,0,6242,6244,3,578,289, + 0,6243,6238,1,0,0,0,6243,6240,1,0,0,0,6244,547,1,0,0,0,6245,6249, + 3,578,289,0,6246,6250,5,1155,0,0,6247,6248,5,1132,0,0,6248,6250, + 3,578,289,0,6249,6246,1,0,0,0,6249,6247,1,0,0,0,6249,6250,1,0,0, + 0,6250,549,1,0,0,0,6251,6252,3,548,274,0,6252,551,1,0,0,0,6253,6256, + 3,558,279,0,6254,6256,3,578,289,0,6255,6253,1,0,0,0,6255,6254,1, + 0,0,0,6256,553,1,0,0,0,6257,6262,3,578,289,0,6258,6260,3,582,291, + 0,6259,6261,3,582,291,0,6260,6259,1,0,0,0,6260,6261,1,0,0,0,6261, + 6263,1,0,0,0,6262,6258,1,0,0,0,6262,6263,1,0,0,0,6263,6272,1,0,0, + 0,6264,6266,9,0,0,0,6265,6264,1,0,0,0,6265,6266,1,0,0,0,6266,6267, + 1,0,0,0,6267,6269,3,582,291,0,6268,6270,3,582,291,0,6269,6268,1, + 0,0,0,6269,6270,1,0,0,0,6270,6272,1,0,0,0,6271,6257,1,0,0,0,6271, + 6265,1,0,0,0,6272,555,1,0,0,0,6273,6276,3,578,289,0,6274,6276,5, + 1148,0,0,6275,6273,1,0,0,0,6275,6274,1,0,0,0,6276,6281,1,0,0,0,6277, + 6278,5,1133,0,0,6278,6279,3,584,292,0,6279,6280,5,1134,0,0,6280, + 6282,1,0,0,0,6281,6277,1,0,0,0,6281,6282,1,0,0,0,6282,6285,1,0,0, + 0,6283,6285,3,682,341,0,6284,6275,1,0,0,0,6284,6283,1,0,0,0,6285, + 6287,1,0,0,0,6286,6288,7,48,0,0,6287,6286,1,0,0,0,6287,6288,1,0, + 0,0,6288,557,1,0,0,0,6289,6295,5,1158,0,0,6290,6295,5,1156,0,0,6291, + 6295,5,1148,0,0,6292,6295,5,697,0,0,6293,6295,3,710,355,0,6294,6289, + 1,0,0,0,6294,6290,1,0,0,0,6294,6291,1,0,0,0,6294,6292,1,0,0,0,6294, + 6293,1,0,0,0,6295,559,1,0,0,0,6296,6297,7,94,0,0,6297,561,1,0,0, + 0,6298,6303,5,226,0,0,6299,6303,3,700,350,0,6300,6303,5,1148,0,0, + 6301,6303,5,1145,0,0,6302,6298,1,0,0,0,6302,6299,1,0,0,0,6302,6300, + 1,0,0,0,6302,6301,1,0,0,0,6303,563,1,0,0,0,6304,6307,3,578,289,0, + 6305,6307,5,1148,0,0,6306,6304,1,0,0,0,6306,6305,1,0,0,0,6307,565, + 1,0,0,0,6308,6312,3,568,284,0,6309,6312,5,1156,0,0,6310,6312,5,1148, + 0,0,6311,6308,1,0,0,0,6311,6309,1,0,0,0,6311,6310,1,0,0,0,6312,567, + 1,0,0,0,6313,6314,7,95,0,0,6314,569,1,0,0,0,6315,6316,3,584,292, + 0,6316,6317,5,1121,0,0,6317,6318,3,584,292,0,6318,6319,5,1121,0, + 0,6319,6320,3,584,292,0,6320,6321,5,1121,0,0,6321,6322,3,584,292, + 0,6322,6323,5,1121,0,0,6323,6329,3,584,292,0,6324,6325,5,1144,0, + 0,6325,6326,3,584,292,0,6326,6327,5,1121,0,0,6327,6328,3,584,292, + 0,6328,6330,1,0,0,0,6329,6324,1,0,0,0,6330,6331,1,0,0,0,6331,6329, + 1,0,0,0,6331,6332,1,0,0,0,6332,571,1,0,0,0,6333,6340,3,574,287,0, + 6334,6335,5,1135,0,0,6335,6338,3,574,287,0,6336,6337,5,1135,0,0, + 6337,6339,3,584,292,0,6338,6336,1,0,0,0,6338,6339,1,0,0,0,6339,6341, + 1,0,0,0,6340,6334,1,0,0,0,6340,6341,1,0,0,0,6341,573,1,0,0,0,6342, + 6350,5,1148,0,0,6343,6350,5,1153,0,0,6344,6346,5,1150,0,0,6345,6344, + 1,0,0,0,6346,6347,1,0,0,0,6347,6345,1,0,0,0,6347,6348,1,0,0,0,6348, + 6350,1,0,0,0,6349,6342,1,0,0,0,6349,6343,1,0,0,0,6349,6345,1,0,0, + 0,6350,575,1,0,0,0,6351,6354,3,578,289,0,6352,6354,5,1148,0,0,6353, + 6351,1,0,0,0,6353,6352,1,0,0,0,6354,577,1,0,0,0,6355,6359,3,580, + 290,0,6356,6359,5,1145,0,0,6357,6359,5,1148,0,0,6358,6355,1,0,0, + 0,6358,6356,1,0,0,0,6358,6357,1,0,0,0,6359,579,1,0,0,0,6360,6370, + 5,1156,0,0,6361,6370,3,700,350,0,6362,6370,3,702,351,0,6363,6370, + 3,568,284,0,6364,6370,3,704,352,0,6365,6370,3,706,353,0,6366,6370, + 3,708,354,0,6367,6370,3,710,355,0,6368,6370,3,674,337,0,6369,6360, + 1,0,0,0,6369,6361,1,0,0,0,6369,6362,1,0,0,0,6369,6363,1,0,0,0,6369, + 6364,1,0,0,0,6369,6365,1,0,0,0,6369,6366,1,0,0,0,6369,6367,1,0,0, + 0,6369,6368,1,0,0,0,6370,581,1,0,0,0,6371,6375,5,1155,0,0,6372,6373, + 5,1132,0,0,6373,6375,3,578,289,0,6374,6371,1,0,0,0,6374,6372,1,0, + 0,0,6375,583,1,0,0,0,6376,6377,7,96,0,0,6377,585,1,0,0,0,6378,6381, + 5,1146,0,0,6379,6381,3,584,292,0,6380,6378,1,0,0,0,6380,6379,1,0, + 0,0,6381,587,1,0,0,0,6382,6384,5,1154,0,0,6383,6382,1,0,0,0,6383, + 6384,1,0,0,0,6384,6385,1,0,0,0,6385,6388,5,1148,0,0,6386,6388,5, + 1147,0,0,6387,6383,1,0,0,0,6387,6386,1,0,0,0,6388,6390,1,0,0,0,6389, + 6391,5,1148,0,0,6390,6389,1,0,0,0,6391,6392,1,0,0,0,6392,6390,1, + 0,0,0,6392,6393,1,0,0,0,6393,6406,1,0,0,0,6394,6396,5,1154,0,0,6395, + 6394,1,0,0,0,6395,6396,1,0,0,0,6396,6397,1,0,0,0,6397,6400,5,1148, + 0,0,6398,6400,5,1147,0,0,6399,6395,1,0,0,0,6399,6398,1,0,0,0,6400, + 6403,1,0,0,0,6401,6402,5,27,0,0,6402,6404,3,564,282,0,6403,6401, + 1,0,0,0,6403,6404,1,0,0,0,6404,6406,1,0,0,0,6405,6387,1,0,0,0,6405, + 6399,1,0,0,0,6406,589,1,0,0,0,6407,6408,7,97,0,0,6408,591,1,0,0, + 0,6409,6411,5,1154,0,0,6410,6409,1,0,0,0,6410,6411,1,0,0,0,6411, + 6412,1,0,0,0,6412,6413,5,1150,0,0,6413,593,1,0,0,0,6414,6416,5,114, + 0,0,6415,6414,1,0,0,0,6415,6416,1,0,0,0,6416,6417,1,0,0,0,6417,6418, + 7,98,0,0,6418,595,1,0,0,0,6419,6432,3,588,294,0,6420,6432,3,584, + 292,0,6421,6422,5,1121,0,0,6422,6432,3,584,292,0,6423,6432,3,592, + 296,0,6424,6432,3,590,295,0,6425,6432,5,1151,0,0,6426,6432,5,1153, + 0,0,6427,6429,5,114,0,0,6428,6427,1,0,0,0,6428,6429,1,0,0,0,6429, + 6430,1,0,0,0,6430,6432,7,98,0,0,6431,6419,1,0,0,0,6431,6420,1,0, + 0,0,6431,6421,1,0,0,0,6431,6423,1,0,0,0,6431,6424,1,0,0,0,6431,6425, + 1,0,0,0,6431,6426,1,0,0,0,6431,6428,1,0,0,0,6432,597,1,0,0,0,6433, + 6435,7,99,0,0,6434,6436,5,238,0,0,6435,6434,1,0,0,0,6435,6436,1, + 0,0,0,6436,6438,1,0,0,0,6437,6439,3,604,302,0,6438,6437,1,0,0,0, + 6438,6439,1,0,0,0,6439,6441,1,0,0,0,6440,6442,5,226,0,0,6441,6440, + 1,0,0,0,6441,6442,1,0,0,0,6442,6446,1,0,0,0,6443,6444,3,60,30,0, + 6444,6445,3,562,281,0,6445,6447,1,0,0,0,6446,6443,1,0,0,0,6446,6447, + 1,0,0,0,6447,6451,1,0,0,0,6448,6449,5,27,0,0,6449,6452,3,564,282, + 0,6450,6452,5,226,0,0,6451,6448,1,0,0,0,6451,6450,1,0,0,0,6451,6452, + 1,0,0,0,6452,6560,1,0,0,0,6453,6454,5,225,0,0,6454,6455,7,100,0, + 0,6455,6457,5,238,0,0,6456,6458,3,604,302,0,6457,6456,1,0,0,0,6457, + 6458,1,0,0,0,6458,6460,1,0,0,0,6459,6461,5,226,0,0,6460,6459,1,0, + 0,0,6460,6461,1,0,0,0,6461,6560,1,0,0,0,6462,6463,5,225,0,0,6463, + 6465,7,101,0,0,6464,6466,3,604,302,0,6465,6464,1,0,0,0,6465,6466, + 1,0,0,0,6466,6468,1,0,0,0,6467,6469,5,226,0,0,6468,6467,1,0,0,0, + 6468,6469,1,0,0,0,6469,6560,1,0,0,0,6470,6471,5,518,0,0,6471,6473, + 5,223,0,0,6472,6474,3,604,302,0,6473,6472,1,0,0,0,6473,6474,1,0, + 0,0,6474,6476,1,0,0,0,6475,6477,5,226,0,0,6476,6475,1,0,0,0,6476, + 6477,1,0,0,0,6477,6560,1,0,0,0,6478,6480,7,102,0,0,6479,6481,3,604, + 302,0,6480,6479,1,0,0,0,6480,6481,1,0,0,0,6481,6485,1,0,0,0,6482, + 6484,7,103,0,0,6483,6482,1,0,0,0,6484,6487,1,0,0,0,6485,6483,1,0, + 0,0,6485,6486,1,0,0,0,6486,6560,1,0,0,0,6487,6485,1,0,0,0,6488,6490, + 5,208,0,0,6489,6491,3,606,303,0,6490,6489,1,0,0,0,6490,6491,1,0, + 0,0,6491,6495,1,0,0,0,6492,6494,7,103,0,0,6493,6492,1,0,0,0,6494, + 6497,1,0,0,0,6495,6493,1,0,0,0,6495,6496,1,0,0,0,6496,6560,1,0,0, + 0,6497,6495,1,0,0,0,6498,6500,5,209,0,0,6499,6501,5,210,0,0,6500, + 6499,1,0,0,0,6500,6501,1,0,0,0,6501,6503,1,0,0,0,6502,6504,3,606, + 303,0,6503,6502,1,0,0,0,6503,6504,1,0,0,0,6504,6508,1,0,0,0,6505, + 6507,7,103,0,0,6506,6505,1,0,0,0,6507,6510,1,0,0,0,6508,6506,1,0, + 0,0,6508,6509,1,0,0,0,6509,6560,1,0,0,0,6510,6508,1,0,0,0,6511,6513, + 7,104,0,0,6512,6514,3,608,304,0,6513,6512,1,0,0,0,6513,6514,1,0, + 0,0,6514,6518,1,0,0,0,6515,6517,7,103,0,0,6516,6515,1,0,0,0,6517, + 6520,1,0,0,0,6518,6516,1,0,0,0,6518,6519,1,0,0,0,6519,6560,1,0,0, + 0,6520,6518,1,0,0,0,6521,6560,7,105,0,0,6522,6524,7,106,0,0,6523, + 6525,3,604,302,0,6524,6523,1,0,0,0,6524,6525,1,0,0,0,6525,6560,1, + 0,0,0,6526,6527,7,107,0,0,6527,6529,3,600,300,0,6528,6530,5,226, + 0,0,6529,6528,1,0,0,0,6529,6530,1,0,0,0,6530,6534,1,0,0,0,6531,6532, + 3,60,30,0,6532,6533,3,562,281,0,6533,6535,1,0,0,0,6534,6531,1,0, + 0,0,6534,6535,1,0,0,0,6535,6560,1,0,0,0,6536,6539,7,108,0,0,6537, + 6538,5,1012,0,0,6538,6540,3,584,292,0,6539,6537,1,0,0,0,6539,6540, + 1,0,0,0,6540,6560,1,0,0,0,6541,6543,5,231,0,0,6542,6544,5,223,0, + 0,6543,6542,1,0,0,0,6543,6544,1,0,0,0,6544,6546,1,0,0,0,6545,6547, + 5,226,0,0,6546,6545,1,0,0,0,6546,6547,1,0,0,0,6547,6551,1,0,0,0, + 6548,6549,3,60,30,0,6549,6550,3,562,281,0,6550,6552,1,0,0,0,6551, + 6548,1,0,0,0,6551,6552,1,0,0,0,6552,6555,1,0,0,0,6553,6554,5,27, + 0,0,6554,6556,3,564,282,0,6555,6553,1,0,0,0,6555,6556,1,0,0,0,6556, + 6560,1,0,0,0,6557,6558,5,231,0,0,6558,6560,5,227,0,0,6559,6433,1, + 0,0,0,6559,6453,1,0,0,0,6559,6462,1,0,0,0,6559,6470,1,0,0,0,6559, + 6478,1,0,0,0,6559,6488,1,0,0,0,6559,6498,1,0,0,0,6559,6511,1,0,0, + 0,6559,6521,1,0,0,0,6559,6522,1,0,0,0,6559,6526,1,0,0,0,6559,6536, + 1,0,0,0,6559,6541,1,0,0,0,6559,6557,1,0,0,0,6560,599,1,0,0,0,6561, + 6562,5,1133,0,0,6562,6567,5,1148,0,0,6563,6564,5,1135,0,0,6564,6566, + 5,1148,0,0,6565,6563,1,0,0,0,6566,6569,1,0,0,0,6567,6565,1,0,0,0, + 6567,6568,1,0,0,0,6568,6570,1,0,0,0,6569,6567,1,0,0,0,6570,6571, + 5,1134,0,0,6571,601,1,0,0,0,6572,6574,7,109,0,0,6573,6575,3,604, + 302,0,6574,6573,1,0,0,0,6574,6575,1,0,0,0,6575,6595,1,0,0,0,6576, + 6578,5,222,0,0,6577,6579,3,604,302,0,6578,6577,1,0,0,0,6578,6579, + 1,0,0,0,6579,6583,1,0,0,0,6580,6581,3,60,30,0,6581,6582,3,562,281, + 0,6582,6584,1,0,0,0,6583,6580,1,0,0,0,6583,6584,1,0,0,0,6584,6595, + 1,0,0,0,6585,6595,7,110,0,0,6586,6588,7,111,0,0,6587,6589,3,608, + 304,0,6588,6587,1,0,0,0,6588,6589,1,0,0,0,6589,6595,1,0,0,0,6590, + 6592,7,112,0,0,6591,6593,7,113,0,0,6592,6591,1,0,0,0,6592,6593,1, + 0,0,0,6593,6595,1,0,0,0,6594,6572,1,0,0,0,6594,6576,1,0,0,0,6594, + 6585,1,0,0,0,6594,6586,1,0,0,0,6594,6590,1,0,0,0,6595,6597,1,0,0, + 0,6596,6598,5,11,0,0,6597,6596,1,0,0,0,6597,6598,1,0,0,0,6598,603, + 1,0,0,0,6599,6600,5,1133,0,0,6600,6601,3,584,292,0,6601,6602,5,1134, + 0,0,6602,605,1,0,0,0,6603,6604,5,1133,0,0,6604,6605,3,584,292,0, + 6605,6606,5,1135,0,0,6606,6607,3,584,292,0,6607,6608,5,1134,0,0, + 6608,607,1,0,0,0,6609,6610,5,1133,0,0,6610,6613,3,584,292,0,6611, + 6612,5,1135,0,0,6612,6614,3,584,292,0,6613,6611,1,0,0,0,6613,6614, + 1,0,0,0,6614,6615,1,0,0,0,6615,6616,5,1134,0,0,6616,609,1,0,0,0, + 6617,6622,3,578,289,0,6618,6619,5,1135,0,0,6619,6621,3,578,289,0, + 6620,6618,1,0,0,0,6621,6624,1,0,0,0,6622,6620,1,0,0,0,6622,6623, + 1,0,0,0,6623,611,1,0,0,0,6624,6622,1,0,0,0,6625,6630,3,554,277,0, + 6626,6627,5,1135,0,0,6627,6629,3,554,277,0,6628,6626,1,0,0,0,6629, + 6632,1,0,0,0,6630,6628,1,0,0,0,6630,6631,1,0,0,0,6631,613,1,0,0, + 0,6632,6630,1,0,0,0,6633,6638,3,550,275,0,6634,6635,5,1135,0,0,6635, + 6637,3,550,275,0,6636,6634,1,0,0,0,6637,6640,1,0,0,0,6638,6636,1, + 0,0,0,6638,6639,1,0,0,0,6639,615,1,0,0,0,6640,6638,1,0,0,0,6641, + 6642,5,1133,0,0,6642,6647,3,556,278,0,6643,6644,5,1135,0,0,6644, + 6646,3,556,278,0,6645,6643,1,0,0,0,6646,6649,1,0,0,0,6647,6645,1, + 0,0,0,6647,6648,1,0,0,0,6648,6650,1,0,0,0,6649,6647,1,0,0,0,6650, + 6651,5,1134,0,0,6651,617,1,0,0,0,6652,6657,3,682,341,0,6653,6654, + 5,1135,0,0,6654,6656,3,682,341,0,6655,6653,1,0,0,0,6656,6659,1,0, + 0,0,6657,6655,1,0,0,0,6657,6658,1,0,0,0,6658,619,1,0,0,0,6659,6657, + 1,0,0,0,6660,6665,3,632,316,0,6661,6662,5,1135,0,0,6662,6664,3,632, + 316,0,6663,6661,1,0,0,0,6664,6667,1,0,0,0,6665,6663,1,0,0,0,6665, + 6666,1,0,0,0,6666,621,1,0,0,0,6667,6665,1,0,0,0,6668,6673,3,596, + 298,0,6669,6670,5,1135,0,0,6670,6672,3,596,298,0,6671,6669,1,0,0, + 0,6672,6675,1,0,0,0,6673,6671,1,0,0,0,6673,6674,1,0,0,0,6674,623, + 1,0,0,0,6675,6673,1,0,0,0,6676,6681,5,1148,0,0,6677,6678,5,1135, + 0,0,6678,6680,5,1148,0,0,6679,6677,1,0,0,0,6680,6683,1,0,0,0,6681, + 6679,1,0,0,0,6681,6682,1,0,0,0,6682,625,1,0,0,0,6683,6681,1,0,0, + 0,6684,6689,5,1160,0,0,6685,6686,5,1135,0,0,6686,6688,5,1160,0,0, + 6687,6685,1,0,0,0,6688,6691,1,0,0,0,6689,6687,1,0,0,0,6689,6690, + 1,0,0,0,6690,627,1,0,0,0,6691,6689,1,0,0,0,6692,6719,5,116,0,0,6693, + 6694,5,23,0,0,6694,6695,5,1133,0,0,6695,6696,3,682,341,0,6696,6697, + 5,12,0,0,6697,6698,3,602,301,0,6698,6699,5,1134,0,0,6699,6719,1, + 0,0,0,6700,6702,3,688,344,0,6701,6700,1,0,0,0,6701,6702,1,0,0,0, + 6702,6703,1,0,0,0,6703,6719,3,596,298,0,6704,6708,3,630,315,0,6705, + 6706,5,118,0,0,6706,6707,5,184,0,0,6707,6709,3,630,315,0,6708,6705, + 1,0,0,0,6708,6709,1,0,0,0,6709,6719,1,0,0,0,6710,6711,5,1133,0,0, + 6711,6712,3,682,341,0,6712,6713,5,1134,0,0,6713,6719,1,0,0,0,6714, + 6715,5,1133,0,0,6715,6716,3,548,274,0,6716,6717,5,1134,0,0,6717, + 6719,1,0,0,0,6718,6692,1,0,0,0,6718,6693,1,0,0,0,6718,6701,1,0,0, + 0,6718,6704,1,0,0,0,6718,6710,1,0,0,0,6718,6714,1,0,0,0,6719,629, + 1,0,0,0,6720,6726,7,114,0,0,6721,6723,5,1133,0,0,6722,6724,3,584, + 292,0,6723,6722,1,0,0,0,6723,6724,1,0,0,0,6724,6725,1,0,0,0,6725, + 6727,5,1134,0,0,6726,6721,1,0,0,0,6726,6727,1,0,0,0,6727,6735,1, + 0,0,0,6728,6729,5,323,0,0,6729,6731,5,1133,0,0,6730,6732,3,584,292, + 0,6731,6730,1,0,0,0,6731,6732,1,0,0,0,6732,6733,1,0,0,0,6733,6735, + 5,1134,0,0,6734,6720,1,0,0,0,6734,6728,1,0,0,0,6735,631,1,0,0,0, + 6736,6739,3,682,341,0,6737,6739,5,42,0,0,6738,6736,1,0,0,0,6738, + 6737,1,0,0,0,6739,633,1,0,0,0,6740,6741,5,77,0,0,6741,6742,5,60, + 0,0,6742,635,1,0,0,0,6743,6744,5,77,0,0,6744,6745,5,114,0,0,6745, + 6746,5,60,0,0,6746,637,1,0,0,0,6747,6748,5,123,0,0,6748,6749,5,141, + 0,0,6749,639,1,0,0,0,6750,6751,5,674,0,0,6751,6754,3,584,292,0,6752, + 6754,5,527,0,0,6753,6750,1,0,0,0,6753,6752,1,0,0,0,6754,641,1,0, + 0,0,6755,6774,3,644,322,0,6756,6774,3,652,326,0,6757,6774,3,654, + 327,0,6758,6759,3,674,337,0,6759,6761,5,1133,0,0,6760,6762,3,678, + 339,0,6761,6760,1,0,0,0,6761,6762,1,0,0,0,6762,6763,1,0,0,0,6763, + 6764,5,1134,0,0,6764,6774,1,0,0,0,6765,6766,3,548,274,0,6766,6768, + 5,1133,0,0,6767,6769,3,678,339,0,6768,6767,1,0,0,0,6768,6769,1,0, + 0,0,6769,6770,1,0,0,0,6770,6771,5,1134,0,0,6771,6774,1,0,0,0,6772, + 6774,3,676,338,0,6773,6755,1,0,0,0,6773,6756,1,0,0,0,6773,6757,1, + 0,0,0,6773,6758,1,0,0,0,6773,6765,1,0,0,0,6773,6772,1,0,0,0,6774, + 643,1,0,0,0,6775,6778,7,115,0,0,6776,6777,5,1133,0,0,6777,6779,5, + 1134,0,0,6778,6776,1,0,0,0,6778,6779,1,0,0,0,6779,6954,1,0,0,0,6780, + 6781,5,32,0,0,6781,6782,5,1133,0,0,6782,6783,3,682,341,0,6783,6784, + 5,1135,0,0,6784,6785,3,602,301,0,6785,6786,5,1134,0,0,6786,6954, + 1,0,0,0,6787,6788,5,32,0,0,6788,6789,5,1133,0,0,6789,6790,3,682, + 341,0,6790,6791,5,187,0,0,6791,6792,3,562,281,0,6792,6793,5,1134, + 0,0,6793,6954,1,0,0,0,6794,6795,5,23,0,0,6795,6796,5,1133,0,0,6796, + 6797,3,682,341,0,6797,6798,5,12,0,0,6798,6799,3,602,301,0,6799,6800, + 5,1134,0,0,6800,6954,1,0,0,0,6801,6802,5,188,0,0,6802,6803,5,1133, + 0,0,6803,6804,3,554,277,0,6804,6805,5,1134,0,0,6805,6954,1,0,0,0, + 6806,6807,5,22,0,0,6807,6809,3,682,341,0,6808,6810,3,646,323,0,6809, + 6808,1,0,0,0,6810,6811,1,0,0,0,6811,6809,1,0,0,0,6811,6812,1,0,0, + 0,6812,6815,1,0,0,0,6813,6814,5,53,0,0,6814,6816,3,680,340,0,6815, + 6813,1,0,0,0,6815,6816,1,0,0,0,6816,6817,1,0,0,0,6817,6818,5,407, + 0,0,6818,6954,1,0,0,0,6819,6821,5,22,0,0,6820,6822,3,646,323,0,6821, + 6820,1,0,0,0,6822,6823,1,0,0,0,6823,6821,1,0,0,0,6823,6824,1,0,0, + 0,6824,6827,1,0,0,0,6825,6826,5,53,0,0,6826,6828,3,680,340,0,6827, + 6825,1,0,0,0,6827,6828,1,0,0,0,6828,6829,1,0,0,0,6829,6830,5,407, + 0,0,6830,6954,1,0,0,0,6831,6832,5,222,0,0,6832,6833,5,1133,0,0,6833, + 6836,3,678,339,0,6834,6835,5,187,0,0,6835,6837,3,562,281,0,6836, + 6834,1,0,0,0,6836,6837,1,0,0,0,6837,6838,1,0,0,0,6838,6839,5,1134, + 0,0,6839,6954,1,0,0,0,6840,6841,5,324,0,0,6841,6844,5,1133,0,0,6842, + 6845,3,588,294,0,6843,6845,3,682,341,0,6844,6842,1,0,0,0,6844,6843, + 1,0,0,0,6845,6846,1,0,0,0,6846,6849,5,80,0,0,6847,6850,3,588,294, + 0,6848,6850,3,682,341,0,6849,6847,1,0,0,0,6849,6848,1,0,0,0,6850, + 6851,1,0,0,0,6851,6852,5,1134,0,0,6852,6954,1,0,0,0,6853,6854,7, + 116,0,0,6854,6857,5,1133,0,0,6855,6858,3,588,294,0,6856,6858,3,682, + 341,0,6857,6855,1,0,0,0,6857,6856,1,0,0,0,6858,6859,1,0,0,0,6859, + 6862,5,68,0,0,6860,6863,3,584,292,0,6861,6863,3,682,341,0,6862,6860, + 1,0,0,0,6862,6861,1,0,0,0,6863,6869,1,0,0,0,6864,6867,5,65,0,0,6865, + 6868,3,584,292,0,6866,6868,3,682,341,0,6867,6865,1,0,0,0,6867,6866, + 1,0,0,0,6868,6870,1,0,0,0,6869,6864,1,0,0,0,6869,6870,1,0,0,0,6870, + 6871,1,0,0,0,6871,6872,5,1134,0,0,6872,6954,1,0,0,0,6873,6874,5, + 328,0,0,6874,6875,5,1133,0,0,6875,6878,7,117,0,0,6876,6879,3,588, + 294,0,6877,6879,3,682,341,0,6878,6876,1,0,0,0,6878,6877,1,0,0,0, + 6878,6879,1,0,0,0,6879,6880,1,0,0,0,6880,6883,5,68,0,0,6881,6884, + 3,588,294,0,6882,6884,3,682,341,0,6883,6881,1,0,0,0,6883,6882,1, + 0,0,0,6884,6885,1,0,0,0,6885,6886,5,1134,0,0,6886,6954,1,0,0,0,6887, + 6888,5,328,0,0,6888,6891,5,1133,0,0,6889,6892,3,588,294,0,6890,6892, + 3,682,341,0,6891,6889,1,0,0,0,6891,6890,1,0,0,0,6892,6893,1,0,0, + 0,6893,6896,5,68,0,0,6894,6897,3,588,294,0,6895,6897,3,682,341,0, + 6896,6894,1,0,0,0,6896,6895,1,0,0,0,6897,6898,1,0,0,0,6898,6899, + 5,1134,0,0,6899,6954,1,0,0,0,6900,6901,5,1103,0,0,6901,6904,5,1133, + 0,0,6902,6905,3,588,294,0,6903,6905,3,682,341,0,6904,6902,1,0,0, + 0,6904,6903,1,0,0,0,6905,6912,1,0,0,0,6906,6907,5,12,0,0,6907,6908, + 7,118,0,0,6908,6909,5,1133,0,0,6909,6910,3,584,292,0,6910,6911,5, + 1134,0,0,6911,6913,1,0,0,0,6912,6906,1,0,0,0,6912,6913,1,0,0,0,6913, + 6915,1,0,0,0,6914,6916,3,648,324,0,6915,6914,1,0,0,0,6915,6916,1, + 0,0,0,6916,6917,1,0,0,0,6917,6918,5,1134,0,0,6918,6954,1,0,0,0,6919, + 6920,5,321,0,0,6920,6921,5,1133,0,0,6921,6922,3,70,35,0,6922,6925, + 5,68,0,0,6923,6926,3,588,294,0,6924,6926,3,682,341,0,6925,6923,1, + 0,0,0,6925,6924,1,0,0,0,6926,6927,1,0,0,0,6927,6928,5,1134,0,0,6928, + 6954,1,0,0,0,6929,6930,5,900,0,0,6930,6931,5,1133,0,0,6931,6932, + 7,119,0,0,6932,6933,5,1135,0,0,6933,6934,3,588,294,0,6934,6935,5, + 1134,0,0,6935,6954,1,0,0,0,6936,6937,5,282,0,0,6937,6938,5,1133, + 0,0,6938,6939,3,682,341,0,6939,6940,5,1135,0,0,6940,6943,3,682,341, + 0,6941,6942,5,593,0,0,6942,6944,3,602,301,0,6943,6941,1,0,0,0,6943, + 6944,1,0,0,0,6944,6946,1,0,0,0,6945,6947,3,266,133,0,6946,6945,1, + 0,0,0,6946,6947,1,0,0,0,6947,6949,1,0,0,0,6948,6950,3,268,134,0, + 6949,6948,1,0,0,0,6949,6950,1,0,0,0,6950,6951,1,0,0,0,6951,6952, + 5,1134,0,0,6952,6954,1,0,0,0,6953,6775,1,0,0,0,6953,6780,1,0,0,0, + 6953,6787,1,0,0,0,6953,6794,1,0,0,0,6953,6801,1,0,0,0,6953,6806, + 1,0,0,0,6953,6819,1,0,0,0,6953,6831,1,0,0,0,6953,6840,1,0,0,0,6953, + 6853,1,0,0,0,6953,6873,1,0,0,0,6953,6887,1,0,0,0,6953,6900,1,0,0, + 0,6953,6919,1,0,0,0,6953,6929,1,0,0,0,6953,6936,1,0,0,0,6954,645, + 1,0,0,0,6955,6956,5,189,0,0,6956,6957,3,680,340,0,6957,6958,5,174, + 0,0,6958,6959,3,680,340,0,6959,647,1,0,0,0,6960,6961,5,472,0,0,6961, + 6966,3,650,325,0,6962,6963,5,1135,0,0,6963,6965,3,650,325,0,6964, + 6962,1,0,0,0,6965,6968,1,0,0,0,6966,6964,1,0,0,0,6966,6967,1,0,0, + 0,6967,6975,1,0,0,0,6968,6966,1,0,0,0,6969,6970,5,472,0,0,6970,6971, + 3,584,292,0,6971,6972,5,1121,0,0,6972,6973,3,584,292,0,6973,6975, + 1,0,0,0,6974,6960,1,0,0,0,6974,6969,1,0,0,0,6975,649,1,0,0,0,6976, + 6978,3,584,292,0,6977,6979,7,120,0,0,6978,6977,1,0,0,0,6978,6979, + 1,0,0,0,6979,651,1,0,0,0,6980,6981,7,121,0,0,6981,6983,5,1133,0, + 0,6982,6984,7,44,0,0,6983,6982,1,0,0,0,6983,6984,1,0,0,0,6984,6985, + 1,0,0,0,6985,6986,3,680,340,0,6986,6988,5,1134,0,0,6987,6989,3,656, + 328,0,6988,6987,1,0,0,0,6988,6989,1,0,0,0,6989,7040,1,0,0,0,6990, + 6991,5,290,0,0,6991,6999,5,1133,0,0,6992,7000,5,1117,0,0,6993,6995, + 5,6,0,0,6994,6993,1,0,0,0,6994,6995,1,0,0,0,6995,6996,1,0,0,0,6996, + 7000,3,680,340,0,6997,6998,5,49,0,0,6998,7000,3,678,339,0,6999,6992, + 1,0,0,0,6999,6994,1,0,0,0,6999,6997,1,0,0,0,7000,7001,1,0,0,0,7001, + 7003,5,1134,0,0,7002,7004,3,656,328,0,7003,7002,1,0,0,0,7003,7004, + 1,0,0,0,7004,7040,1,0,0,0,7005,7006,7,122,0,0,7006,7008,5,1133,0, + 0,7007,7009,5,6,0,0,7008,7007,1,0,0,0,7008,7009,1,0,0,0,7009,7010, + 1,0,0,0,7010,7011,3,680,340,0,7011,7013,5,1134,0,0,7012,7014,3,656, + 328,0,7013,7012,1,0,0,0,7013,7014,1,0,0,0,7014,7040,1,0,0,0,7015, + 7016,5,294,0,0,7016,7018,5,1133,0,0,7017,7019,5,49,0,0,7018,7017, + 1,0,0,0,7018,7019,1,0,0,0,7019,7020,1,0,0,0,7020,7031,3,678,339, + 0,7021,7022,5,124,0,0,7022,7023,5,19,0,0,7023,7028,3,230,115,0,7024, + 7025,5,1135,0,0,7025,7027,3,230,115,0,7026,7024,1,0,0,0,7027,7030, + 1,0,0,0,7028,7026,1,0,0,0,7028,7029,1,0,0,0,7029,7032,1,0,0,0,7030, + 7028,1,0,0,0,7031,7021,1,0,0,0,7031,7032,1,0,0,0,7032,7035,1,0,0, + 0,7033,7034,5,154,0,0,7034,7036,5,1148,0,0,7035,7033,1,0,0,0,7035, + 7036,1,0,0,0,7036,7037,1,0,0,0,7037,7038,5,1134,0,0,7038,7040,1, + 0,0,0,7039,6980,1,0,0,0,7039,6990,1,0,0,0,7039,7005,1,0,0,0,7039, + 7015,1,0,0,0,7040,653,1,0,0,0,7041,7042,7,123,0,0,7042,7043,5,1133, + 0,0,7043,7046,3,682,341,0,7044,7045,5,1135,0,0,7045,7047,3,584,292, + 0,7046,7044,1,0,0,0,7046,7047,1,0,0,0,7047,7050,1,0,0,0,7048,7049, + 5,1135,0,0,7049,7051,3,584,292,0,7050,7048,1,0,0,0,7050,7051,1,0, + 0,0,7051,7052,1,0,0,0,7052,7053,5,1134,0,0,7053,7054,3,656,328,0, + 7054,7080,1,0,0,0,7055,7056,7,124,0,0,7056,7057,5,1133,0,0,7057, + 7058,3,682,341,0,7058,7059,5,1134,0,0,7059,7060,3,656,328,0,7060, + 7080,1,0,0,0,7061,7062,7,125,0,0,7062,7063,5,1133,0,0,7063,7064, + 5,1134,0,0,7064,7080,3,656,328,0,7065,7066,5,301,0,0,7066,7067,5, + 1133,0,0,7067,7068,3,682,341,0,7068,7069,5,1135,0,0,7069,7070,3, + 584,292,0,7070,7071,5,1134,0,0,7071,7072,3,656,328,0,7072,7080,1, + 0,0,0,7073,7074,5,300,0,0,7074,7075,5,1133,0,0,7075,7076,3,584,292, + 0,7076,7077,5,1134,0,0,7077,7078,3,656,328,0,7078,7080,1,0,0,0,7079, + 7041,1,0,0,0,7079,7055,1,0,0,0,7079,7061,1,0,0,0,7079,7065,1,0,0, + 0,7079,7073,1,0,0,0,7080,655,1,0,0,0,7081,7087,5,128,0,0,7082,7083, + 5,1133,0,0,7083,7084,3,658,329,0,7084,7085,5,1134,0,0,7085,7088, + 1,0,0,0,7086,7088,3,660,330,0,7087,7082,1,0,0,0,7087,7086,1,0,0, + 0,7088,657,1,0,0,0,7089,7091,3,660,330,0,7090,7089,1,0,0,0,7090, + 7091,1,0,0,0,7091,7093,1,0,0,0,7092,7094,3,672,336,0,7093,7092,1, + 0,0,0,7093,7094,1,0,0,0,7094,7096,1,0,0,0,7095,7097,3,228,114,0, + 7096,7095,1,0,0,0,7096,7097,1,0,0,0,7097,7099,1,0,0,0,7098,7100, + 3,662,331,0,7099,7098,1,0,0,0,7099,7100,1,0,0,0,7100,659,1,0,0,0, + 7101,7102,3,578,289,0,7102,661,1,0,0,0,7103,7104,3,664,332,0,7104, + 7105,3,666,333,0,7105,663,1,0,0,0,7106,7107,7,126,0,0,7107,665,1, + 0,0,0,7108,7111,3,670,335,0,7109,7111,3,668,334,0,7110,7108,1,0, + 0,0,7110,7109,1,0,0,0,7111,667,1,0,0,0,7112,7113,5,16,0,0,7113,7114, + 3,670,335,0,7114,7115,5,10,0,0,7115,7116,3,670,335,0,7116,669,1, + 0,0,0,7117,7118,5,35,0,0,7118,7125,5,600,0,0,7119,7120,5,657,0,0, + 7120,7125,7,127,0,0,7121,7122,3,682,341,0,7122,7123,7,127,0,0,7123, + 7125,1,0,0,0,7124,7117,1,0,0,0,7124,7119,1,0,0,0,7124,7121,1,0,0, + 0,7125,671,1,0,0,0,7126,7127,5,129,0,0,7127,7128,5,19,0,0,7128,7133, + 3,682,341,0,7129,7130,5,1135,0,0,7130,7132,3,682,341,0,7131,7129, + 1,0,0,0,7132,7135,1,0,0,0,7133,7131,1,0,0,0,7133,7134,1,0,0,0,7134, + 673,1,0,0,0,7135,7133,1,0,0,0,7136,7161,3,712,356,0,7137,7161,5, + 747,0,0,7138,7161,5,317,0,0,7139,7161,5,313,0,0,7140,7161,5,314, + 0,0,7141,7161,5,315,0,0,7142,7161,5,318,0,0,7143,7161,5,319,0,0, + 7144,7161,5,320,0,0,7145,7161,5,77,0,0,7146,7161,5,85,0,0,7147,7161, + 5,316,0,0,7148,7161,5,322,0,0,7149,7161,5,508,0,0,7150,7161,5,323, + 0,0,7151,7161,5,140,0,0,7152,7161,5,141,0,0,7153,7161,5,325,0,0, + 7154,7161,5,326,0,0,7155,7161,5,327,0,0,7156,7161,5,328,0,0,7157, + 7161,5,329,0,0,7158,7161,5,330,0,0,7159,7161,5,331,0,0,7160,7136, + 1,0,0,0,7160,7137,1,0,0,0,7160,7138,1,0,0,0,7160,7139,1,0,0,0,7160, + 7140,1,0,0,0,7160,7141,1,0,0,0,7160,7142,1,0,0,0,7160,7143,1,0,0, + 0,7160,7144,1,0,0,0,7160,7145,1,0,0,0,7160,7146,1,0,0,0,7160,7147, + 1,0,0,0,7160,7148,1,0,0,0,7160,7149,1,0,0,0,7160,7150,1,0,0,0,7160, + 7151,1,0,0,0,7160,7152,1,0,0,0,7160,7153,1,0,0,0,7160,7154,1,0,0, + 0,7160,7155,1,0,0,0,7160,7156,1,0,0,0,7160,7157,1,0,0,0,7160,7158, + 1,0,0,0,7160,7159,1,0,0,0,7161,675,1,0,0,0,7162,7163,7,128,0,0,7163, + 7164,5,1133,0,0,7164,7165,3,680,340,0,7165,7166,5,1134,0,0,7166, + 677,1,0,0,0,7167,7172,3,596,298,0,7168,7172,3,554,277,0,7169,7172, + 3,642,321,0,7170,7172,3,682,341,0,7171,7167,1,0,0,0,7171,7168,1, + 0,0,0,7171,7169,1,0,0,0,7171,7170,1,0,0,0,7172,7182,1,0,0,0,7173, + 7178,5,1135,0,0,7174,7179,3,596,298,0,7175,7179,3,554,277,0,7176, + 7179,3,642,321,0,7177,7179,3,682,341,0,7178,7174,1,0,0,0,7178,7175, + 1,0,0,0,7178,7176,1,0,0,0,7178,7177,1,0,0,0,7179,7181,1,0,0,0,7180, + 7173,1,0,0,0,7181,7184,1,0,0,0,7182,7180,1,0,0,0,7182,7183,1,0,0, + 0,7183,679,1,0,0,0,7184,7182,1,0,0,0,7185,7190,3,596,298,0,7186, + 7190,3,554,277,0,7187,7190,3,642,321,0,7188,7190,3,682,341,0,7189, + 7185,1,0,0,0,7189,7186,1,0,0,0,7189,7187,1,0,0,0,7189,7188,1,0,0, + 0,7190,681,1,0,0,0,7191,7192,6,341,-1,0,7192,7193,7,129,0,0,7193, + 7203,3,682,341,4,7194,7195,3,684,342,0,7195,7197,5,88,0,0,7196,7198, + 5,114,0,0,7197,7196,1,0,0,0,7197,7198,1,0,0,0,7198,7199,1,0,0,0, + 7199,7200,7,130,0,0,7200,7203,1,0,0,0,7201,7203,3,684,342,0,7202, + 7191,1,0,0,0,7202,7194,1,0,0,0,7202,7201,1,0,0,0,7203,7210,1,0,0, + 0,7204,7205,10,3,0,0,7205,7206,3,692,346,0,7206,7207,3,682,341,4, + 7207,7209,1,0,0,0,7208,7204,1,0,0,0,7209,7212,1,0,0,0,7210,7208, + 1,0,0,0,7210,7211,1,0,0,0,7211,683,1,0,0,0,7212,7210,1,0,0,0,7213, + 7214,6,342,-1,0,7214,7215,3,686,343,0,7215,7280,1,0,0,0,7216,7217, + 10,8,0,0,7217,7218,3,690,345,0,7218,7219,3,684,342,9,7219,7279,1, + 0,0,0,7220,7222,10,6,0,0,7221,7223,5,114,0,0,7222,7221,1,0,0,0,7222, + 7223,1,0,0,0,7223,7224,1,0,0,0,7224,7225,5,16,0,0,7225,7226,3,684, + 342,0,7226,7227,5,10,0,0,7227,7228,3,684,342,7,7228,7279,1,0,0,0, + 7229,7230,10,5,0,0,7230,7231,5,620,0,0,7231,7232,5,98,0,0,7232,7279, + 3,684,342,6,7233,7235,10,3,0,0,7234,7236,5,114,0,0,7235,7234,1,0, + 0,0,7235,7236,1,0,0,0,7236,7237,1,0,0,0,7237,7238,7,131,0,0,7238, + 7279,3,684,342,4,7239,7241,10,10,0,0,7240,7242,5,114,0,0,7241,7240, + 1,0,0,0,7241,7242,1,0,0,0,7242,7243,1,0,0,0,7243,7244,5,80,0,0,7244, + 7247,5,1133,0,0,7245,7248,3,198,99,0,7246,7248,3,618,309,0,7247, + 7245,1,0,0,0,7247,7246,1,0,0,0,7248,7249,1,0,0,0,7249,7250,5,1134, + 0,0,7250,7279,1,0,0,0,7251,7252,10,9,0,0,7252,7253,5,88,0,0,7253, + 7279,3,594,297,0,7254,7255,10,7,0,0,7255,7256,3,690,345,0,7256,7257, + 7,132,0,0,7257,7258,5,1133,0,0,7258,7259,3,198,99,0,7259,7260,5, + 1134,0,0,7260,7279,1,0,0,0,7261,7263,10,4,0,0,7262,7264,5,114,0, + 0,7263,7262,1,0,0,0,7263,7264,1,0,0,0,7264,7265,1,0,0,0,7265,7266, + 5,98,0,0,7266,7269,3,684,342,0,7267,7268,5,413,0,0,7268,7270,5,1148, + 0,0,7269,7267,1,0,0,0,7269,7270,1,0,0,0,7270,7279,1,0,0,0,7271,7272, + 10,2,0,0,7272,7273,5,505,0,0,7273,7274,5,533,0,0,7274,7275,5,1133, + 0,0,7275,7276,3,684,342,0,7276,7277,5,1134,0,0,7277,7279,1,0,0,0, + 7278,7216,1,0,0,0,7278,7220,1,0,0,0,7278,7229,1,0,0,0,7278,7233, + 1,0,0,0,7278,7239,1,0,0,0,7278,7251,1,0,0,0,7278,7254,1,0,0,0,7278, + 7261,1,0,0,0,7278,7271,1,0,0,0,7279,7282,1,0,0,0,7280,7278,1,0,0, + 0,7280,7281,1,0,0,0,7281,685,1,0,0,0,7282,7280,1,0,0,0,7283,7284, + 6,343,-1,0,7284,7332,3,596,298,0,7285,7332,3,554,277,0,7286,7332, + 3,642,321,0,7287,7332,3,560,280,0,7288,7289,3,688,344,0,7289,7290, + 3,686,343,11,7290,7332,1,0,0,0,7291,7292,5,226,0,0,7292,7332,3,686, + 343,10,7293,7294,5,1160,0,0,7294,7295,5,1108,0,0,7295,7332,3,686, + 343,9,7296,7297,5,1133,0,0,7297,7302,3,682,341,0,7298,7299,5,1135, + 0,0,7299,7301,3,682,341,0,7300,7298,1,0,0,0,7301,7304,1,0,0,0,7302, + 7300,1,0,0,0,7302,7303,1,0,0,0,7303,7305,1,0,0,0,7304,7302,1,0,0, + 0,7305,7306,5,1134,0,0,7306,7332,1,0,0,0,7307,7308,5,600,0,0,7308, + 7309,5,1133,0,0,7309,7312,3,682,341,0,7310,7311,5,1135,0,0,7311, + 7313,3,682,341,0,7312,7310,1,0,0,0,7313,7314,1,0,0,0,7314,7312,1, + 0,0,0,7314,7315,1,0,0,0,7315,7316,1,0,0,0,7316,7317,5,1134,0,0,7317, + 7332,1,0,0,0,7318,7319,5,60,0,0,7319,7320,5,1133,0,0,7320,7321,3, + 198,99,0,7321,7322,5,1134,0,0,7322,7332,1,0,0,0,7323,7324,5,1133, + 0,0,7324,7325,3,198,99,0,7325,7326,5,1134,0,0,7326,7332,1,0,0,0, + 7327,7328,5,86,0,0,7328,7329,3,682,341,0,7329,7330,3,70,35,0,7330, + 7332,1,0,0,0,7331,7283,1,0,0,0,7331,7285,1,0,0,0,7331,7286,1,0,0, + 0,7331,7287,1,0,0,0,7331,7288,1,0,0,0,7331,7291,1,0,0,0,7331,7293, + 1,0,0,0,7331,7296,1,0,0,0,7331,7307,1,0,0,0,7331,7318,1,0,0,0,7331, + 7323,1,0,0,0,7331,7327,1,0,0,0,7332,7350,1,0,0,0,7333,7334,10,3, + 0,0,7334,7335,3,694,347,0,7335,7336,3,686,343,4,7336,7349,1,0,0, + 0,7337,7338,10,2,0,0,7338,7339,3,696,348,0,7339,7340,3,686,343,3, + 7340,7349,1,0,0,0,7341,7342,10,1,0,0,7342,7343,3,698,349,0,7343, + 7344,3,686,343,2,7344,7349,1,0,0,0,7345,7346,10,13,0,0,7346,7347, + 5,27,0,0,7347,7349,3,564,282,0,7348,7333,1,0,0,0,7348,7337,1,0,0, + 0,7348,7341,1,0,0,0,7348,7345,1,0,0,0,7349,7352,1,0,0,0,7350,7348, + 1,0,0,0,7350,7351,1,0,0,0,7351,687,1,0,0,0,7352,7350,1,0,0,0,7353, + 7354,7,133,0,0,7354,689,1,0,0,0,7355,7370,5,1124,0,0,7356,7370,5, + 1125,0,0,7357,7370,5,1126,0,0,7358,7359,5,1126,0,0,7359,7370,5,1124, + 0,0,7360,7361,5,1125,0,0,7361,7370,5,1124,0,0,7362,7363,5,1126,0, + 0,7363,7370,5,1125,0,0,7364,7365,5,1127,0,0,7365,7370,5,1124,0,0, + 7366,7367,5,1126,0,0,7367,7368,5,1124,0,0,7368,7370,5,1125,0,0,7369, + 7355,1,0,0,0,7369,7356,1,0,0,0,7369,7357,1,0,0,0,7369,7358,1,0,0, + 0,7369,7360,1,0,0,0,7369,7362,1,0,0,0,7369,7364,1,0,0,0,7369,7366, + 1,0,0,0,7370,691,1,0,0,0,7371,7379,5,10,0,0,7372,7373,5,1130,0,0, + 7373,7379,5,1130,0,0,7374,7379,5,194,0,0,7375,7379,5,123,0,0,7376, + 7377,5,1129,0,0,7377,7379,5,1129,0,0,7378,7371,1,0,0,0,7378,7372, + 1,0,0,0,7378,7374,1,0,0,0,7378,7375,1,0,0,0,7378,7376,1,0,0,0,7379, + 693,1,0,0,0,7380,7381,5,1126,0,0,7381,7388,5,1126,0,0,7382,7383, + 5,1125,0,0,7383,7388,5,1125,0,0,7384,7388,5,1130,0,0,7385,7388,5, + 1131,0,0,7386,7388,5,1129,0,0,7387,7380,1,0,0,0,7387,7382,1,0,0, + 0,7387,7384,1,0,0,0,7387,7385,1,0,0,0,7387,7386,1,0,0,0,7388,695, + 1,0,0,0,7389,7390,7,134,0,0,7390,697,1,0,0,0,7391,7392,5,1121,0, + 0,7392,7397,5,1125,0,0,7393,7394,5,1121,0,0,7394,7395,5,1125,0,0, + 7395,7397,5,1125,0,0,7396,7391,1,0,0,0,7396,7393,1,0,0,0,7397,699, + 1,0,0,0,7398,7399,7,135,0,0,7399,701,1,0,0,0,7400,7401,7,136,0,0, + 7401,703,1,0,0,0,7402,7403,7,137,0,0,7403,705,1,0,0,0,7404,7405, + 7,138,0,0,7405,707,1,0,0,0,7406,7407,7,139,0,0,7407,709,1,0,0,0, + 7408,7409,7,140,0,0,7409,711,1,0,0,0,7410,7411,7,141,0,0,7411,713, + 1,0,0,0,1082,715,719,726,729,732,734,740,743,746,755,797,812,823, + 840,845,857,884,893,898,904,909,913,922,925,928,932,939,942,947, + 955,960,965,968,970,982,985,989,992,996,999,1003,1006,1009,1013, + 1016,1020,1026,1032,1038,1045,1052,1055,1059,1064,1070,1079,1084, + 1089,1096,1113,1120,1124,1134,1138,1142,1146,1150,1155,1158,1161, + 1164,1167,1173,1177,1183,1188,1191,1194,1196,1207,1211,1214,1228, + 1231,1235,1238,1242,1245,1249,1252,1256,1259,1262,1266,1269,1273, + 1279,1292,1298,1309,1314,1322,1330,1335,1338,1343,1351,1356,1362, + 1367,1371,1373,1376,1380,1384,1387,1391,1395,1399,1405,1408,1415, + 1423,1425,1432,1438,1446,1449,1456,1459,1461,1467,1473,1490,1497, + 1504,1516,1521,1524,1527,1540,1553,1558,1574,1582,1592,1595,1598, + 1604,1608,1611,1622,1625,1630,1643,1650,1657,1659,1666,1670,1672, + 1677,1680,1686,1691,1693,1697,1700,1703,1709,1714,1716,1721,1728, + 1730,1737,1742,1746,1749,1757,1765,1767,1777,1781,1784,1790,1795, + 1798,1804,1807,1811,1814,1818,1823,1828,1833,1837,1841,1845,1849, + 1853,1857,1862,1867,1872,1878,1883,1888,1893,1898,1903,1909,1914, + 1919,1924,1929,1934,1939,1944,1951,1956,1961,1966,1970,1975,1983, + 1988,1994,2006,2013,2015,2023,2028,2031,2039,2045,2049,2062,2074, + 2076,2079,2087,2093,2099,2112,2119,2128,2133,2144,2153,2158,2170, + 2177,2186,2191,2203,2210,2219,2224,2231,2240,2245,2247,2252,2260, + 2269,2273,2276,2280,2285,2291,2297,2302,2307,2312,2317,2320,2325, + 2330,2340,2344,2351,2356,2359,2364,2367,2371,2375,2383,2402,2405, + 2408,2412,2422,2435,2442,2445,2450,2457,2460,2463,2474,2477,2481, + 2489,2492,2497,2505,2511,2515,2519,2524,2529,2536,2540,2551,2559, + 2562,2568,2574,2576,2581,2584,2590,2596,2598,2602,2605,2608,2614, + 2620,2623,2629,2635,2637,2642,2650,2652,2661,2664,2667,2672,2674, + 2683,2686,2689,2694,2696,2705,2710,2718,2722,2730,2740,2745,2752, + 2756,2760,2779,2789,2795,2812,2816,2826,2831,2834,2843,2854,2862, + 2868,2878,2890,2897,2904,2919,2932,2938,2944,2950,2956,2962,2968, + 2973,2980,2987,2994,2999,3002,3004,3018,3025,3032,3038,3042,3046, + 3053,3056,3061,3068,3075,3079,3084,3091,3104,3107,3112,3117,3121, + 3127,3136,3145,3154,3157,3161,3170,3174,3177,3180,3186,3189,3195, + 3199,3202,3210,3213,3224,3227,3232,3235,3240,3250,3255,3261,3263, + 3269,3271,3277,3285,3290,3298,3301,3306,3309,3314,3322,3330,3336, + 3344,3349,3357,3360,3364,3367,3375,3381,3390,3393,3397,3401,3407, + 3411,3415,3417,3420,3423,3426,3432,3436,3439,3442,3445,3448,3455, + 3457,3461,3466,3472,3477,3484,3490,3495,3498,3504,3508,3516,3520, + 3523,3526,3531,3534,3541,3545,3548,3552,3556,3559,3562,3567,3573, + 3577,3587,3593,3597,3603,3607,3613,3616,3628,3632,3636,3644,3648, + 3656,3659,3663,3666,3674,3679,3682,3685,3689,3692,3701,3706,3715, + 3720,3727,3734,3742,3748,3756,3759,3762,3769,3772,3779,3782,3790, + 3796,3807,3810,3814,3820,3829,3834,3838,3844,3850,3852,3856,3865, + 3875,3885,3891,3896,3900,3903,3906,3909,3912,3918,3924,3927,3930, + 3933,3936,3939,3941,3947,3953,3956,3959,3962,3965,3969,3975,3979, + 3987,3991,3994,3996,4009,4012,4019,4029,4032,4037,4039,4043,4051, + 4057,4066,4079,4083,4089,4098,4101,4105,4108,4112,4116,4119,4121, + 4129,4141,4147,4149,4155,4157,4159,4165,4173,4181,4185,4189,4198, + 4203,4223,4228,4234,4241,4246,4255,4258,4262,4266,4270,4273,4276, + 4279,4283,4287,4290,4293,4296,4303,4307,4322,4326,4338,4346,4356, + 4360,4363,4369,4372,4375,4384,4393,4403,4407,4417,4427,4435,4438, + 4447,4450,4454,4459,4463,4472,4475,4506,4509,4512,4568,4573,4601, + 4615,4622,4626,4632,4640,4642,4653,4663,4670,4676,4684,4689,4697, + 4705,4713,4721,4727,4732,4737,4742,4748,4750,4761,4766,4773,4775, + 4789,4795,4800,4805,4811,4818,4826,4834,4839,4845,4848,4856,4863, + 4872,4875,4892,4900,4908,4912,4919,4925,4933,4942,4948,4955,4962, + 4967,4970,4972,4978,4980,4984,4986,4993,4998,5002,5008,5017,5023, + 5030,5036,5042,5047,5050,5052,5058,5060,5064,5066,5073,5075,5080, + 5087,5096,5101,5110,5117,5122,5125,5127,5133,5135,5138,5146,5151, + 5156,5160,5166,5171,5175,5181,5183,5194,5197,5204,5207,5219,5225, + 5234,5243,5248,5257,5263,5274,5280,5285,5289,5295,5300,5304,5307, + 5319,5326,5331,5361,5365,5370,5377,5380,5386,5396,5406,5416,5422, + 5431,5437,5444,5446,5456,5460,5464,5474,5479,5551,5569,5577,5589, + 5596,5598,5608,5611,5619,5626,5630,5637,5642,5645,5648,5657,5661, + 5665,5688,5695,5699,5706,5713,5716,5732,5735,5745,5749,5755,5758, + 5763,5767,5774,5777,5783,5807,5810,5822,5825,5835,5843,5847,5854, + 5857,5866,5872,5878,5888,5890,5896,5899,5902,5914,5917,5923,5926, + 5934,5942,5948,5952,5966,5978,5985,5988,5995,6002,6007,6020,6031, + 6037,6042,6055,6057,6062,6066,6069,6071,6078,6085,6088,6091,6097, + 6101,6107,6113,6126,6131,6139,6142,6147,6152,6160,6163,6171,6175, + 6182,6188,6191,6195,6208,6214,6226,6229,6238,6243,6249,6255,6260, + 6262,6265,6269,6271,6275,6281,6284,6287,6294,6302,6306,6311,6331, + 6338,6340,6347,6349,6353,6358,6369,6374,6380,6383,6387,6392,6395, + 6399,6403,6405,6410,6415,6428,6431,6435,6438,6441,6446,6451,6457, + 6460,6465,6468,6473,6476,6480,6485,6490,6495,6500,6503,6508,6513, + 6518,6524,6529,6534,6539,6543,6546,6551,6555,6559,6567,6574,6578, + 6583,6588,6592,6594,6597,6613,6622,6630,6638,6647,6657,6665,6673, + 6681,6689,6701,6708,6718,6723,6726,6731,6734,6738,6753,6761,6768, + 6773,6778,6811,6815,6823,6827,6836,6844,6849,6857,6862,6867,6869, + 6878,6883,6891,6896,6904,6912,6915,6925,6943,6946,6949,6953,6966, + 6974,6978,6983,6988,6994,6999,7003,7008,7013,7018,7028,7031,7035, + 7039,7046,7050,7079,7087,7090,7093,7096,7099,7110,7124,7133,7160, + 7171,7178,7182,7189,7197,7202,7210,7222,7235,7241,7247,7263,7269, + 7278,7280,7302,7314,7331,7348,7350,7369,7378,7387,7396 + ] + +class MySqlParser ( Parser ): + + grammarFileName = "MySqlParser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "", "", "", + "", "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", + "'ANALYZE'", "'AND'", "'ARRAY'", "'AS'", "'ASC'", "'ATTRIBUTE'", + "'BEFORE'", "'BETWEEN'", "'BOTH'", "'BUCKETS'", "'BY'", + "'CALL'", "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'", + "'CHARACTER'", "'CHECK'", "'COLLATE'", "'COLUMN'", + "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", "'CONVERT'", + "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_ROLE'", + "'CURRENT_USER'", "'CURSOR'", "'DATABASE'", "'DATABASES'", + "'DECLARE'", "'DEFAULT'", "'DELAYED'", "'DELETE'", + "'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", + "'DISTINCT'", "'DISTINCTROW'", "'DROP'", "'EACH'", + "'ELSE'", "'ELSEIF'", "'EMPTY'", "'ENCLOSED'", "'ENFORCED'", + "'ESCAPED'", "'EXCEPT'", "'EXISTS'", "'EXIT'", "'EXPLAIN'", + "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", "'FOREIGN'", + "'FROM'", "'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", + "'GROUP'", "'HAVING'", "'HIGH_PRIORITY'", "'HISTOGRAM'", + "'IF'", "'IGNORE'", "'IGNORED'", "'IN'", "'INDEX'", + "'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", "'INTERVAL'", + "'INTO'", "'IS'", "'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", + "'KILL'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", + "'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", + "'LOCK'", "'LOCKED'", "'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", + "'MASTER_SSL_VERIFY_SERVER_CERT'", "'MATCH'", "'MAXVALUE'", + "'MINVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", + "'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", + "'OPTIONAL'", "'OPTIONALLY'", "'OR'", "'ORDER'", "'OUT'", + "'OUTER'", "'OUTFILE'", "'OVER'", "'PARTITION'", "'PRIMARY'", + "'PROCEDURE'", "'PURGE'", "'RANGE'", "'READ'", "'READS'", + "'REFERENCES'", "'REGEXP'", "'RELEASE'", "'RENAME'", + "'REPEAT'", "'REPLACE'", "'REQUIRE'", "'RESIGNAL'", + "'RESTRICT'", "'RETAIN'", "'RETURN'", "'REVOKE'", "'RIGHT'", + "'RLIKE'", "'SCHEMA'", "'SCHEMAS'", "'SELECT'", "'SET'", + "'SEPARATOR'", "'SHOW'", "'SIGNAL'", "'SKIP'", "'SKIP_QUERY_REWRITE'", + "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", + "'SQLWARNING'", "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", + "'SQL_SMALL_RESULT'", "'SSL'", "'STACKED'", "'STARTING'", + "'STATEMENT'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'", + "'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", + "'UNDO'", "'UNION'", "'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", + "'UPDATE'", "'USAGE'", "'USE'", "'USING'", "'VALUES'", + "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", + "'XOR'", "'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", + "'MIDDLEINT'", "'INT'", "'INT1'", "'INT2'", "'INT3'", + "'INT4'", "'INT8'", "'INTEGER'", "'BIGINT'", "'REAL'", + "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'", "'FLOAT8'", + "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", + "'TIMESTAMP'", "'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", + "'NVARCHAR'", "'NATIONAL'", "'BINARY'", "'VARBINARY'", + "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'", "'LONGBLOB'", + "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", + "'ENUM'", "'VARYING'", "'SERIAL'", "'YEAR_MONTH'", + "'DAY_HOUR'", "'DAY_MINUTE'", "'DAY_SECOND'", "'HOUR_MINUTE'", + "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'", + "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", + "'JSON_ARRAY'", "'JSON_ARRAYAGG'", "'JSON_ARRAY_APPEND'", + "'JSON_ARRAY_INSERT'", "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'", + "'JSON_DEPTH'", "'JSON_EXTRACT'", "'JSON_INSERT'", + "'JSON_KEYS'", "'JSON_LENGTH'", "'JSON_MERGE'", "'JSON_MERGE_PATCH'", + "'JSON_MERGE_PRESERVE'", "'JSON_OBJECT'", "'JSON_OBJECTAGG'", + "'JSON_OVERLAPS'", "'JSON_PRETTY'", "'JSON_QUOTE'", + "'JSON_REMOVE'", "'JSON_REPLACE'", "'JSON_SCHEMA_VALID'", + "'JSON_SCHEMA_VALIDATION_REPORT'", "'JSON_SEARCH'", + "'JSON_SET'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", + "'JSON_TABLE'", "'JSON_TYPE'", "'JSON_UNQUOTE'", "'JSON_VALID'", + "'JSON_VALUE'", "'NESTED'", "'ORDINALITY'", "'PATH'", + "'AVG'", "'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'", + "'CUME_DIST'", "'DENSE_RANK'", "'FIRST_VALUE'", "'GROUP_CONCAT'", + "'LAG'", "'LAST_VALUE'", "'LEAD'", "'MAX'", "'MIN'", + "'NTILE'", "'NTH_VALUE'", "'PERCENT_RANK'", "'RANK'", + "'ROW_NUMBER'", "'STD'", "'STDDEV'", "'STDDEV_POP'", + "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", "'VAR_SAMP'", + "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", + "'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'", + "'DATE_SUB'", "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", + "'POSITION'", "'SUBSTR'", "'SUBSTRING'", "'SYSDATE'", + "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", "'UTC_TIMESTAMP'", + "'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", + "'ALGORITHM'", "'ANY'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", + "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", "'AVG_ROW_LENGTH'", + "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", + "'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", + "'CHANGED'", "'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", + "'CIPHER'", "'CLASS_ORIGIN'", "'CLIENT'", "'CLOSE'", + "'CLUSTERING'", "'COALESCE'", "'CODE'", "'COLUMNS'", + "'COLUMN_FORMAT'", "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", + "'COMPACT'", "'COMPLETION'", "'COMPRESSED'", "", + "'CONCURRENT'", "'CONNECT'", "'CONNECTION'", "'CONSISTENT'", + "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", + "'CONTAINS'", "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", + "'CPU'", "'CYCLE'", "'CURSOR_NAME'", "'DATA'", "'DATAFILE'", + "'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'", "'DELAY_KEY_WRITE'", + "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", "'DISCARD'", + "'DISK'", "'DO'", "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", + "'ENABLE'", "'ENCRYPTED'", "'ENCRYPTION'", "'ENCRYPTION_KEY_ID'", + "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", + "'ERRORS'", "'ESCAPE'", "'EVEN'", "'EVENT'", "'EVENTS'", + "'EVERY'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXPIRE'", + "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FAILED_LOGIN_ATTEMPTS'", + "'FAST'", "'FAULTS'", "'FIELDS'", "'FILE_BLOCK_SIZE'", + "'FILTER'", "'FIRST'", "'FIXED'", "'FLUSH'", "'FOLLOWING'", + "'FOLLOWS'", "'FOUND'", "'FULL'", "'FUNCTION'", "'GENERAL'", + "'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", "'HANDLER'", + "'HASH'", "'HELP'", "'HISTORY'", "'HOST'", "'HOSTS'", + "'IDENTIFIED'", "'IGNORE_SERVER_IDS'", "'IMPORT'", + "'INCREMENT'", "'INDEXES'", "'INITIAL_SIZE'", "'INPLACE'", + "'INSERT_METHOD'", "'INSTALL'", "'INSTANCE'", "'INSTANT'", + "'INVISIBLE'", "'INVOKER'", "'IO'", "'IO_THREAD'", + "'IPC'", "'ISOLATION'", "'ISSUER'", "'JSON'", "'KEY_BLOCK_SIZE'", + "'LANGUAGE'", "'LAST'", "'LEAVES'", "'LESS'", "'LEVEL'", + "'LIST'", "'LOCAL'", "'LOGFILE'", "'LOGS'", "'MASTER'", + "'MASTER_AUTO_POSITION'", "'MASTER_CONNECT_RETRY'", + "'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", "'MASTER_HOST'", + "'MASTER_LOG_FILE'", "'MASTER_LOG_POS'", "'MASTER_PASSWORD'", + "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", "'MASTER_SSL'", + "'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", + "'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", + "'MASTER_SSL_KEY'", "'MASTER_TLS_VERSION'", "'MASTER_USER'", + "'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", + "'MAX_ROWS'", "'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'", + "'MAX_USER_CONNECTIONS'", "'MEDIUM'", "'MEMBER'", "'MERGE'", + "'MESSAGE_TEXT'", "'MID'", "'MIGRATE'", "'MIN_ROWS'", + "'MODE'", "'MODIFY'", "'MUTEX'", "'MYSQL'", "'MYSQL_ERRNO'", + "'NAME'", "'NAMES'", "'NCHAR'", "'NEVER'", "'NEXT'", + "'NO'", "'NOCACHE'", "'NOCOPY'", "'NOCYCLE'", "'NOMAXVALUE'", + "'NOMINVALUE'", "'NOWAIT'", "'NODEGROUP'", "'NONE'", + "'ODBC'", "'OFFLINE'", "'OFFSET'", "'OF'", "'OJ'", + "'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", + "'OPTIMIZER_COSTS'", "'OPTIONS'", "'OWNER'", "'PACK_KEYS'", + "'PAGE'", "'PAGE_COMPRESSED'", "'PAGE_COMPRESSION_LEVEL'", + "'PARSER'", "'PARTIAL'", "'PARTITIONING'", "'PARTITIONS'", + "'PASSWORD'", "'PASSWORD_LOCK_TIME'", "'PHASE'", "'PLUGIN'", + "'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", + "'PRECEDING'", "'PREPARE'", "'PRESERVE'", "'PREV'", + "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", "'PROXY'", + "'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'RECURSIVE'", + "'REDO_BUFFER_SIZE'", "'REDUNDANT'", "'RELAY'", "'RELAY_LOG_FILE'", + "'RELAY_LOG_POS'", "'RELAYLOG'", "'REMOVE'", "'REORGANIZE'", + "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", + "'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", + "'REPLICATE_REWRITE_DB'", "'REPLICATE_WILD_DO_TABLE'", + "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", "'RESET'", + "'RESTART'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", + "'RETURNS'", "'REUSE'", "'ROLE'", "'ROLLBACK'", "'ROLLUP'", + "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'", "'RTREE'", + "'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SEQUENCE'", + "'SERVER'", "'SESSION'", "'SHARE'", "'SHARED'", "'SIGNED'", + "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'", "'SOCKET'", + "'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", + "'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", + "'SQL_CACHE'", "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", + "'STARTS'", "'STATS_AUTO_RECALC'", "'STATS_PERSISTENT'", + "'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", "'STORAGE'", + "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", + "'SUBPARTITION'", "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", + "'SWITCHES'", "'TABLE_NAME'", "'TABLESPACE'", "'TABLE_TYPE'", + "'TEMPORARY'", "'TEMPTABLE'", "'THAN'", "'TRADITIONAL'", + "'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'", + "'UNBOUNDED'", "'UNDEFINED'", "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", + "'UNINSTALL'", "'UNKNOWN'", "'UNTIL'", "'UPGRADE'", + "'USER'", "'USE_FRM'", "'USER_RESOURCES'", "'VALIDATION'", + "'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", + "'WAIT'", "'WARNINGS'", "'WINDOW'", "'WITHOUT'", "'WORK'", + "'WRAPPER'", "'X509'", "'XA'", "'XML'", "'YES'", "'EUR'", + "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", "'QUARTER'", + "'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", + "'SECOND'", "'MICROSECOND'", "'ADMIN'", "'APPLICATION_PASSWORD_ADMIN'", + "'AUDIT_ABORT_EXEMPT'", "'AUDIT_ADMIN'", "'AUTHENTICATION_POLICY_ADMIN'", + "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", + "'CLONE_ADMIN'", "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", + "'EXECUTE'", "'FILE'", "'FIREWALL_ADMIN'", "'FIREWALL_EXEMPT'", + "'FIREWALL_USER'", "'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", + "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", "'GROUP_REPLICATION_ADMIN'", + "'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", + "'INVOKE'", "'LAMBDA'", "'NDB_STORED_USER'", "'PASSWORDLESS_USER_ADMIN'", + "'PERSIST_RO_VARIABLES_ADMIN'", "'PRIVILEGES'", "'PROCESS'", + "'RELOAD'", "'REPLICATION_APPLIER'", "'REPLICATION_SLAVE_ADMIN'", + "'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", + "'ROLE_ADMIN'", "'ROUTINE'", "'S3'", "'SERVICE_CONNECTION_ADMIN'", + "", "'SET_USER_ID'", "'SHOW_ROUTINE'", "'SHUTDOWN'", + "'SUPER'", "'SYSTEM_VARIABLES_ADMIN'", "'TABLES'", + "'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", + "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", "'BIG5'", + "'CP1250'", "'CP1251'", "'CP1256'", "'CP1257'", "'CP850'", + "'CP852'", "'CP866'", "'CP932'", "'DEC8'", "'EUCJPMS'", + "'EUCKR'", "'GB18030'", "'GB2312'", "'GBK'", "'GEOSTD8'", + "'GREEK'", "'HEBREW'", "'HP8'", "'KEYBCS2'", "'KOI8R'", + "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", "'LATIN7'", + "'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", + "'UCS2'", "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", + "'UTF8'", "'UTF8MB3'", "'UTF8MB4'", "'ARCHIVE'", "'BLACKHOLE'", + "'CSV'", "'FEDERATED'", "'INNODB'", "'MEMORY'", "'MRG_MYISAM'", + "'MYISAM'", "'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", + "'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", "'UNCOMMITTED'", + "'SERIALIZABLE'", "'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", + "'GEOMETRY'", "'LINESTRING'", "'MULTILINESTRING'", + "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", + "'ABS'", "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", + "'AES_ENCRYPT'", "'AREA'", "'ASBINARY'", "'ASIN'", + "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", + "'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", + "'ASYMMETRIC_VERIFY'", "'ATAN'", "'ATAN2'", "'BENCHMARK'", + "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", "'BUFFER'", + "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", + "'CHARACTER_LENGTH'", "'CHARSET'", "'CHAR_LENGTH'", + "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'", "'CONCAT'", + "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'", + "'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", + "'CREATE_ASYMMETRIC_PUB_KEY'", "'CREATE_DH_PARAMETERS'", + "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'", "'DATE_FORMAT'", + "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'", + "'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", + "'DIMENSION'", "'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", + "'ENDPOINT'", "'ENGINE_ATTRIBUTE'", "'ENVELOPE'", "'EQUALS'", + "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'", + "'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", + "'FOUND_ROWS'", "'FROM_BASE64'", "'FROM_DAYS'", "'FROM_UNIXTIME'", + "'GEOMCOLLFROMTEXT'", "'GEOMCOLLFROMWKB'", "'GEOMETRYCOLLECTIONFROMTEXT'", + "'GEOMETRYCOLLECTIONFROMWKB'", "'GEOMETRYFROMTEXT'", + "'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", + "'GEOMFROMTEXT'", "'GEOMFROMWKB'", "'GET_FORMAT'", + "'GET_LOCK'", "'GLENGTH'", "'GREATEST'", "'GTID_SUBSET'", + "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", "'INET6_ATON'", + "'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", + "'INTERIORRINGN'", "'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", + "'ISNULL'", "'ISSIMPLE'", "'IS_FREE_LOCK'", "'IS_IPV4'", + "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", "'IS_IPV6'", + "'IS_USED_LOCK'", "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", + "'LENGTH'", "'LINEFROMTEXT'", "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", + "'LINESTRINGFROMWKB'", "'LN'", "'LOAD_FILE'", "'LOCATE'", + "'LOG'", "'LOG10'", "'LOG2'", "'LOWER'", "'LPAD'", + "'LTRIM'", "'MAKEDATE'", "'MAKETIME'", "'MAKE_SET'", + "'MASTER_POS_WAIT'", "'MBRCONTAINS'", "'MBRDISJOINT'", + "'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", "'MBRTOUCHES'", + "'MBRWITHIN'", "'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", + "'MONTHNAME'", "'MPOINTFROMTEXT'", "'MPOINTFROMWKB'", + "'MPOLYFROMTEXT'", "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", + "'MULTILINESTRINGFROMWKB'", "'MULTIPOINTFROMTEXT'", + "'MULTIPOINTFROMWKB'", "'MULTIPOLYGONFROMTEXT'", "'MULTIPOLYGONFROMWKB'", + "'NAME_CONST'", "'NULLIF'", "'NUMGEOMETRIES'", "'NUMINTERIORRINGS'", + "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", "'ORD'", + "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", + "'POINTFROMTEXT'", "'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", + "'POLYFROMWKB'", "'POLYGONFROMTEXT'", "'POLYGONFROMWKB'", + "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", + "'RANDOM'", "'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", + "'ROUND'", "'ROW_COUNT'", "'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", + "'SECONDARY_ENGINE_ATTRIBUTE'", "'SESSION_USER'", "'SHA'", + "'SHA1'", "'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", + "'SLEEP'", "'SOUNDEX'", "'SQL_THREAD_WAIT_AFTER_GTIDS'", + "'SQRT'", "'SRID'", "'STARTPOINT'", "'STRCMP'", "'STR_TO_DATE'", + "'ST_AREA'", "'ST_ASBINARY'", "'ST_ASTEXT'", "'ST_ASWKB'", + "'ST_ASWKT'", "'ST_BUFFER'", "'ST_CENTROID'", "'ST_CONTAINS'", + "'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'", + "'ST_DISJOINT'", "'ST_DISTANCE'", "'ST_ENDPOINT'", + "'ST_ENVELOPE'", "'ST_EQUALS'", "'ST_EXTERIORRING'", + "'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", + "'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", + "'ST_GEOMETRYFROMTEXT'", "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", + "'ST_GEOMETRYTYPE'", "'ST_GEOMFROMTEXT'", "'ST_GEOMFROMWKB'", + "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", "'ST_INTERSECTS'", + "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", "'ST_LINEFROMTEXT'", + "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", + "'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", + "'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", + "'ST_POINTFROMWKB'", "'ST_POINTN'", "'ST_POLYFROMTEXT'", + "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", "'ST_POLYGONFROMWKB'", + "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", + "'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", + "'ST_Y'", "'SUBDATE'", "'SUBSTRING_INDEX'", "'SUBTIME'", + "'SYSTEM_USER'", "'TAN'", "'TIMEDIFF'", "'TIMESTAMPADD'", + "'TIMESTAMPDIFF'", "'TIME_FORMAT'", "'TIME_TO_SEC'", + "'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", "'TO_SECONDS'", + "'TP_CONNECTION_ADMIN'", "'UCASE'", "'UNCOMPRESS'", + "'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", + "'UPDATEXML'", "'UPPER'", "'UUID'", "'UUID_SHORT'", + "'VALIDATE_PASSWORD_STRENGTH'", "'VERSION'", "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", + "'WEEKDAY'", "'WEEKOFYEAR'", "'WEIGHT_STRING'", "'WITHIN'", + "'YEARWEEK'", "'Y'", "'X'", "':='", "'+='", "'-='", + "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'*'", + "'/'", "'%'", "'+'", "'-'", "'DIV'", "'MOD'", "'='", + "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", "'^'", "'.'", + "'('", "')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", + "'''", "'\"'", "'`'", "':'" ] + + symbolicNames = [ "", "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", + "LINE_COMMENT", "ADD", "ALL", "ALTER", "ALWAYS", "ANALYZE", + "AND", "ARRAY", "AS", "ASC", "ATTRIBUTE", "BEFORE", + "BETWEEN", "BOTH", "BUCKETS", "BY", "CALL", "CASCADE", + "CASE", "CAST", "CHANGE", "CHARACTER", "CHECK", "COLLATE", + "COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", "CONVERT", + "CREATE", "CROSS", "CURRENT", "CURRENT_ROLE", "CURRENT_USER", + "CURSOR", "DATABASE", "DATABASES", "DECLARE", "DEFAULT", + "DELAYED", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", + "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", "DROP", + "EACH", "ELSE", "ELSEIF", "EMPTY", "ENCLOSED", "ENFORCED", + "ESCAPED", "EXCEPT", "EXISTS", "EXIT", "EXPLAIN", + "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN", "FROM", + "FULLTEXT", "GENERATED", "GET", "GRANT", "GROUP", + "HAVING", "HIGH_PRIORITY", "HISTOGRAM", "IF", "IGNORE", + "IGNORED", "IN", "INDEX", "INFILE", "INNER", "INOUT", + "INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", + "KEY", "KEYS", "KILL", "LATERAL", "LEADING", "LEAVE", + "LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", + "LOCK", "LOCKED", "LOOP", "LOW_PRIORITY", "MASTER_BIND", + "MASTER_SSL_VERIFY_SERVER_CERT", "MATCH", "MAXVALUE", + "MINVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", + "NULL_LITERAL", "NUMBER", "ON", "OPTIMIZE", "OPTION", + "OPTIONAL", "OPTIONALLY", "OR", "ORDER", "OUT", "OUTER", + "OUTFILE", "OVER", "PARTITION", "PRIMARY", "PROCEDURE", + "PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", + "RELEASE", "RENAME", "REPEAT", "REPLACE", "REQUIRE", + "RESIGNAL", "RESTRICT", "RETAIN", "RETURN", "REVOKE", + "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", "SELECT", "SET", + "SEPARATOR", "SHOW", "SIGNAL", "SKIP_", "SKIP_QUERY_REWRITE", + "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", + "SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", + "SSL", "STACKED", "STARTING", "STATEMENT", "STRAIGHT_JOIN", + "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", + "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", + "UPDATE", "USAGE", "USE", "USING", "VALUES", "WHEN", + "WHERE", "WHILE", "WITH", "WRITE", "XOR", "ZEROFILL", + "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT", + "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", + "BIGINT", "REAL", "DOUBLE", "PRECISION", "FLOAT", + "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC", "DATE", + "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", + "NVARCHAR", "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", + "BLOB", "MEDIUMBLOB", "LONG", "LONGBLOB", "TINYTEXT", + "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", + "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", + "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND", + "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", + "DAY_MICROSECOND", "JSON_ARRAY", "JSON_ARRAYAGG", + "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", "JSON_CONTAINS", + "JSON_CONTAINS_PATH", "JSON_DEPTH", "JSON_EXTRACT", + "JSON_INSERT", "JSON_KEYS", "JSON_LENGTH", "JSON_MERGE", + "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT", + "JSON_OBJECTAGG", "JSON_OVERLAPS", "JSON_PRETTY", + "JSON_QUOTE", "JSON_REMOVE", "JSON_REPLACE", "JSON_SCHEMA_VALID", + "JSON_SCHEMA_VALIDATION_REPORT", "JSON_SEARCH", "JSON_SET", + "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", "JSON_TABLE", + "JSON_TYPE", "JSON_UNQUOTE", "JSON_VALID", "JSON_VALUE", + "NESTED", "ORDINALITY", "PATH", "AVG", "BIT_AND", + "BIT_OR", "BIT_XOR", "COUNT", "CUME_DIST", "DENSE_RANK", + "FIRST_VALUE", "GROUP_CONCAT", "LAG", "LAST_VALUE", + "LEAD", "MAX", "MIN", "NTILE", "NTH_VALUE", "PERCENT_RANK", + "RANK", "ROW_NUMBER", "STD", "STDDEV", "STDDEV_POP", + "STDDEV_SAMP", "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", + "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", + "EXTRACT", "LOCALTIMESTAMP", "NOW", "POSITION", "SUBSTR", + "SUBSTRING", "SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", + "UTC_TIMESTAMP", "ACCOUNT", "ACTION", "AFTER", "AGGREGATE", + "ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", + "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", + "BEGIN", "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN", + "BTREE", "CACHE", "CASCADED", "CHAIN", "CHANGED", + "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", "CIPHER", + "CLASS_ORIGIN", "CLIENT", "CLOSE", "CLUSTERING", "COALESCE", + "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", + "COMMENT", "COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", + "COMPRESSION", "CONCURRENT", "CONNECT", "CONNECTION", + "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", + "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", + "COPY", "CPU", "CYCLE", "CURSOR_NAME", "DATA", "DATAFILE", + "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", "DELAY_KEY_WRITE", + "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", + "DISK", "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", + "ENABLE", "ENCRYPTED", "ENCRYPTION", "ENCRYPTION_KEY_ID", + "END", "ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", + "ESCAPE", "EVEN", "EVENT", "EVENTS", "EVERY", "EXCHANGE", + "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", "EXTENT_SIZE", + "FAILED_LOGIN_ATTEMPTS", "FAST", "FAULTS", "FIELDS", + "FILE_BLOCK_SIZE", "FILTER", "FIRST", "FIXED", "FLUSH", + "FOLLOWING", "FOLLOWS", "FOUND", "FULL", "FUNCTION", + "GENERAL", "GLOBAL", "GRANTS", "GROUP_REPLICATION", + "HANDLER", "HASH", "HELP", "HISTORY", "HOST", "HOSTS", + "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INCREMENT", + "INDEXES", "INITIAL_SIZE", "INPLACE", "INSERT_METHOD", + "INSTALL", "INSTANCE", "INSTANT", "INVISIBLE", "INVOKER", + "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", + "KEY_BLOCK_SIZE", "LANGUAGE", "LAST", "LEAVES", "LESS", + "LEVEL", "LIST", "LOCAL", "LOGFILE", "LOGS", "MASTER", + "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", + "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", + "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", + "MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA", + "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", + "MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", + "MASTER_TLS_VERSION", "MASTER_USER", "MAX_CONNECTIONS_PER_HOUR", + "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", "MAX_UPDATES_PER_HOUR", + "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", + "MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", + "MODIFY", "MUTEX", "MYSQL", "MYSQL_ERRNO", "NAME", + "NAMES", "NCHAR", "NEVER", "NEXT", "NO", "NOCACHE", + "NOCOPY", "NOCYCLE", "NOMAXVALUE", "NOMINVALUE", "NOWAIT", + "NODEGROUP", "NONE", "ODBC", "OFFLINE", "OFFSET", + "OF", "OJ", "OLD_PASSWORD", "ONE", "ONLINE", "ONLY", + "OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", + "PAGE", "PAGE_COMPRESSED", "PAGE_COMPRESSION_LEVEL", + "PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS", + "PASSWORD", "PASSWORD_LOCK_TIME", "PHASE", "PLUGIN", + "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PRECEDING", + "PREPARE", "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", + "PROFILES", "PROXY", "QUERY", "QUICK", "REBUILD", + "RECOVER", "RECURSIVE", "REDO_BUFFER_SIZE", "REDUNDANT", + "RELAY", "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", + "REMOVE", "REORGANIZE", "REPAIR", "REPLICATE_DO_DB", + "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", + "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", + "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", + "RESTART", "RESUME", "RETURNED_SQLSTATE", "RETURNING", + "RETURNS", "REUSE", "ROLE", "ROLLBACK", "ROLLUP", + "ROTATE", "ROW", "ROWS", "ROW_FORMAT", "RTREE", "SAVEPOINT", + "SCHEDULE", "SECURITY", "SEQUENCE", "SERVER", "SESSION", + "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", + "SNAPSHOT", "SOCKET", "SOME", "SONAME", "SOUNDS", + "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", + "SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", + "SQL_NO_CACHE", "SQL_THREAD", "START", "STARTS", "STATS_AUTO_RECALC", + "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", "STATUS", + "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", + "SUBJECT", "SUBPARTITION", "SUBPARTITIONS", "SUSPEND", + "SWAPS", "SWITCHES", "TABLE_NAME", "TABLESPACE", "TABLE_TYPE", + "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", + "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNBOUNDED", + "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", "UNINSTALL", + "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", + "USER_RESOURCES", "VALIDATION", "VALUE", "VARIABLES", + "VIEW", "VIRTUAL", "VISIBLE", "WAIT", "WARNINGS", + "WINDOW", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", + "XML", "YES", "EUR", "USA", "JIS", "ISO", "INTERNAL", + "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", + "SECOND", "MICROSECOND", "ADMIN", "APPLICATION_PASSWORD_ADMIN", + "AUDIT_ABORT_EXEMPT", "AUDIT_ADMIN", "AUTHENTICATION_POLICY_ADMIN", + "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", + "CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", + "EXECUTE", "FILE", "FIREWALL_ADMIN", "FIREWALL_EXEMPT", + "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", "FLUSH_STATUS", + "FLUSH_TABLES", "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", + "INNODB_REDO_LOG_ARCHIVE", "INNODB_REDO_LOG_ENABLE", + "INVOKE", "LAMBDA", "NDB_STORED_USER", "PASSWORDLESS_USER_ADMIN", + "PERSIST_RO_VARIABLES_ADMIN", "PRIVILEGES", "PROCESS", + "RELOAD", "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", + "RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", "ROLE_ADMIN", + "ROUTINE", "S3", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SHUTDOWN", "SUPER", + "SYSTEM_VARIABLES_ADMIN", "TABLES", "TABLE_ENCRYPTION_ADMIN", + "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", "ARMSCII8", + "ASCII", "BIG5", "CP1250", "CP1251", "CP1256", "CP1257", + "CP850", "CP852", "CP866", "CP932", "DEC8", "EUCJPMS", + "EUCKR", "GB18030", "GB2312", "GBK", "GEOSTD8", "GREEK", + "HEBREW", "HP8", "KEYBCS2", "KOI8R", "KOI8U", "LATIN1", + "LATIN2", "LATIN5", "LATIN7", "MACCE", "MACROMAN", + "SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", + "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4", + "ARCHIVE", "BLACKHOLE", "CSV", "FEDERATED", "INNODB", + "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", "NDBCLUSTER", + "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE", "COMMITTED", + "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", + "GEOMCOLLECTION", "GEOMETRY", "LINESTRING", "MULTILINESTRING", + "MULTIPOINT", "MULTIPOLYGON", "POINT", "POLYGON", + "ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT", + "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", + "ASWKB", "ASWKT", "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", + "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", "ASYMMETRIC_VERIFY", + "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT", + "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", + "CENTROID", "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", + "COERCIBILITY", "COLLATION", "COMPRESS", "CONCAT", + "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ", + "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", + "CREATE_ASYMMETRIC_PUB_KEY", "CREATE_DH_PARAMETERS", + "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", + "DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", + "DECODE", "DEGREES", "DES_DECRYPT", "DES_ENCRYPT", + "DIMENSION", "DISJOINT", "ELT", "ENCODE", "ENCRYPT", + "ENDPOINT", "ENGINE_ATTRIBUTE", "ENVELOPE", "EQUALS", + "EXP", "EXPORT_SET", "EXTERIORRING", "EXTRACTVALUE", + "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS", + "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", + "GEOMCOLLFROMWKB", "GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", + "GEOMETRYFROMTEXT", "GEOMETRYFROMWKB", "GEOMETRYN", + "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", "GET_FORMAT", + "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", + "GTID_SUBTRACT", "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", + "INET_ATON", "INET_NTOA", "INSTR", "INTERIORRINGN", + "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", "ISSIMPLE", + "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", + "IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", + "LEAST", "LENGTH", "LINEFROMTEXT", "LINEFROMWKB", + "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", "LN", "LOAD_FILE", + "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", + "LTRIM", "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", + "MBRCONTAINS", "MBRDISJOINT", "MBREQUAL", "MBRINTERSECTS", + "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", "MD5", "MLINEFROMTEXT", + "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", "MPOINTFROMWKB", + "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", + "MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", + "MULTIPOLYGONFROMTEXT", "MULTIPOLYGONFROMWKB", "NAME_CONST", + "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", "NUMPOINTS", + "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", + "PERIOD_DIFF", "PI", "POINTFROMTEXT", "POINTFROMWKB", + "POINTN", "POLYFROMTEXT", "POLYFROMWKB", "POLYGONFROMTEXT", + "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", + "RAND", "RANDOM", "RANDOM_BYTES", "RELEASE_LOCK", + "REVERSE", "ROUND", "ROW_COUNT", "RPAD", "RTRIM", + "SEC_TO_TIME", "SECONDARY_ENGINE_ATTRIBUTE", "SESSION_USER", + "SHA", "SHA1", "SHA2", "SCHEMA_NAME", "SIGN", "SIN", + "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", + "SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", + "ST_AREA", "ST_ASBINARY", "ST_ASTEXT", "ST_ASWKB", + "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", + "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", + "ST_DISTANCE", "ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", + "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", "ST_GEOMCOLLFROMTXT", + "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", + "ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", + "ST_GEOMETRYFROMWKB", "ST_GEOMETRYN", "ST_GEOMETRYTYPE", + "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", "ST_INTERIORRINGN", + "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", + "ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", + "ST_LINESTRINGFROMTEXT", "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", + "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", "ST_NUMPOINTS", + "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", + "ST_POINTN", "ST_POLYFROMTEXT", "ST_POLYFROMWKB", + "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", "ST_SRID", + "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", + "ST_UNION", "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", + "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER", "TAN", + "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", + "TIME_TO_SEC", "TOUCHES", "TO_BASE64", "TO_DAYS", + "TO_SECONDS", "TP_CONNECTION_ADMIN", "UCASE", "UNCOMPRESS", + "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", + "UPDATEXML", "UPPER", "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", + "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", "WEEKDAY", + "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", + "Y_FUNCTION", "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", + "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", "DIVIDE", + "MODULE", "PLUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", + "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", + "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", "BIT_XOR_OP", + "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", + "AT_SIGN", "ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", + "SINGLE_QUOTE_SYMB", "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", + "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL", + "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", + "NULL_SPEC_LITERAL", "BIT_STRING", "STRING_CHARSET_NAME", + "DOT_ID", "ID", "REVERSE_QUOTE_ID", "STRING_USER_NAME", + "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION" ] + + RULE_root = 0 + RULE_sqlStatements = 1 + RULE_sqlStatement = 2 + RULE_emptyStatement_ = 3 + RULE_ddlStatement = 4 + RULE_dmlStatement = 5 + RULE_transactionStatement = 6 + RULE_replicationStatement = 7 + RULE_preparedStatement = 8 + RULE_compoundStatement = 9 + RULE_administrationStatement = 10 + RULE_utilityStatement = 11 + RULE_createDatabase = 12 + RULE_createEvent = 13 + RULE_createIndex = 14 + RULE_createLogfileGroup = 15 + RULE_createProcedure = 16 + RULE_createFunction = 17 + RULE_createRole = 18 + RULE_createServer = 19 + RULE_createTable = 20 + RULE_createTablespaceInnodb = 21 + RULE_createTablespaceNdb = 22 + RULE_createTrigger = 23 + RULE_withClause = 24 + RULE_commonTableExpressions = 25 + RULE_cteName = 26 + RULE_cteColumnName = 27 + RULE_createView = 28 + RULE_createDatabaseOption = 29 + RULE_charSet = 30 + RULE_ownerStatement = 31 + RULE_scheduleExpression = 32 + RULE_timestampValue = 33 + RULE_intervalExpr = 34 + RULE_intervalType = 35 + RULE_enableType = 36 + RULE_indexType = 37 + RULE_indexOption = 38 + RULE_procedureParameter = 39 + RULE_functionParameter = 40 + RULE_routineOption = 41 + RULE_serverOption = 42 + RULE_createDefinitions = 43 + RULE_createDefinition = 44 + RULE_columnDefinition = 45 + RULE_columnConstraint = 46 + RULE_tableConstraint = 47 + RULE_referenceDefinition = 48 + RULE_referenceAction = 49 + RULE_referenceControlType = 50 + RULE_indexColumnDefinition = 51 + RULE_tableOption = 52 + RULE_tableType = 53 + RULE_tablespaceStorage = 54 + RULE_partitionDefinitions = 55 + RULE_partitionFunctionDefinition = 56 + RULE_subpartitionFunctionDefinition = 57 + RULE_partitionDefinition = 58 + RULE_partitionDefinerAtom = 59 + RULE_partitionDefinerVector = 60 + RULE_subpartitionDefinition = 61 + RULE_partitionOption = 62 + RULE_alterDatabase = 63 + RULE_alterEvent = 64 + RULE_alterFunction = 65 + RULE_alterInstance = 66 + RULE_alterLogfileGroup = 67 + RULE_alterProcedure = 68 + RULE_alterServer = 69 + RULE_alterTable = 70 + RULE_alterTablespace = 71 + RULE_alterView = 72 + RULE_alterSpecification = 73 + RULE_alterPartitionSpecification = 74 + RULE_dropDatabase = 75 + RULE_dropEvent = 76 + RULE_dropIndex = 77 + RULE_dropLogfileGroup = 78 + RULE_dropProcedure = 79 + RULE_dropFunction = 80 + RULE_dropServer = 81 + RULE_dropTable = 82 + RULE_dropTablespace = 83 + RULE_dropTrigger = 84 + RULE_dropView = 85 + RULE_dropRole = 86 + RULE_setRole = 87 + RULE_renameTable = 88 + RULE_renameTableClause = 89 + RULE_truncateTable = 90 + RULE_callStatement = 91 + RULE_deleteStatement = 92 + RULE_doStatement = 93 + RULE_handlerStatement = 94 + RULE_insertStatement = 95 + RULE_loadDataStatement = 96 + RULE_loadXmlStatement = 97 + RULE_replaceStatement = 98 + RULE_selectStatement = 99 + RULE_updateStatement = 100 + RULE_valuesStatement = 101 + RULE_insertStatementValue = 102 + RULE_updatedElement = 103 + RULE_assignmentField = 104 + RULE_lockClause = 105 + RULE_singleDeleteStatement = 106 + RULE_multipleDeleteStatement = 107 + RULE_handlerOpenStatement = 108 + RULE_handlerReadIndexStatement = 109 + RULE_handlerReadStatement = 110 + RULE_handlerCloseStatement = 111 + RULE_singleUpdateStatement = 112 + RULE_multipleUpdateStatement = 113 + RULE_orderByClause = 114 + RULE_orderByExpression = 115 + RULE_tableSources = 116 + RULE_tableSource = 117 + RULE_tableSourceItem = 118 + RULE_indexHint = 119 + RULE_indexHintType = 120 + RULE_joinPart = 121 + RULE_joinSpec = 122 + RULE_queryExpression = 123 + RULE_queryExpressionNointo = 124 + RULE_querySpecification = 125 + RULE_querySpecificationNointo = 126 + RULE_unionParenthesis = 127 + RULE_unionStatement = 128 + RULE_lateralStatement = 129 + RULE_jsonTable = 130 + RULE_jsonColumnList = 131 + RULE_jsonColumn = 132 + RULE_jsonOnEmpty = 133 + RULE_jsonOnError = 134 + RULE_selectSpec = 135 + RULE_selectElements = 136 + RULE_selectElement = 137 + RULE_selectIntoExpression = 138 + RULE_selectFieldsInto = 139 + RULE_selectLinesInto = 140 + RULE_fromClause = 141 + RULE_groupByClause = 142 + RULE_havingClause = 143 + RULE_windowClause = 144 + RULE_groupByItem = 145 + RULE_limitClause = 146 + RULE_limitClauseAtom = 147 + RULE_startTransaction = 148 + RULE_beginWork = 149 + RULE_commitWork = 150 + RULE_rollbackWork = 151 + RULE_savepointStatement = 152 + RULE_rollbackStatement = 153 + RULE_releaseStatement = 154 + RULE_lockTables = 155 + RULE_unlockTables = 156 + RULE_setAutocommitStatement = 157 + RULE_setTransactionStatement = 158 + RULE_transactionMode = 159 + RULE_lockTableElement = 160 + RULE_lockAction = 161 + RULE_transactionOption = 162 + RULE_transactionLevel = 163 + RULE_changeMaster = 164 + RULE_changeReplicationFilter = 165 + RULE_purgeBinaryLogs = 166 + RULE_resetMaster = 167 + RULE_resetSlave = 168 + RULE_startSlave = 169 + RULE_stopSlave = 170 + RULE_startGroupReplication = 171 + RULE_stopGroupReplication = 172 + RULE_masterOption = 173 + RULE_stringMasterOption = 174 + RULE_decimalMasterOption = 175 + RULE_boolMasterOption = 176 + RULE_channelOption = 177 + RULE_replicationFilter = 178 + RULE_tablePair = 179 + RULE_threadType = 180 + RULE_untilOption = 181 + RULE_connectionOption = 182 + RULE_gtuidSet = 183 + RULE_xaStartTransaction = 184 + RULE_xaEndTransaction = 185 + RULE_xaPrepareStatement = 186 + RULE_xaCommitWork = 187 + RULE_xaRollbackWork = 188 + RULE_xaRecoverWork = 189 + RULE_prepareStatement = 190 + RULE_executeStatement = 191 + RULE_deallocatePrepare = 192 + RULE_routineBody = 193 + RULE_blockStatement = 194 + RULE_caseStatement = 195 + RULE_ifStatement = 196 + RULE_iterateStatement = 197 + RULE_leaveStatement = 198 + RULE_loopStatement = 199 + RULE_repeatStatement = 200 + RULE_returnStatement = 201 + RULE_whileStatement = 202 + RULE_cursorStatement = 203 + RULE_declareVariable = 204 + RULE_declareCondition = 205 + RULE_declareCursor = 206 + RULE_declareHandler = 207 + RULE_handlerConditionValue = 208 + RULE_procedureSqlStatement = 209 + RULE_caseAlternative = 210 + RULE_elifAlternative = 211 + RULE_alterUser = 212 + RULE_createUser = 213 + RULE_dropUser = 214 + RULE_grantStatement = 215 + RULE_roleOption = 216 + RULE_grantProxy = 217 + RULE_renameUser = 218 + RULE_revokeStatement = 219 + RULE_revokeProxy = 220 + RULE_setPasswordStatement = 221 + RULE_userSpecification = 222 + RULE_userAuthOption = 223 + RULE_authOptionClause = 224 + RULE_authenticationRule = 225 + RULE_tlsOption = 226 + RULE_userResourceOption = 227 + RULE_userPasswordOption = 228 + RULE_userLockOption = 229 + RULE_privelegeClause = 230 + RULE_privilege = 231 + RULE_privilegeLevel = 232 + RULE_renameUserClause = 233 + RULE_analyzeTable = 234 + RULE_checkTable = 235 + RULE_checksumTable = 236 + RULE_optimizeTable = 237 + RULE_repairTable = 238 + RULE_checkTableOption = 239 + RULE_createUdfunction = 240 + RULE_installPlugin = 241 + RULE_uninstallPlugin = 242 + RULE_setStatement = 243 + RULE_showStatement = 244 + RULE_variableClause = 245 + RULE_showCommonEntity = 246 + RULE_showFilter = 247 + RULE_showGlobalInfoClause = 248 + RULE_showSchemaEntity = 249 + RULE_showProfileType = 250 + RULE_binlogStatement = 251 + RULE_cacheIndexStatement = 252 + RULE_flushStatement = 253 + RULE_killStatement = 254 + RULE_loadIndexIntoCache = 255 + RULE_resetStatement = 256 + RULE_shutdownStatement = 257 + RULE_tableIndexes = 258 + RULE_flushOption = 259 + RULE_flushTableOption = 260 + RULE_loadedTableIndexes = 261 + RULE_simpleDescribeStatement = 262 + RULE_fullDescribeStatement = 263 + RULE_helpStatement = 264 + RULE_useStatement = 265 + RULE_signalStatement = 266 + RULE_resignalStatement = 267 + RULE_signalConditionInformation = 268 + RULE_withStatement = 269 + RULE_tableStatement = 270 + RULE_diagnosticsStatement = 271 + RULE_diagnosticsConditionInformationName = 272 + RULE_describeObjectClause = 273 + RULE_fullId = 274 + RULE_tableName = 275 + RULE_roleName = 276 + RULE_fullColumnName = 277 + RULE_indexColumnName = 278 + RULE_userName = 279 + RULE_mysqlVariable = 280 + RULE_charsetName = 281 + RULE_collationName = 282 + RULE_engineName = 283 + RULE_engineNameBase = 284 + RULE_uuidSet = 285 + RULE_xid = 286 + RULE_xuidStringId = 287 + RULE_authPlugin = 288 + RULE_uid = 289 + RULE_simpleId = 290 + RULE_dottedId = 291 + RULE_decimalLiteral = 292 + RULE_fileSizeLiteral = 293 + RULE_stringLiteral = 294 + RULE_booleanLiteral = 295 + RULE_hexadecimalLiteral = 296 + RULE_nullNotnull = 297 + RULE_constant = 298 + RULE_dataType = 299 + RULE_collectionOptions = 300 + RULE_convertedDataType = 301 + RULE_lengthOneDimension = 302 + RULE_lengthTwoDimension = 303 + RULE_lengthTwoOptionalDimension = 304 + RULE_uidList = 305 + RULE_fullColumnNameList = 306 + RULE_tables = 307 + RULE_indexColumnNames = 308 + RULE_expressions = 309 + RULE_expressionsWithDefaults = 310 + RULE_constants = 311 + RULE_simpleStrings = 312 + RULE_userVariables = 313 + RULE_defaultValue = 314 + RULE_currentTimestamp = 315 + RULE_expressionOrDefault = 316 + RULE_ifExists = 317 + RULE_ifNotExists = 318 + RULE_orReplace = 319 + RULE_waitNowaitClause = 320 + RULE_functionCall = 321 + RULE_specificFunction = 322 + RULE_caseFuncAlternative = 323 + RULE_levelsInWeightString = 324 + RULE_levelInWeightListElement = 325 + RULE_aggregateWindowedFunction = 326 + RULE_nonAggregateWindowedFunction = 327 + RULE_overClause = 328 + RULE_windowSpec = 329 + RULE_windowName = 330 + RULE_frameClause = 331 + RULE_frameUnits = 332 + RULE_frameExtent = 333 + RULE_frameBetween = 334 + RULE_frameRange = 335 + RULE_partitionClause = 336 + RULE_scalarFunctionName = 337 + RULE_passwordFunctionClause = 338 + RULE_functionArgs = 339 + RULE_functionArg = 340 + RULE_expression = 341 + RULE_predicate = 342 + RULE_expressionAtom = 343 + RULE_unaryOperator = 344 + RULE_comparisonOperator = 345 + RULE_logicalOperator = 346 + RULE_bitOperator = 347 + RULE_mathOperator = 348 + RULE_jsonOperator = 349 + RULE_charsetNameBase = 350 + RULE_transactionLevelBase = 351 + RULE_privilegesBase = 352 + RULE_intervalTypeBase = 353 + RULE_dataTypeBase = 354 + RULE_keywordsCanBeId = 355 + RULE_functionNameBase = 356 + + ruleNames = [ "root", "sqlStatements", "sqlStatement", "emptyStatement_", + "ddlStatement", "dmlStatement", "transactionStatement", + "replicationStatement", "preparedStatement", "compoundStatement", + "administrationStatement", "utilityStatement", "createDatabase", + "createEvent", "createIndex", "createLogfileGroup", "createProcedure", + "createFunction", "createRole", "createServer", "createTable", + "createTablespaceInnodb", "createTablespaceNdb", "createTrigger", + "withClause", "commonTableExpressions", "cteName", "cteColumnName", + "createView", "createDatabaseOption", "charSet", "ownerStatement", + "scheduleExpression", "timestampValue", "intervalExpr", + "intervalType", "enableType", "indexType", "indexOption", + "procedureParameter", "functionParameter", "routineOption", + "serverOption", "createDefinitions", "createDefinition", + "columnDefinition", "columnConstraint", "tableConstraint", + "referenceDefinition", "referenceAction", "referenceControlType", + "indexColumnDefinition", "tableOption", "tableType", + "tablespaceStorage", "partitionDefinitions", "partitionFunctionDefinition", + "subpartitionFunctionDefinition", "partitionDefinition", + "partitionDefinerAtom", "partitionDefinerVector", "subpartitionDefinition", + "partitionOption", "alterDatabase", "alterEvent", "alterFunction", + "alterInstance", "alterLogfileGroup", "alterProcedure", + "alterServer", "alterTable", "alterTablespace", "alterView", + "alterSpecification", "alterPartitionSpecification", + "dropDatabase", "dropEvent", "dropIndex", "dropLogfileGroup", + "dropProcedure", "dropFunction", "dropServer", "dropTable", + "dropTablespace", "dropTrigger", "dropView", "dropRole", + "setRole", "renameTable", "renameTableClause", "truncateTable", + "callStatement", "deleteStatement", "doStatement", "handlerStatement", + "insertStatement", "loadDataStatement", "loadXmlStatement", + "replaceStatement", "selectStatement", "updateStatement", + "valuesStatement", "insertStatementValue", "updatedElement", + "assignmentField", "lockClause", "singleDeleteStatement", + "multipleDeleteStatement", "handlerOpenStatement", "handlerReadIndexStatement", + "handlerReadStatement", "handlerCloseStatement", "singleUpdateStatement", + "multipleUpdateStatement", "orderByClause", "orderByExpression", + "tableSources", "tableSource", "tableSourceItem", "indexHint", + "indexHintType", "joinPart", "joinSpec", "queryExpression", + "queryExpressionNointo", "querySpecification", "querySpecificationNointo", + "unionParenthesis", "unionStatement", "lateralStatement", + "jsonTable", "jsonColumnList", "jsonColumn", "jsonOnEmpty", + "jsonOnError", "selectSpec", "selectElements", "selectElement", + "selectIntoExpression", "selectFieldsInto", "selectLinesInto", + "fromClause", "groupByClause", "havingClause", "windowClause", + "groupByItem", "limitClause", "limitClauseAtom", "startTransaction", + "beginWork", "commitWork", "rollbackWork", "savepointStatement", + "rollbackStatement", "releaseStatement", "lockTables", + "unlockTables", "setAutocommitStatement", "setTransactionStatement", + "transactionMode", "lockTableElement", "lockAction", + "transactionOption", "transactionLevel", "changeMaster", + "changeReplicationFilter", "purgeBinaryLogs", "resetMaster", + "resetSlave", "startSlave", "stopSlave", "startGroupReplication", + "stopGroupReplication", "masterOption", "stringMasterOption", + "decimalMasterOption", "boolMasterOption", "channelOption", + "replicationFilter", "tablePair", "threadType", "untilOption", + "connectionOption", "gtuidSet", "xaStartTransaction", + "xaEndTransaction", "xaPrepareStatement", "xaCommitWork", + "xaRollbackWork", "xaRecoverWork", "prepareStatement", + "executeStatement", "deallocatePrepare", "routineBody", + "blockStatement", "caseStatement", "ifStatement", "iterateStatement", + "leaveStatement", "loopStatement", "repeatStatement", + "returnStatement", "whileStatement", "cursorStatement", + "declareVariable", "declareCondition", "declareCursor", + "declareHandler", "handlerConditionValue", "procedureSqlStatement", + "caseAlternative", "elifAlternative", "alterUser", "createUser", + "dropUser", "grantStatement", "roleOption", "grantProxy", + "renameUser", "revokeStatement", "revokeProxy", "setPasswordStatement", + "userSpecification", "userAuthOption", "authOptionClause", + "authenticationRule", "tlsOption", "userResourceOption", + "userPasswordOption", "userLockOption", "privelegeClause", + "privilege", "privilegeLevel", "renameUserClause", "analyzeTable", + "checkTable", "checksumTable", "optimizeTable", "repairTable", + "checkTableOption", "createUdfunction", "installPlugin", + "uninstallPlugin", "setStatement", "showStatement", "variableClause", + "showCommonEntity", "showFilter", "showGlobalInfoClause", + "showSchemaEntity", "showProfileType", "binlogStatement", + "cacheIndexStatement", "flushStatement", "killStatement", + "loadIndexIntoCache", "resetStatement", "shutdownStatement", + "tableIndexes", "flushOption", "flushTableOption", "loadedTableIndexes", + "simpleDescribeStatement", "fullDescribeStatement", "helpStatement", + "useStatement", "signalStatement", "resignalStatement", + "signalConditionInformation", "withStatement", "tableStatement", + "diagnosticsStatement", "diagnosticsConditionInformationName", + "describeObjectClause", "fullId", "tableName", "roleName", + "fullColumnName", "indexColumnName", "userName", "mysqlVariable", + "charsetName", "collationName", "engineName", "engineNameBase", + "uuidSet", "xid", "xuidStringId", "authPlugin", "uid", + "simpleId", "dottedId", "decimalLiteral", "fileSizeLiteral", + "stringLiteral", "booleanLiteral", "hexadecimalLiteral", + "nullNotnull", "constant", "dataType", "collectionOptions", + "convertedDataType", "lengthOneDimension", "lengthTwoDimension", + "lengthTwoOptionalDimension", "uidList", "fullColumnNameList", + "tables", "indexColumnNames", "expressions", "expressionsWithDefaults", + "constants", "simpleStrings", "userVariables", "defaultValue", + "currentTimestamp", "expressionOrDefault", "ifExists", + "ifNotExists", "orReplace", "waitNowaitClause", "functionCall", + "specificFunction", "caseFuncAlternative", "levelsInWeightString", + "levelInWeightListElement", "aggregateWindowedFunction", + "nonAggregateWindowedFunction", "overClause", "windowSpec", + "windowName", "frameClause", "frameUnits", "frameExtent", + "frameBetween", "frameRange", "partitionClause", "scalarFunctionName", + "passwordFunctionClause", "functionArgs", "functionArg", + "expression", "predicate", "expressionAtom", "unaryOperator", + "comparisonOperator", "logicalOperator", "bitOperator", + "mathOperator", "jsonOperator", "charsetNameBase", "transactionLevelBase", + "privilegesBase", "intervalTypeBase", "dataTypeBase", + "keywordsCanBeId", "functionNameBase" ] + + EOF = Token.EOF + SPACE=1 + SPEC_MYSQL_COMMENT=2 + COMMENT_INPUT=3 + LINE_COMMENT=4 + ADD=5 + ALL=6 + ALTER=7 + ALWAYS=8 + ANALYZE=9 + AND=10 + ARRAY=11 + AS=12 + ASC=13 + ATTRIBUTE=14 + BEFORE=15 + BETWEEN=16 + BOTH=17 + BUCKETS=18 + BY=19 + CALL=20 + CASCADE=21 + CASE=22 + CAST=23 + CHANGE=24 + CHARACTER=25 + CHECK=26 + COLLATE=27 + COLUMN=28 + CONDITION=29 + CONSTRAINT=30 + CONTINUE=31 + CONVERT=32 + CREATE=33 + CROSS=34 + CURRENT=35 + CURRENT_ROLE=36 + CURRENT_USER=37 + CURSOR=38 + DATABASE=39 + DATABASES=40 + DECLARE=41 + DEFAULT=42 + DELAYED=43 + DELETE=44 + DESC=45 + DESCRIBE=46 + DETERMINISTIC=47 + DIAGNOSTICS=48 + DISTINCT=49 + DISTINCTROW=50 + DROP=51 + EACH=52 + ELSE=53 + ELSEIF=54 + EMPTY=55 + ENCLOSED=56 + ENFORCED=57 + ESCAPED=58 + EXCEPT=59 + EXISTS=60 + EXIT=61 + EXPLAIN=62 + FALSE=63 + FETCH=64 + FOR=65 + FORCE=66 + FOREIGN=67 + FROM=68 + FULLTEXT=69 + GENERATED=70 + GET=71 + GRANT=72 + GROUP=73 + HAVING=74 + HIGH_PRIORITY=75 + HISTOGRAM=76 + IF=77 + IGNORE=78 + IGNORED=79 + IN=80 + INDEX=81 + INFILE=82 + INNER=83 + INOUT=84 + INSERT=85 + INTERVAL=86 + INTO=87 + IS=88 + ITERATE=89 + JOIN=90 + KEY=91 + KEYS=92 + KILL=93 + LATERAL=94 + LEADING=95 + LEAVE=96 + LEFT=97 + LIKE=98 + LIMIT=99 + LINEAR=100 + LINES=101 + LOAD=102 + LOCK=103 + LOCKED=104 + LOOP=105 + LOW_PRIORITY=106 + MASTER_BIND=107 + MASTER_SSL_VERIFY_SERVER_CERT=108 + MATCH=109 + MAXVALUE=110 + MINVALUE=111 + MODIFIES=112 + NATURAL=113 + NOT=114 + NO_WRITE_TO_BINLOG=115 + NULL_LITERAL=116 + NUMBER=117 + ON=118 + OPTIMIZE=119 + OPTION=120 + OPTIONAL=121 + OPTIONALLY=122 + OR=123 + ORDER=124 + OUT=125 + OUTER=126 + OUTFILE=127 + OVER=128 + PARTITION=129 + PRIMARY=130 + PROCEDURE=131 + PURGE=132 + RANGE=133 + READ=134 + READS=135 + REFERENCES=136 + REGEXP=137 + RELEASE=138 + RENAME=139 + REPEAT=140 + REPLACE=141 + REQUIRE=142 + RESIGNAL=143 + RESTRICT=144 + RETAIN=145 + RETURN=146 + REVOKE=147 + RIGHT=148 + RLIKE=149 + SCHEMA=150 + SCHEMAS=151 + SELECT=152 + SET=153 + SEPARATOR=154 + SHOW=155 + SIGNAL=156 + SKIP_=157 + SKIP_QUERY_REWRITE=158 + SPATIAL=159 + SQL=160 + SQLEXCEPTION=161 + SQLSTATE=162 + SQLWARNING=163 + SQL_BIG_RESULT=164 + SQL_CALC_FOUND_ROWS=165 + SQL_SMALL_RESULT=166 + SSL=167 + STACKED=168 + STARTING=169 + STATEMENT=170 + STRAIGHT_JOIN=171 + TABLE=172 + TERMINATED=173 + THEN=174 + TO=175 + TRAILING=176 + TRIGGER=177 + TRUE=178 + UNDO=179 + UNION=180 + UNIQUE=181 + UNLOCK=182 + UNSIGNED=183 + UPDATE=184 + USAGE=185 + USE=186 + USING=187 + VALUES=188 + WHEN=189 + WHERE=190 + WHILE=191 + WITH=192 + WRITE=193 + XOR=194 + ZEROFILL=195 + TINYINT=196 + SMALLINT=197 + MEDIUMINT=198 + MIDDLEINT=199 + INT=200 + INT1=201 + INT2=202 + INT3=203 + INT4=204 + INT8=205 + INTEGER=206 + BIGINT=207 + REAL=208 + DOUBLE=209 + PRECISION=210 + FLOAT=211 + FLOAT4=212 + FLOAT8=213 + DECIMAL=214 + DEC=215 + NUMERIC=216 + DATE=217 + TIME=218 + TIMESTAMP=219 + DATETIME=220 + YEAR=221 + CHAR=222 + VARCHAR=223 + NVARCHAR=224 + NATIONAL=225 + BINARY=226 + VARBINARY=227 + TINYBLOB=228 + BLOB=229 + MEDIUMBLOB=230 + LONG=231 + LONGBLOB=232 + TINYTEXT=233 + TEXT=234 + MEDIUMTEXT=235 + LONGTEXT=236 + ENUM=237 + VARYING=238 + SERIAL=239 + YEAR_MONTH=240 + DAY_HOUR=241 + DAY_MINUTE=242 + DAY_SECOND=243 + HOUR_MINUTE=244 + HOUR_SECOND=245 + MINUTE_SECOND=246 + SECOND_MICROSECOND=247 + MINUTE_MICROSECOND=248 + HOUR_MICROSECOND=249 + DAY_MICROSECOND=250 + JSON_ARRAY=251 + JSON_ARRAYAGG=252 + JSON_ARRAY_APPEND=253 + JSON_ARRAY_INSERT=254 + JSON_CONTAINS=255 + JSON_CONTAINS_PATH=256 + JSON_DEPTH=257 + JSON_EXTRACT=258 + JSON_INSERT=259 + JSON_KEYS=260 + JSON_LENGTH=261 + JSON_MERGE=262 + JSON_MERGE_PATCH=263 + JSON_MERGE_PRESERVE=264 + JSON_OBJECT=265 + JSON_OBJECTAGG=266 + JSON_OVERLAPS=267 + JSON_PRETTY=268 + JSON_QUOTE=269 + JSON_REMOVE=270 + JSON_REPLACE=271 + JSON_SCHEMA_VALID=272 + JSON_SCHEMA_VALIDATION_REPORT=273 + JSON_SEARCH=274 + JSON_SET=275 + JSON_STORAGE_FREE=276 + JSON_STORAGE_SIZE=277 + JSON_TABLE=278 + JSON_TYPE=279 + JSON_UNQUOTE=280 + JSON_VALID=281 + JSON_VALUE=282 + NESTED=283 + ORDINALITY=284 + PATH=285 + AVG=286 + BIT_AND=287 + BIT_OR=288 + BIT_XOR=289 + COUNT=290 + CUME_DIST=291 + DENSE_RANK=292 + FIRST_VALUE=293 + GROUP_CONCAT=294 + LAG=295 + LAST_VALUE=296 + LEAD=297 + MAX=298 + MIN=299 + NTILE=300 + NTH_VALUE=301 + PERCENT_RANK=302 + RANK=303 + ROW_NUMBER=304 + STD=305 + STDDEV=306 + STDDEV_POP=307 + STDDEV_SAMP=308 + SUM=309 + VAR_POP=310 + VAR_SAMP=311 + VARIANCE=312 + CURRENT_DATE=313 + CURRENT_TIME=314 + CURRENT_TIMESTAMP=315 + LOCALTIME=316 + CURDATE=317 + CURTIME=318 + DATE_ADD=319 + DATE_SUB=320 + EXTRACT=321 + LOCALTIMESTAMP=322 + NOW=323 + POSITION=324 + SUBSTR=325 + SUBSTRING=326 + SYSDATE=327 + TRIM=328 + UTC_DATE=329 + UTC_TIME=330 + UTC_TIMESTAMP=331 + ACCOUNT=332 + ACTION=333 + AFTER=334 + AGGREGATE=335 + ALGORITHM=336 + ANY=337 + AT=338 + AUTHORS=339 + AUTOCOMMIT=340 + AUTOEXTEND_SIZE=341 + AUTO_INCREMENT=342 + AVG_ROW_LENGTH=343 + BEGIN=344 + BINLOG=345 + BIT=346 + BLOCK=347 + BOOL=348 + BOOLEAN=349 + BTREE=350 + CACHE=351 + CASCADED=352 + CHAIN=353 + CHANGED=354 + CHANNEL=355 + CHECKSUM=356 + PAGE_CHECKSUM=357 + CIPHER=358 + CLASS_ORIGIN=359 + CLIENT=360 + CLOSE=361 + CLUSTERING=362 + COALESCE=363 + CODE=364 + COLUMNS=365 + COLUMN_FORMAT=366 + COLUMN_NAME=367 + COMMENT=368 + COMMIT=369 + COMPACT=370 + COMPLETION=371 + COMPRESSED=372 + COMPRESSION=373 + CONCURRENT=374 + CONNECT=375 + CONNECTION=376 + CONSISTENT=377 + CONSTRAINT_CATALOG=378 + CONSTRAINT_SCHEMA=379 + CONSTRAINT_NAME=380 + CONTAINS=381 + CONTEXT=382 + CONTRIBUTORS=383 + COPY=384 + CPU=385 + CYCLE=386 + CURSOR_NAME=387 + DATA=388 + DATAFILE=389 + DEALLOCATE=390 + DEFAULT_AUTH=391 + DEFINER=392 + DELAY_KEY_WRITE=393 + DES_KEY_FILE=394 + DIRECTORY=395 + DISABLE=396 + DISCARD=397 + DISK=398 + DO=399 + DUMPFILE=400 + DUPLICATE=401 + DYNAMIC=402 + ENABLE=403 + ENCRYPTED=404 + ENCRYPTION=405 + ENCRYPTION_KEY_ID=406 + END=407 + ENDS=408 + ENGINE=409 + ENGINES=410 + ERROR=411 + ERRORS=412 + ESCAPE=413 + EVEN=414 + EVENT=415 + EVENTS=416 + EVERY=417 + EXCHANGE=418 + EXCLUSIVE=419 + EXPIRE=420 + EXPORT=421 + EXTENDED=422 + EXTENT_SIZE=423 + FAILED_LOGIN_ATTEMPTS=424 + FAST=425 + FAULTS=426 + FIELDS=427 + FILE_BLOCK_SIZE=428 + FILTER=429 + FIRST=430 + FIXED=431 + FLUSH=432 + FOLLOWING=433 + FOLLOWS=434 + FOUND=435 + FULL=436 + FUNCTION=437 + GENERAL=438 + GLOBAL=439 + GRANTS=440 + GROUP_REPLICATION=441 + HANDLER=442 + HASH=443 + HELP=444 + HISTORY=445 + HOST=446 + HOSTS=447 + IDENTIFIED=448 + IGNORE_SERVER_IDS=449 + IMPORT=450 + INCREMENT=451 + INDEXES=452 + INITIAL_SIZE=453 + INPLACE=454 + INSERT_METHOD=455 + INSTALL=456 + INSTANCE=457 + INSTANT=458 + INVISIBLE=459 + INVOKER=460 + IO=461 + IO_THREAD=462 + IPC=463 + ISOLATION=464 + ISSUER=465 + JSON=466 + KEY_BLOCK_SIZE=467 + LANGUAGE=468 + LAST=469 + LEAVES=470 + LESS=471 + LEVEL=472 + LIST=473 + LOCAL=474 + LOGFILE=475 + LOGS=476 + MASTER=477 + MASTER_AUTO_POSITION=478 + MASTER_CONNECT_RETRY=479 + MASTER_DELAY=480 + MASTER_HEARTBEAT_PERIOD=481 + MASTER_HOST=482 + MASTER_LOG_FILE=483 + MASTER_LOG_POS=484 + MASTER_PASSWORD=485 + MASTER_PORT=486 + MASTER_RETRY_COUNT=487 + MASTER_SSL=488 + MASTER_SSL_CA=489 + MASTER_SSL_CAPATH=490 + MASTER_SSL_CERT=491 + MASTER_SSL_CIPHER=492 + MASTER_SSL_CRL=493 + MASTER_SSL_CRLPATH=494 + MASTER_SSL_KEY=495 + MASTER_TLS_VERSION=496 + MASTER_USER=497 + MAX_CONNECTIONS_PER_HOUR=498 + MAX_QUERIES_PER_HOUR=499 + MAX_ROWS=500 + MAX_SIZE=501 + MAX_UPDATES_PER_HOUR=502 + MAX_USER_CONNECTIONS=503 + MEDIUM=504 + MEMBER=505 + MERGE=506 + MESSAGE_TEXT=507 + MID=508 + MIGRATE=509 + MIN_ROWS=510 + MODE=511 + MODIFY=512 + MUTEX=513 + MYSQL=514 + MYSQL_ERRNO=515 + NAME=516 + NAMES=517 + NCHAR=518 + NEVER=519 + NEXT=520 + NO=521 + NOCACHE=522 + NOCOPY=523 + NOCYCLE=524 + NOMAXVALUE=525 + NOMINVALUE=526 + NOWAIT=527 + NODEGROUP=528 + NONE=529 + ODBC=530 + OFFLINE=531 + OFFSET=532 + OF=533 + OJ=534 + OLD_PASSWORD=535 + ONE=536 + ONLINE=537 + ONLY=538 + OPEN=539 + OPTIMIZER_COSTS=540 + OPTIONS=541 + OWNER=542 + PACK_KEYS=543 + PAGE=544 + PAGE_COMPRESSED=545 + PAGE_COMPRESSION_LEVEL=546 + PARSER=547 + PARTIAL=548 + PARTITIONING=549 + PARTITIONS=550 + PASSWORD=551 + PASSWORD_LOCK_TIME=552 + PHASE=553 + PLUGIN=554 + PLUGIN_DIR=555 + PLUGINS=556 + PORT=557 + PRECEDES=558 + PRECEDING=559 + PREPARE=560 + PRESERVE=561 + PREV=562 + PROCESSLIST=563 + PROFILE=564 + PROFILES=565 + PROXY=566 + QUERY=567 + QUICK=568 + REBUILD=569 + RECOVER=570 + RECURSIVE=571 + REDO_BUFFER_SIZE=572 + REDUNDANT=573 + RELAY=574 + RELAY_LOG_FILE=575 + RELAY_LOG_POS=576 + RELAYLOG=577 + REMOVE=578 + REORGANIZE=579 + REPAIR=580 + REPLICATE_DO_DB=581 + REPLICATE_DO_TABLE=582 + REPLICATE_IGNORE_DB=583 + REPLICATE_IGNORE_TABLE=584 + REPLICATE_REWRITE_DB=585 + REPLICATE_WILD_DO_TABLE=586 + REPLICATE_WILD_IGNORE_TABLE=587 + REPLICATION=588 + RESET=589 + RESTART=590 + RESUME=591 + RETURNED_SQLSTATE=592 + RETURNING=593 + RETURNS=594 + REUSE=595 + ROLE=596 + ROLLBACK=597 + ROLLUP=598 + ROTATE=599 + ROW=600 + ROWS=601 + ROW_FORMAT=602 + RTREE=603 + SAVEPOINT=604 + SCHEDULE=605 + SECURITY=606 + SEQUENCE=607 + SERVER=608 + SESSION=609 + SHARE=610 + SHARED=611 + SIGNED=612 + SIMPLE=613 + SLAVE=614 + SLOW=615 + SNAPSHOT=616 + SOCKET=617 + SOME=618 + SONAME=619 + SOUNDS=620 + SOURCE=621 + SQL_AFTER_GTIDS=622 + SQL_AFTER_MTS_GAPS=623 + SQL_BEFORE_GTIDS=624 + SQL_BUFFER_RESULT=625 + SQL_CACHE=626 + SQL_NO_CACHE=627 + SQL_THREAD=628 + START=629 + STARTS=630 + STATS_AUTO_RECALC=631 + STATS_PERSISTENT=632 + STATS_SAMPLE_PAGES=633 + STATUS=634 + STOP=635 + STORAGE=636 + STORED=637 + STRING=638 + SUBCLASS_ORIGIN=639 + SUBJECT=640 + SUBPARTITION=641 + SUBPARTITIONS=642 + SUSPEND=643 + SWAPS=644 + SWITCHES=645 + TABLE_NAME=646 + TABLESPACE=647 + TABLE_TYPE=648 + TEMPORARY=649 + TEMPTABLE=650 + THAN=651 + TRADITIONAL=652 + TRANSACTION=653 + TRANSACTIONAL=654 + TRIGGERS=655 + TRUNCATE=656 + UNBOUNDED=657 + UNDEFINED=658 + UNDOFILE=659 + UNDO_BUFFER_SIZE=660 + UNINSTALL=661 + UNKNOWN=662 + UNTIL=663 + UPGRADE=664 + USER=665 + USE_FRM=666 + USER_RESOURCES=667 + VALIDATION=668 + VALUE=669 + VARIABLES=670 + VIEW=671 + VIRTUAL=672 + VISIBLE=673 + WAIT=674 + WARNINGS=675 + WINDOW=676 + WITHOUT=677 + WORK=678 + WRAPPER=679 + X509=680 + XA=681 + XML=682 + YES=683 + EUR=684 + USA=685 + JIS=686 + ISO=687 + INTERNAL=688 + QUARTER=689 + MONTH=690 + DAY=691 + HOUR=692 + MINUTE=693 + WEEK=694 + SECOND=695 + MICROSECOND=696 + ADMIN=697 + APPLICATION_PASSWORD_ADMIN=698 + AUDIT_ABORT_EXEMPT=699 + AUDIT_ADMIN=700 + AUTHENTICATION_POLICY_ADMIN=701 + BACKUP_ADMIN=702 + BINLOG_ADMIN=703 + BINLOG_ENCRYPTION_ADMIN=704 + CLONE_ADMIN=705 + CONNECTION_ADMIN=706 + ENCRYPTION_KEY_ADMIN=707 + EXECUTE=708 + FILE=709 + FIREWALL_ADMIN=710 + FIREWALL_EXEMPT=711 + FIREWALL_USER=712 + FLUSH_OPTIMIZER_COSTS=713 + FLUSH_STATUS=714 + FLUSH_TABLES=715 + FLUSH_USER_RESOURCES=716 + GROUP_REPLICATION_ADMIN=717 + INNODB_REDO_LOG_ARCHIVE=718 + INNODB_REDO_LOG_ENABLE=719 + INVOKE=720 + LAMBDA=721 + NDB_STORED_USER=722 + PASSWORDLESS_USER_ADMIN=723 + PERSIST_RO_VARIABLES_ADMIN=724 + PRIVILEGES=725 + PROCESS=726 + RELOAD=727 + REPLICATION_APPLIER=728 + REPLICATION_SLAVE_ADMIN=729 + RESOURCE_GROUP_ADMIN=730 + RESOURCE_GROUP_USER=731 + ROLE_ADMIN=732 + ROUTINE=733 + S3=734 + SERVICE_CONNECTION_ADMIN=735 + SESSION_VARIABLES_ADMIN=736 + SET_USER_ID=737 + SHOW_ROUTINE=738 + SHUTDOWN=739 + SUPER=740 + SYSTEM_VARIABLES_ADMIN=741 + TABLES=742 + TABLE_ENCRYPTION_ADMIN=743 + VERSION_TOKEN_ADMIN=744 + XA_RECOVER_ADMIN=745 + ARMSCII8=746 + ASCII=747 + BIG5=748 + CP1250=749 + CP1251=750 + CP1256=751 + CP1257=752 + CP850=753 + CP852=754 + CP866=755 + CP932=756 + DEC8=757 + EUCJPMS=758 + EUCKR=759 + GB18030=760 + GB2312=761 + GBK=762 + GEOSTD8=763 + GREEK=764 + HEBREW=765 + HP8=766 + KEYBCS2=767 + KOI8R=768 + KOI8U=769 + LATIN1=770 + LATIN2=771 + LATIN5=772 + LATIN7=773 + MACCE=774 + MACROMAN=775 + SJIS=776 + SWE7=777 + TIS620=778 + UCS2=779 + UJIS=780 + UTF16=781 + UTF16LE=782 + UTF32=783 + UTF8=784 + UTF8MB3=785 + UTF8MB4=786 + ARCHIVE=787 + BLACKHOLE=788 + CSV=789 + FEDERATED=790 + INNODB=791 + MEMORY=792 + MRG_MYISAM=793 + MYISAM=794 + NDB=795 + NDBCLUSTER=796 + PERFORMANCE_SCHEMA=797 + TOKUDB=798 + REPEATABLE=799 + COMMITTED=800 + UNCOMMITTED=801 + SERIALIZABLE=802 + GEOMETRYCOLLECTION=803 + GEOMCOLLECTION=804 + GEOMETRY=805 + LINESTRING=806 + MULTILINESTRING=807 + MULTIPOINT=808 + MULTIPOLYGON=809 + POINT=810 + POLYGON=811 + ABS=812 + ACOS=813 + ADDDATE=814 + ADDTIME=815 + AES_DECRYPT=816 + AES_ENCRYPT=817 + AREA=818 + ASBINARY=819 + ASIN=820 + ASTEXT=821 + ASWKB=822 + ASWKT=823 + ASYMMETRIC_DECRYPT=824 + ASYMMETRIC_DERIVE=825 + ASYMMETRIC_ENCRYPT=826 + ASYMMETRIC_SIGN=827 + ASYMMETRIC_VERIFY=828 + ATAN=829 + ATAN2=830 + BENCHMARK=831 + BIN=832 + BIT_COUNT=833 + BIT_LENGTH=834 + BUFFER=835 + CATALOG_NAME=836 + CEIL=837 + CEILING=838 + CENTROID=839 + CHARACTER_LENGTH=840 + CHARSET=841 + CHAR_LENGTH=842 + COERCIBILITY=843 + COLLATION=844 + COMPRESS=845 + CONCAT=846 + CONCAT_WS=847 + CONNECTION_ID=848 + CONV=849 + CONVERT_TZ=850 + COS=851 + COT=852 + CRC32=853 + CREATE_ASYMMETRIC_PRIV_KEY=854 + CREATE_ASYMMETRIC_PUB_KEY=855 + CREATE_DH_PARAMETERS=856 + CREATE_DIGEST=857 + CROSSES=858 + DATEDIFF=859 + DATE_FORMAT=860 + DAYNAME=861 + DAYOFMONTH=862 + DAYOFWEEK=863 + DAYOFYEAR=864 + DECODE=865 + DEGREES=866 + DES_DECRYPT=867 + DES_ENCRYPT=868 + DIMENSION=869 + DISJOINT=870 + ELT=871 + ENCODE=872 + ENCRYPT=873 + ENDPOINT=874 + ENGINE_ATTRIBUTE=875 + ENVELOPE=876 + EQUALS=877 + EXP=878 + EXPORT_SET=879 + EXTERIORRING=880 + EXTRACTVALUE=881 + FIELD=882 + FIND_IN_SET=883 + FLOOR=884 + FORMAT=885 + FOUND_ROWS=886 + FROM_BASE64=887 + FROM_DAYS=888 + FROM_UNIXTIME=889 + GEOMCOLLFROMTEXT=890 + GEOMCOLLFROMWKB=891 + GEOMETRYCOLLECTIONFROMTEXT=892 + GEOMETRYCOLLECTIONFROMWKB=893 + GEOMETRYFROMTEXT=894 + GEOMETRYFROMWKB=895 + GEOMETRYN=896 + GEOMETRYTYPE=897 + GEOMFROMTEXT=898 + GEOMFROMWKB=899 + GET_FORMAT=900 + GET_LOCK=901 + GLENGTH=902 + GREATEST=903 + GTID_SUBSET=904 + GTID_SUBTRACT=905 + HEX=906 + IFNULL=907 + INET6_ATON=908 + INET6_NTOA=909 + INET_ATON=910 + INET_NTOA=911 + INSTR=912 + INTERIORRINGN=913 + INTERSECTS=914 + ISCLOSED=915 + ISEMPTY=916 + ISNULL=917 + ISSIMPLE=918 + IS_FREE_LOCK=919 + IS_IPV4=920 + IS_IPV4_COMPAT=921 + IS_IPV4_MAPPED=922 + IS_IPV6=923 + IS_USED_LOCK=924 + LAST_INSERT_ID=925 + LCASE=926 + LEAST=927 + LENGTH=928 + LINEFROMTEXT=929 + LINEFROMWKB=930 + LINESTRINGFROMTEXT=931 + LINESTRINGFROMWKB=932 + LN=933 + LOAD_FILE=934 + LOCATE=935 + LOG=936 + LOG10=937 + LOG2=938 + LOWER=939 + LPAD=940 + LTRIM=941 + MAKEDATE=942 + MAKETIME=943 + MAKE_SET=944 + MASTER_POS_WAIT=945 + MBRCONTAINS=946 + MBRDISJOINT=947 + MBREQUAL=948 + MBRINTERSECTS=949 + MBROVERLAPS=950 + MBRTOUCHES=951 + MBRWITHIN=952 + MD5=953 + MLINEFROMTEXT=954 + MLINEFROMWKB=955 + MONTHNAME=956 + MPOINTFROMTEXT=957 + MPOINTFROMWKB=958 + MPOLYFROMTEXT=959 + MPOLYFROMWKB=960 + MULTILINESTRINGFROMTEXT=961 + MULTILINESTRINGFROMWKB=962 + MULTIPOINTFROMTEXT=963 + MULTIPOINTFROMWKB=964 + MULTIPOLYGONFROMTEXT=965 + MULTIPOLYGONFROMWKB=966 + NAME_CONST=967 + NULLIF=968 + NUMGEOMETRIES=969 + NUMINTERIORRINGS=970 + NUMPOINTS=971 + OCT=972 + OCTET_LENGTH=973 + ORD=974 + OVERLAPS=975 + PERIOD_ADD=976 + PERIOD_DIFF=977 + PI=978 + POINTFROMTEXT=979 + POINTFROMWKB=980 + POINTN=981 + POLYFROMTEXT=982 + POLYFROMWKB=983 + POLYGONFROMTEXT=984 + POLYGONFROMWKB=985 + POW=986 + POWER=987 + QUOTE=988 + RADIANS=989 + RAND=990 + RANDOM=991 + RANDOM_BYTES=992 + RELEASE_LOCK=993 + REVERSE=994 + ROUND=995 + ROW_COUNT=996 + RPAD=997 + RTRIM=998 + SEC_TO_TIME=999 + SECONDARY_ENGINE_ATTRIBUTE=1000 + SESSION_USER=1001 + SHA=1002 + SHA1=1003 + SHA2=1004 + SCHEMA_NAME=1005 + SIGN=1006 + SIN=1007 + SLEEP=1008 + SOUNDEX=1009 + SQL_THREAD_WAIT_AFTER_GTIDS=1010 + SQRT=1011 + SRID=1012 + STARTPOINT=1013 + STRCMP=1014 + STR_TO_DATE=1015 + ST_AREA=1016 + ST_ASBINARY=1017 + ST_ASTEXT=1018 + ST_ASWKB=1019 + ST_ASWKT=1020 + ST_BUFFER=1021 + ST_CENTROID=1022 + ST_CONTAINS=1023 + ST_CROSSES=1024 + ST_DIFFERENCE=1025 + ST_DIMENSION=1026 + ST_DISJOINT=1027 + ST_DISTANCE=1028 + ST_ENDPOINT=1029 + ST_ENVELOPE=1030 + ST_EQUALS=1031 + ST_EXTERIORRING=1032 + ST_GEOMCOLLFROMTEXT=1033 + ST_GEOMCOLLFROMTXT=1034 + ST_GEOMCOLLFROMWKB=1035 + ST_GEOMETRYCOLLECTIONFROMTEXT=1036 + ST_GEOMETRYCOLLECTIONFROMWKB=1037 + ST_GEOMETRYFROMTEXT=1038 + ST_GEOMETRYFROMWKB=1039 + ST_GEOMETRYN=1040 + ST_GEOMETRYTYPE=1041 + ST_GEOMFROMTEXT=1042 + ST_GEOMFROMWKB=1043 + ST_INTERIORRINGN=1044 + ST_INTERSECTION=1045 + ST_INTERSECTS=1046 + ST_ISCLOSED=1047 + ST_ISEMPTY=1048 + ST_ISSIMPLE=1049 + ST_LINEFROMTEXT=1050 + ST_LINEFROMWKB=1051 + ST_LINESTRINGFROMTEXT=1052 + ST_LINESTRINGFROMWKB=1053 + ST_NUMGEOMETRIES=1054 + ST_NUMINTERIORRING=1055 + ST_NUMINTERIORRINGS=1056 + ST_NUMPOINTS=1057 + ST_OVERLAPS=1058 + ST_POINTFROMTEXT=1059 + ST_POINTFROMWKB=1060 + ST_POINTN=1061 + ST_POLYFROMTEXT=1062 + ST_POLYFROMWKB=1063 + ST_POLYGONFROMTEXT=1064 + ST_POLYGONFROMWKB=1065 + ST_SRID=1066 + ST_STARTPOINT=1067 + ST_SYMDIFFERENCE=1068 + ST_TOUCHES=1069 + ST_UNION=1070 + ST_WITHIN=1071 + ST_X=1072 + ST_Y=1073 + SUBDATE=1074 + SUBSTRING_INDEX=1075 + SUBTIME=1076 + SYSTEM_USER=1077 + TAN=1078 + TIMEDIFF=1079 + TIMESTAMPADD=1080 + TIMESTAMPDIFF=1081 + TIME_FORMAT=1082 + TIME_TO_SEC=1083 + TOUCHES=1084 + TO_BASE64=1085 + TO_DAYS=1086 + TO_SECONDS=1087 + TP_CONNECTION_ADMIN=1088 + UCASE=1089 + UNCOMPRESS=1090 + UNCOMPRESSED_LENGTH=1091 + UNHEX=1092 + UNIX_TIMESTAMP=1093 + UPDATEXML=1094 + UPPER=1095 + UUID=1096 + UUID_SHORT=1097 + VALIDATE_PASSWORD_STRENGTH=1098 + VERSION=1099 + WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS=1100 + WEEKDAY=1101 + WEEKOFYEAR=1102 + WEIGHT_STRING=1103 + WITHIN=1104 + YEARWEEK=1105 + Y_FUNCTION=1106 + X_FUNCTION=1107 + VAR_ASSIGN=1108 + PLUS_ASSIGN=1109 + MINUS_ASSIGN=1110 + MULT_ASSIGN=1111 + DIV_ASSIGN=1112 + MOD_ASSIGN=1113 + AND_ASSIGN=1114 + XOR_ASSIGN=1115 + OR_ASSIGN=1116 + STAR=1117 + DIVIDE=1118 + MODULE=1119 + PLUS=1120 + MINUS=1121 + DIV=1122 + MOD=1123 + EQUAL_SYMBOL=1124 + GREATER_SYMBOL=1125 + LESS_SYMBOL=1126 + EXCLAMATION_SYMBOL=1127 + BIT_NOT_OP=1128 + BIT_OR_OP=1129 + BIT_AND_OP=1130 + BIT_XOR_OP=1131 + DOT=1132 + LR_BRACKET=1133 + RR_BRACKET=1134 + COMMA=1135 + SEMI=1136 + AT_SIGN=1137 + ZERO_DECIMAL=1138 + ONE_DECIMAL=1139 + TWO_DECIMAL=1140 + SINGLE_QUOTE_SYMB=1141 + DOUBLE_QUOTE_SYMB=1142 + REVERSE_QUOTE_SYMB=1143 + COLON_SYMB=1144 + CHARSET_REVERSE_QOUTE_STRING=1145 + FILESIZE_LITERAL=1146 + START_NATIONAL_STRING_LITERAL=1147 + STRING_LITERAL=1148 + DECIMAL_LITERAL=1149 + HEXADECIMAL_LITERAL=1150 + REAL_LITERAL=1151 + NULL_SPEC_LITERAL=1152 + BIT_STRING=1153 + STRING_CHARSET_NAME=1154 + DOT_ID=1155 + ID=1156 + REVERSE_QUOTE_ID=1157 + STRING_USER_NAME=1158 + IP_ADDRESS=1159 + LOCAL_ID=1160 + GLOBAL_ID=1161 + ERROR_RECONGNIGION=1162 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.0") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class RootContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EOF(self): + return self.getToken(MySqlParser.EOF, 0) + + def sqlStatements(self): + return self.getTypedRuleContext(MySqlParser.SqlStatementsContext,0) + + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.MINUS) + else: + return self.getToken(MySqlParser.MINUS, i) + + def getRuleIndex(self): + return MySqlParser.RULE_root + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoot" ): + listener.enterRoot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoot" ): + listener.exitRoot(self) + + + + + def root(self): + + localctx = MySqlParser.RootContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_root) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 715 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4614060972218253952) != 0) or ((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & 2306124490637066243) != 0) or ((((_la - 138)) & ~0x3f) == 0 and ((1 << (_la - 138)) & 19509751503569451) != 0) or ((((_la - 344)) & ~0x3f) == 0 and ((1 << (_la - 344)) & 36099165796700291) != 0) or ((((_la - 432)) & ~0x3f) == 0 and ((1 << (_la - 432)) & 16782337) != 0) or ((((_la - 560)) & ~0x3f) == 0 and ((1 << (_la - 560)) & 17730162917377) != 0) or ((((_la - 629)) & ~0x3f) == 0 and ((1 << (_la - 629)) & 4503604056555585) != 0) or _la==708 or _la==739 or _la==1133 or _la==1136: + self.state = 714 + self.sqlStatements() + + + self.state = 719 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1121: + self.state = 717 + self.match(MySqlParser.MINUS) + self.state = 718 + self.match(MySqlParser.MINUS) + + + self.state = 721 + self.match(MySqlParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SqlStatementsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def sqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.SqlStatementContext,i) + + + def emptyStatement_(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.EmptyStatement_Context) + else: + return self.getTypedRuleContext(MySqlParser.EmptyStatement_Context,i) + + + def SEMI(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SEMI) + else: + return self.getToken(MySqlParser.SEMI, i) + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.MINUS) + else: + return self.getToken(MySqlParser.MINUS, i) + + def getRuleIndex(self): + return MySqlParser.RULE_sqlStatements + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSqlStatements" ): + listener.enterSqlStatements(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSqlStatements" ): + listener.exitSqlStatements(self) + + + + + def sqlStatements(self): + + localctx = MySqlParser.SqlStatementsContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_sqlStatements) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 734 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,5,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 732 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1133]: + self.state = 723 + self.sqlStatement() + self.state = 726 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1121: + self.state = 724 + self.match(MySqlParser.MINUS) + self.state = 725 + self.match(MySqlParser.MINUS) + + + self.state = 729 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,3,self._ctx) + if la_ == 1: + self.state = 728 + self.match(MySqlParser.SEMI) + + + pass + elif token in [1136]: + self.state = 731 + self.emptyStatement_() + pass + else: + raise NoViableAltException(self) + + self.state = 736 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,5,self._ctx) + + self.state = 746 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1133]: + self.state = 737 + self.sqlStatement() + self.state = 743 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,7,self._ctx) + if la_ == 1: + self.state = 740 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1121: + self.state = 738 + self.match(MySqlParser.MINUS) + self.state = 739 + self.match(MySqlParser.MINUS) + + + self.state = 742 + self.match(MySqlParser.SEMI) + + + pass + elif token in [1136]: + self.state = 745 + self.emptyStatement_() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SqlStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ddlStatement(self): + return self.getTypedRuleContext(MySqlParser.DdlStatementContext,0) + + + def dmlStatement(self): + return self.getTypedRuleContext(MySqlParser.DmlStatementContext,0) + + + def transactionStatement(self): + return self.getTypedRuleContext(MySqlParser.TransactionStatementContext,0) + + + def replicationStatement(self): + return self.getTypedRuleContext(MySqlParser.ReplicationStatementContext,0) + + + def preparedStatement(self): + return self.getTypedRuleContext(MySqlParser.PreparedStatementContext,0) + + + def administrationStatement(self): + return self.getTypedRuleContext(MySqlParser.AdministrationStatementContext,0) + + + def utilityStatement(self): + return self.getTypedRuleContext(MySqlParser.UtilityStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_sqlStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSqlStatement" ): + listener.enterSqlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSqlStatement" ): + listener.exitSqlStatement(self) + + + + + def sqlStatement(self): + + localctx = MySqlParser.SqlStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_sqlStatement) + try: + self.state = 755 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,9,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 748 + self.ddlStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 749 + self.dmlStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 750 + self.transactionStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 751 + self.replicationStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 752 + self.preparedStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 753 + self.administrationStatement() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 754 + self.utilityStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EmptyStatement_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEMI(self): + return self.getToken(MySqlParser.SEMI, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_emptyStatement_ + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEmptyStatement_" ): + listener.enterEmptyStatement_(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEmptyStatement_" ): + listener.exitEmptyStatement_(self) + + + + + def emptyStatement_(self): + + localctx = MySqlParser.EmptyStatement_Context(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_emptyStatement_) + try: + self.enterOuterAlt(localctx, 1) + self.state = 757 + self.match(MySqlParser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DdlStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def createDatabase(self): + return self.getTypedRuleContext(MySqlParser.CreateDatabaseContext,0) + + + def createEvent(self): + return self.getTypedRuleContext(MySqlParser.CreateEventContext,0) + + + def createIndex(self): + return self.getTypedRuleContext(MySqlParser.CreateIndexContext,0) + + + def createLogfileGroup(self): + return self.getTypedRuleContext(MySqlParser.CreateLogfileGroupContext,0) + + + def createProcedure(self): + return self.getTypedRuleContext(MySqlParser.CreateProcedureContext,0) + + + def createFunction(self): + return self.getTypedRuleContext(MySqlParser.CreateFunctionContext,0) + + + def createServer(self): + return self.getTypedRuleContext(MySqlParser.CreateServerContext,0) + + + def createTable(self): + return self.getTypedRuleContext(MySqlParser.CreateTableContext,0) + + + def createTablespaceInnodb(self): + return self.getTypedRuleContext(MySqlParser.CreateTablespaceInnodbContext,0) + + + def createTablespaceNdb(self): + return self.getTypedRuleContext(MySqlParser.CreateTablespaceNdbContext,0) + + + def createTrigger(self): + return self.getTypedRuleContext(MySqlParser.CreateTriggerContext,0) + + + def createView(self): + return self.getTypedRuleContext(MySqlParser.CreateViewContext,0) + + + def createRole(self): + return self.getTypedRuleContext(MySqlParser.CreateRoleContext,0) + + + def alterDatabase(self): + return self.getTypedRuleContext(MySqlParser.AlterDatabaseContext,0) + + + def alterEvent(self): + return self.getTypedRuleContext(MySqlParser.AlterEventContext,0) + + + def alterFunction(self): + return self.getTypedRuleContext(MySqlParser.AlterFunctionContext,0) + + + def alterInstance(self): + return self.getTypedRuleContext(MySqlParser.AlterInstanceContext,0) + + + def alterLogfileGroup(self): + return self.getTypedRuleContext(MySqlParser.AlterLogfileGroupContext,0) + + + def alterProcedure(self): + return self.getTypedRuleContext(MySqlParser.AlterProcedureContext,0) + + + def alterServer(self): + return self.getTypedRuleContext(MySqlParser.AlterServerContext,0) + + + def alterTable(self): + return self.getTypedRuleContext(MySqlParser.AlterTableContext,0) + + + def alterTablespace(self): + return self.getTypedRuleContext(MySqlParser.AlterTablespaceContext,0) + + + def alterView(self): + return self.getTypedRuleContext(MySqlParser.AlterViewContext,0) + + + def dropDatabase(self): + return self.getTypedRuleContext(MySqlParser.DropDatabaseContext,0) + + + def dropEvent(self): + return self.getTypedRuleContext(MySqlParser.DropEventContext,0) + + + def dropIndex(self): + return self.getTypedRuleContext(MySqlParser.DropIndexContext,0) + + + def dropLogfileGroup(self): + return self.getTypedRuleContext(MySqlParser.DropLogfileGroupContext,0) + + + def dropProcedure(self): + return self.getTypedRuleContext(MySqlParser.DropProcedureContext,0) + + + def dropFunction(self): + return self.getTypedRuleContext(MySqlParser.DropFunctionContext,0) + + + def dropServer(self): + return self.getTypedRuleContext(MySqlParser.DropServerContext,0) + + + def dropTable(self): + return self.getTypedRuleContext(MySqlParser.DropTableContext,0) + + + def dropTablespace(self): + return self.getTypedRuleContext(MySqlParser.DropTablespaceContext,0) + + + def dropTrigger(self): + return self.getTypedRuleContext(MySqlParser.DropTriggerContext,0) + + + def dropView(self): + return self.getTypedRuleContext(MySqlParser.DropViewContext,0) + + + def dropRole(self): + return self.getTypedRuleContext(MySqlParser.DropRoleContext,0) + + + def setRole(self): + return self.getTypedRuleContext(MySqlParser.SetRoleContext,0) + + + def renameTable(self): + return self.getTypedRuleContext(MySqlParser.RenameTableContext,0) + + + def truncateTable(self): + return self.getTypedRuleContext(MySqlParser.TruncateTableContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_ddlStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDdlStatement" ): + listener.enterDdlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDdlStatement" ): + listener.exitDdlStatement(self) + + + + + def ddlStatement(self): + + localctx = MySqlParser.DdlStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_ddlStatement) + try: + self.state = 797 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,10,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 759 + self.createDatabase() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 760 + self.createEvent() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 761 + self.createIndex() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 762 + self.createLogfileGroup() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 763 + self.createProcedure() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 764 + self.createFunction() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 765 + self.createServer() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 766 + self.createTable() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 767 + self.createTablespaceInnodb() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 768 + self.createTablespaceNdb() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 769 + self.createTrigger() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 770 + self.createView() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 771 + self.createRole() + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 772 + self.alterDatabase() + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 773 + self.alterEvent() + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 774 + self.alterFunction() + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 775 + self.alterInstance() + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 776 + self.alterLogfileGroup() + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 777 + self.alterProcedure() + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 778 + self.alterServer() + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 779 + self.alterTable() + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 780 + self.alterTablespace() + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 781 + self.alterView() + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 782 + self.dropDatabase() + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 783 + self.dropEvent() + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 784 + self.dropIndex() + pass + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 785 + self.dropLogfileGroup() + pass + + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 786 + self.dropProcedure() + pass + + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 787 + self.dropFunction() + pass + + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 788 + self.dropServer() + pass + + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 789 + self.dropTable() + pass + + elif la_ == 32: + self.enterOuterAlt(localctx, 32) + self.state = 790 + self.dropTablespace() + pass + + elif la_ == 33: + self.enterOuterAlt(localctx, 33) + self.state = 791 + self.dropTrigger() + pass + + elif la_ == 34: + self.enterOuterAlt(localctx, 34) + self.state = 792 + self.dropView() + pass + + elif la_ == 35: + self.enterOuterAlt(localctx, 35) + self.state = 793 + self.dropRole() + pass + + elif la_ == 36: + self.enterOuterAlt(localctx, 36) + self.state = 794 + self.setRole() + pass + + elif la_ == 37: + self.enterOuterAlt(localctx, 37) + self.state = 795 + self.renameTable() + pass + + elif la_ == 38: + self.enterOuterAlt(localctx, 38) + self.state = 796 + self.truncateTable() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DmlStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + + def insertStatement(self): + return self.getTypedRuleContext(MySqlParser.InsertStatementContext,0) + + + def updateStatement(self): + return self.getTypedRuleContext(MySqlParser.UpdateStatementContext,0) + + + def deleteStatement(self): + return self.getTypedRuleContext(MySqlParser.DeleteStatementContext,0) + + + def replaceStatement(self): + return self.getTypedRuleContext(MySqlParser.ReplaceStatementContext,0) + + + def callStatement(self): + return self.getTypedRuleContext(MySqlParser.CallStatementContext,0) + + + def loadDataStatement(self): + return self.getTypedRuleContext(MySqlParser.LoadDataStatementContext,0) + + + def loadXmlStatement(self): + return self.getTypedRuleContext(MySqlParser.LoadXmlStatementContext,0) + + + def doStatement(self): + return self.getTypedRuleContext(MySqlParser.DoStatementContext,0) + + + def handlerStatement(self): + return self.getTypedRuleContext(MySqlParser.HandlerStatementContext,0) + + + def valuesStatement(self): + return self.getTypedRuleContext(MySqlParser.ValuesStatementContext,0) + + + def withStatement(self): + return self.getTypedRuleContext(MySqlParser.WithStatementContext,0) + + + def tableStatement(self): + return self.getTypedRuleContext(MySqlParser.TableStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dmlStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDmlStatement" ): + listener.enterDmlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDmlStatement" ): + listener.exitDmlStatement(self) + + + + + def dmlStatement(self): + + localctx = MySqlParser.DmlStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_dmlStatement) + try: + self.state = 812 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 799 + self.selectStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 800 + self.insertStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 801 + self.updateStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 802 + self.deleteStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 803 + self.replaceStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 804 + self.callStatement() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 805 + self.loadDataStatement() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 806 + self.loadXmlStatement() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 807 + self.doStatement() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 808 + self.handlerStatement() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 809 + self.valuesStatement() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 810 + self.withStatement() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 811 + self.tableStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TransactionStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def startTransaction(self): + return self.getTypedRuleContext(MySqlParser.StartTransactionContext,0) + + + def beginWork(self): + return self.getTypedRuleContext(MySqlParser.BeginWorkContext,0) + + + def commitWork(self): + return self.getTypedRuleContext(MySqlParser.CommitWorkContext,0) + + + def rollbackWork(self): + return self.getTypedRuleContext(MySqlParser.RollbackWorkContext,0) + + + def savepointStatement(self): + return self.getTypedRuleContext(MySqlParser.SavepointStatementContext,0) + + + def rollbackStatement(self): + return self.getTypedRuleContext(MySqlParser.RollbackStatementContext,0) + + + def releaseStatement(self): + return self.getTypedRuleContext(MySqlParser.ReleaseStatementContext,0) + + + def lockTables(self): + return self.getTypedRuleContext(MySqlParser.LockTablesContext,0) + + + def unlockTables(self): + return self.getTypedRuleContext(MySqlParser.UnlockTablesContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_transactionStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransactionStatement" ): + listener.enterTransactionStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransactionStatement" ): + listener.exitTransactionStatement(self) + + + + + def transactionStatement(self): + + localctx = MySqlParser.TransactionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_transactionStatement) + try: + self.state = 823 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,12,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 814 + self.startTransaction() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 815 + self.beginWork() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 816 + self.commitWork() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 817 + self.rollbackWork() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 818 + self.savepointStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 819 + self.rollbackStatement() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 820 + self.releaseStatement() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 821 + self.lockTables() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 822 + self.unlockTables() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReplicationStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def changeMaster(self): + return self.getTypedRuleContext(MySqlParser.ChangeMasterContext,0) + + + def changeReplicationFilter(self): + return self.getTypedRuleContext(MySqlParser.ChangeReplicationFilterContext,0) + + + def purgeBinaryLogs(self): + return self.getTypedRuleContext(MySqlParser.PurgeBinaryLogsContext,0) + + + def resetMaster(self): + return self.getTypedRuleContext(MySqlParser.ResetMasterContext,0) + + + def resetSlave(self): + return self.getTypedRuleContext(MySqlParser.ResetSlaveContext,0) + + + def startSlave(self): + return self.getTypedRuleContext(MySqlParser.StartSlaveContext,0) + + + def stopSlave(self): + return self.getTypedRuleContext(MySqlParser.StopSlaveContext,0) + + + def startGroupReplication(self): + return self.getTypedRuleContext(MySqlParser.StartGroupReplicationContext,0) + + + def stopGroupReplication(self): + return self.getTypedRuleContext(MySqlParser.StopGroupReplicationContext,0) + + + def xaStartTransaction(self): + return self.getTypedRuleContext(MySqlParser.XaStartTransactionContext,0) + + + def xaEndTransaction(self): + return self.getTypedRuleContext(MySqlParser.XaEndTransactionContext,0) + + + def xaPrepareStatement(self): + return self.getTypedRuleContext(MySqlParser.XaPrepareStatementContext,0) + + + def xaCommitWork(self): + return self.getTypedRuleContext(MySqlParser.XaCommitWorkContext,0) + + + def xaRollbackWork(self): + return self.getTypedRuleContext(MySqlParser.XaRollbackWorkContext,0) + + + def xaRecoverWork(self): + return self.getTypedRuleContext(MySqlParser.XaRecoverWorkContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_replicationStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReplicationStatement" ): + listener.enterReplicationStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReplicationStatement" ): + listener.exitReplicationStatement(self) + + + + + def replicationStatement(self): + + localctx = MySqlParser.ReplicationStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_replicationStatement) + try: + self.state = 840 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,13,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 825 + self.changeMaster() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 826 + self.changeReplicationFilter() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 827 + self.purgeBinaryLogs() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 828 + self.resetMaster() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 829 + self.resetSlave() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 830 + self.startSlave() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 831 + self.stopSlave() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 832 + self.startGroupReplication() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 833 + self.stopGroupReplication() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 834 + self.xaStartTransaction() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 835 + self.xaEndTransaction() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 836 + self.xaPrepareStatement() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 837 + self.xaCommitWork() + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 838 + self.xaRollbackWork() + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 839 + self.xaRecoverWork() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PreparedStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def prepareStatement(self): + return self.getTypedRuleContext(MySqlParser.PrepareStatementContext,0) + + + def executeStatement(self): + return self.getTypedRuleContext(MySqlParser.ExecuteStatementContext,0) + + + def deallocatePrepare(self): + return self.getTypedRuleContext(MySqlParser.DeallocatePrepareContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_preparedStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreparedStatement" ): + listener.enterPreparedStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreparedStatement" ): + listener.exitPreparedStatement(self) + + + + + def preparedStatement(self): + + localctx = MySqlParser.PreparedStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_preparedStatement) + try: + self.state = 845 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [560]: + self.enterOuterAlt(localctx, 1) + self.state = 842 + self.prepareStatement() + pass + elif token in [708]: + self.enterOuterAlt(localctx, 2) + self.state = 843 + self.executeStatement() + pass + elif token in [51, 390]: + self.enterOuterAlt(localctx, 3) + self.state = 844 + self.deallocatePrepare() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CompoundStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def blockStatement(self): + return self.getTypedRuleContext(MySqlParser.BlockStatementContext,0) + + + def caseStatement(self): + return self.getTypedRuleContext(MySqlParser.CaseStatementContext,0) + + + def ifStatement(self): + return self.getTypedRuleContext(MySqlParser.IfStatementContext,0) + + + def leaveStatement(self): + return self.getTypedRuleContext(MySqlParser.LeaveStatementContext,0) + + + def loopStatement(self): + return self.getTypedRuleContext(MySqlParser.LoopStatementContext,0) + + + def repeatStatement(self): + return self.getTypedRuleContext(MySqlParser.RepeatStatementContext,0) + + + def whileStatement(self): + return self.getTypedRuleContext(MySqlParser.WhileStatementContext,0) + + + def iterateStatement(self): + return self.getTypedRuleContext(MySqlParser.IterateStatementContext,0) + + + def returnStatement(self): + return self.getTypedRuleContext(MySqlParser.ReturnStatementContext,0) + + + def cursorStatement(self): + return self.getTypedRuleContext(MySqlParser.CursorStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_compoundStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCompoundStatement" ): + listener.enterCompoundStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCompoundStatement" ): + listener.exitCompoundStatement(self) + + + + + def compoundStatement(self): + + localctx = MySqlParser.CompoundStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_compoundStatement) + try: + self.state = 857 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,15,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 847 + self.blockStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 848 + self.caseStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 849 + self.ifStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 850 + self.leaveStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 851 + self.loopStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 852 + self.repeatStatement() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 853 + self.whileStatement() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 854 + self.iterateStatement() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 855 + self.returnStatement() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 856 + self.cursorStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AdministrationStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def alterUser(self): + return self.getTypedRuleContext(MySqlParser.AlterUserContext,0) + + + def createUser(self): + return self.getTypedRuleContext(MySqlParser.CreateUserContext,0) + + + def dropUser(self): + return self.getTypedRuleContext(MySqlParser.DropUserContext,0) + + + def grantStatement(self): + return self.getTypedRuleContext(MySqlParser.GrantStatementContext,0) + + + def grantProxy(self): + return self.getTypedRuleContext(MySqlParser.GrantProxyContext,0) + + + def renameUser(self): + return self.getTypedRuleContext(MySqlParser.RenameUserContext,0) + + + def revokeStatement(self): + return self.getTypedRuleContext(MySqlParser.RevokeStatementContext,0) + + + def revokeProxy(self): + return self.getTypedRuleContext(MySqlParser.RevokeProxyContext,0) + + + def analyzeTable(self): + return self.getTypedRuleContext(MySqlParser.AnalyzeTableContext,0) + + + def checkTable(self): + return self.getTypedRuleContext(MySqlParser.CheckTableContext,0) + + + def checksumTable(self): + return self.getTypedRuleContext(MySqlParser.ChecksumTableContext,0) + + + def optimizeTable(self): + return self.getTypedRuleContext(MySqlParser.OptimizeTableContext,0) + + + def repairTable(self): + return self.getTypedRuleContext(MySqlParser.RepairTableContext,0) + + + def createUdfunction(self): + return self.getTypedRuleContext(MySqlParser.CreateUdfunctionContext,0) + + + def installPlugin(self): + return self.getTypedRuleContext(MySqlParser.InstallPluginContext,0) + + + def uninstallPlugin(self): + return self.getTypedRuleContext(MySqlParser.UninstallPluginContext,0) + + + def setStatement(self): + return self.getTypedRuleContext(MySqlParser.SetStatementContext,0) + + + def showStatement(self): + return self.getTypedRuleContext(MySqlParser.ShowStatementContext,0) + + + def binlogStatement(self): + return self.getTypedRuleContext(MySqlParser.BinlogStatementContext,0) + + + def cacheIndexStatement(self): + return self.getTypedRuleContext(MySqlParser.CacheIndexStatementContext,0) + + + def flushStatement(self): + return self.getTypedRuleContext(MySqlParser.FlushStatementContext,0) + + + def killStatement(self): + return self.getTypedRuleContext(MySqlParser.KillStatementContext,0) + + + def loadIndexIntoCache(self): + return self.getTypedRuleContext(MySqlParser.LoadIndexIntoCacheContext,0) + + + def resetStatement(self): + return self.getTypedRuleContext(MySqlParser.ResetStatementContext,0) + + + def shutdownStatement(self): + return self.getTypedRuleContext(MySqlParser.ShutdownStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_administrationStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAdministrationStatement" ): + listener.enterAdministrationStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAdministrationStatement" ): + listener.exitAdministrationStatement(self) + + + + + def administrationStatement(self): + + localctx = MySqlParser.AdministrationStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_administrationStatement) + try: + self.state = 884 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,16,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 859 + self.alterUser() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 860 + self.createUser() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 861 + self.dropUser() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 862 + self.grantStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 863 + self.grantProxy() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 864 + self.renameUser() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 865 + self.revokeStatement() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 866 + self.revokeProxy() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 867 + self.analyzeTable() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 868 + self.checkTable() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 869 + self.checksumTable() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 870 + self.optimizeTable() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 871 + self.repairTable() + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 872 + self.createUdfunction() + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 873 + self.installPlugin() + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 874 + self.uninstallPlugin() + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 875 + self.setStatement() + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 876 + self.showStatement() + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 877 + self.binlogStatement() + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 878 + self.cacheIndexStatement() + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 879 + self.flushStatement() + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 880 + self.killStatement() + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 881 + self.loadIndexIntoCache() + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 882 + self.resetStatement() + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 883 + self.shutdownStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UtilityStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def simpleDescribeStatement(self): + return self.getTypedRuleContext(MySqlParser.SimpleDescribeStatementContext,0) + + + def fullDescribeStatement(self): + return self.getTypedRuleContext(MySqlParser.FullDescribeStatementContext,0) + + + def helpStatement(self): + return self.getTypedRuleContext(MySqlParser.HelpStatementContext,0) + + + def useStatement(self): + return self.getTypedRuleContext(MySqlParser.UseStatementContext,0) + + + def signalStatement(self): + return self.getTypedRuleContext(MySqlParser.SignalStatementContext,0) + + + def resignalStatement(self): + return self.getTypedRuleContext(MySqlParser.ResignalStatementContext,0) + + + def diagnosticsStatement(self): + return self.getTypedRuleContext(MySqlParser.DiagnosticsStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_utilityStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUtilityStatement" ): + listener.enterUtilityStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUtilityStatement" ): + listener.exitUtilityStatement(self) + + + + + def utilityStatement(self): + + localctx = MySqlParser.UtilityStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_utilityStatement) + try: + self.state = 893 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,17,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 886 + self.simpleDescribeStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 887 + self.fullDescribeStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 888 + self.helpStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 889 + self.useStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 890 + self.signalStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 891 + self.resignalStatement() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 892 + self.diagnosticsStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateDatabaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.dbFormat = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def createDatabaseOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CreateDatabaseOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.CreateDatabaseOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_createDatabase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateDatabase" ): + listener.enterCreateDatabase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateDatabase" ): + listener.exitCreateDatabase(self) + + + + + def createDatabase(self): + + localctx = MySqlParser.CreateDatabaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_createDatabase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 895 + self.match(MySqlParser.CREATE) + self.state = 896 + localctx.dbFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==39 or _la==150): + localctx.dbFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 898 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,18,self._ctx) + if la_ == 1: + self.state = 897 + self.ifNotExists() + + + self.state = 900 + self.uid() + self.state = 904 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 4398214283264) != 0) or _la==134 or _la==222 or _la==405 or _la==841: + self.state = 901 + self.createDatabaseOption() + self.state = 906 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateEventContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + + def SCHEDULE(self): + return self.getToken(MySqlParser.SCHEDULE, 0) + + def scheduleExpression(self): + return self.getTypedRuleContext(MySqlParser.ScheduleExpressionContext,0) + + + def DO(self): + return self.getToken(MySqlParser.DO, 0) + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def COMPLETION(self): + return self.getToken(MySqlParser.COMPLETION, 0) + + def PRESERVE(self): + return self.getToken(MySqlParser.PRESERVE, 0) + + def enableType(self): + return self.getTypedRuleContext(MySqlParser.EnableTypeContext,0) + + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_createEvent + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateEvent" ): + listener.enterCreateEvent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateEvent" ): + listener.exitCreateEvent(self) + + + + + def createEvent(self): + + localctx = MySqlParser.CreateEventContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_createEvent) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 907 + self.match(MySqlParser.CREATE) + self.state = 909 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 908 + self.ownerStatement() + + + self.state = 911 + self.match(MySqlParser.EVENT) + self.state = 913 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + if la_ == 1: + self.state = 912 + self.ifNotExists() + + + self.state = 915 + self.fullId() + self.state = 916 + self.match(MySqlParser.ON) + self.state = 917 + self.match(MySqlParser.SCHEDULE) + self.state = 918 + self.scheduleExpression() + self.state = 925 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==118: + self.state = 919 + self.match(MySqlParser.ON) + self.state = 920 + self.match(MySqlParser.COMPLETION) + self.state = 922 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 921 + self.match(MySqlParser.NOT) + + + self.state = 924 + self.match(MySqlParser.PRESERVE) + + + self.state = 928 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==396 or _la==403: + self.state = 927 + self.enableType() + + + self.state = 932 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==368: + self.state = 930 + self.match(MySqlParser.COMMENT) + self.state = 931 + self.match(MySqlParser.STRING_LITERAL) + + + self.state = 934 + self.match(MySqlParser.DO) + self.state = 935 + self.routineBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateIndexContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.intimeAction = None # Token + self.indexCategory = None # Token + self.algType = None # Token + self.lockType = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + + def ALGORITHM(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ALGORITHM) + else: + return self.getToken(MySqlParser.ALGORITHM, i) + + def LOCK(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LOCK) + else: + return self.getToken(MySqlParser.LOCK, i) + + def ONLINE(self): + return self.getToken(MySqlParser.ONLINE, 0) + + def OFFLINE(self): + return self.getToken(MySqlParser.OFFLINE, 0) + + def UNIQUE(self): + return self.getToken(MySqlParser.UNIQUE, 0) + + def FULLTEXT(self): + return self.getToken(MySqlParser.FULLTEXT, 0) + + def SPATIAL(self): + return self.getToken(MySqlParser.SPATIAL, 0) + + def DEFAULT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.DEFAULT) + else: + return self.getToken(MySqlParser.DEFAULT, i) + + def INPLACE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.INPLACE) + else: + return self.getToken(MySqlParser.INPLACE, i) + + def COPY(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COPY) + else: + return self.getToken(MySqlParser.COPY, i) + + def NONE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.NONE) + else: + return self.getToken(MySqlParser.NONE, i) + + def SHARED(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SHARED) + else: + return self.getToken(MySqlParser.SHARED, i) + + def EXCLUSIVE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EXCLUSIVE) + else: + return self.getToken(MySqlParser.EXCLUSIVE, i) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def getRuleIndex(self): + return MySqlParser.RULE_createIndex + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateIndex" ): + listener.enterCreateIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateIndex" ): + listener.exitCreateIndex(self) + + + + + def createIndex(self): + + localctx = MySqlParser.CreateIndexContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_createIndex) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 937 + self.match(MySqlParser.CREATE) + self.state = 939 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==531 or _la==537: + self.state = 938 + localctx.intimeAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==531 or _la==537): + localctx.intimeAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 942 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==69 or _la==159 or _la==181: + self.state = 941 + localctx.indexCategory = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==69 or _la==159 or _la==181): + localctx.indexCategory = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 944 + self.match(MySqlParser.INDEX) + self.state = 945 + self.uid() + self.state = 947 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 946 + self.indexType() + + + self.state = 949 + self.match(MySqlParser.ON) + self.state = 950 + self.tableName() + self.state = 951 + self.indexColumnNames() + self.state = 955 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,29,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 952 + self.indexOption() + self.state = 957 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,29,self._ctx) + + self.state = 970 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,33,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 968 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [336]: + self.state = 958 + self.match(MySqlParser.ALGORITHM) + self.state = 960 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 959 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 962 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==384 or _la==454): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [103]: + self.state = 963 + self.match(MySqlParser.LOCK) + self.state = 965 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 964 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 967 + localctx.lockType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==419 or _la==529 or _la==611): + localctx.lockType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + else: + raise NoViableAltException(self) + + self.state = 972 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,33,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateLogfileGroupContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.undoFile = None # Token + self.initSize = None # FileSizeLiteralContext + self.undoSize = None # FileSizeLiteralContext + self.redoSize = None # FileSizeLiteralContext + self.comment = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def LOGFILE(self): + return self.getToken(MySqlParser.LOGFILE, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + + def UNDOFILE(self): + return self.getToken(MySqlParser.UNDOFILE, 0) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def INITIAL_SIZE(self): + return self.getToken(MySqlParser.INITIAL_SIZE, 0) + + def UNDO_BUFFER_SIZE(self): + return self.getToken(MySqlParser.UNDO_BUFFER_SIZE, 0) + + def REDO_BUFFER_SIZE(self): + return self.getToken(MySqlParser.REDO_BUFFER_SIZE, 0) + + def NODEGROUP(self): + return self.getToken(MySqlParser.NODEGROUP, 0) + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def fileSizeLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FileSizeLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_createLogfileGroup + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateLogfileGroup" ): + listener.enterCreateLogfileGroup(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateLogfileGroup" ): + listener.exitCreateLogfileGroup(self) + + + + + def createLogfileGroup(self): + + localctx = MySqlParser.CreateLogfileGroupContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_createLogfileGroup) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 973 + self.match(MySqlParser.CREATE) + self.state = 974 + self.match(MySqlParser.LOGFILE) + self.state = 975 + self.match(MySqlParser.GROUP) + self.state = 976 + self.uid() + self.state = 977 + self.match(MySqlParser.ADD) + self.state = 978 + self.match(MySqlParser.UNDOFILE) + self.state = 979 + localctx.undoFile = self.match(MySqlParser.STRING_LITERAL) + self.state = 985 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==453: + self.state = 980 + self.match(MySqlParser.INITIAL_SIZE) + self.state = 982 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 981 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 984 + localctx.initSize = self.fileSizeLiteral() + + + self.state = 992 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==660: + self.state = 987 + self.match(MySqlParser.UNDO_BUFFER_SIZE) + self.state = 989 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 988 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 991 + localctx.undoSize = self.fileSizeLiteral() + + + self.state = 999 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==572: + self.state = 994 + self.match(MySqlParser.REDO_BUFFER_SIZE) + self.state = 996 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 995 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 998 + localctx.redoSize = self.fileSizeLiteral() + + + self.state = 1006 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==528: + self.state = 1001 + self.match(MySqlParser.NODEGROUP) + self.state = 1003 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1002 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1005 + self.uid() + + + self.state = 1009 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==674: + self.state = 1008 + self.match(MySqlParser.WAIT) + + + self.state = 1016 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==368: + self.state = 1011 + self.match(MySqlParser.COMMENT) + self.state = 1013 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1012 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1015 + localctx.comment = self.match(MySqlParser.STRING_LITERAL) + + + self.state = 1018 + self.match(MySqlParser.ENGINE) + self.state = 1020 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1019 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1022 + self.engineName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateProcedureContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def procedureParameter(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureParameterContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureParameterContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def routineOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoutineOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.RoutineOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_createProcedure + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateProcedure" ): + listener.enterCreateProcedure(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateProcedure" ): + listener.exitCreateProcedure(self) + + + + + def createProcedure(self): + + localctx = MySqlParser.CreateProcedureContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_createProcedure) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1024 + self.match(MySqlParser.CREATE) + self.state = 1026 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 1025 + self.ownerStatement() + + + self.state = 1028 + self.match(MySqlParser.PROCEDURE) + self.state = 1029 + self.fullId() + self.state = 1030 + self.match(MySqlParser.LR_BRACKET) + self.state = 1032 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 151169654698547409) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1031 + self.procedureParameter() + + + self.state = 1038 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1034 + self.match(MySqlParser.COMMA) + self.state = 1035 + self.procedureParameter() + self.state = 1040 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1041 + self.match(MySqlParser.RR_BRACKET) + self.state = 1045 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,49,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1042 + self.routineOption() + self.state = 1047 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,49,self._ctx) + + self.state = 1048 + self.routineBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def RETURNS(self): + return self.getToken(MySqlParser.RETURNS, 0) + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def returnStatement(self): + return self.getTypedRuleContext(MySqlParser.ReturnStatementContext,0) + + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def AGGREGATE(self): + return self.getToken(MySqlParser.AGGREGATE, 0) + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def functionParameter(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FunctionParameterContext) + else: + return self.getTypedRuleContext(MySqlParser.FunctionParameterContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def routineOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoutineOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.RoutineOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_createFunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateFunction" ): + listener.enterCreateFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateFunction" ): + listener.exitCreateFunction(self) + + + + + def createFunction(self): + + localctx = MySqlParser.CreateFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_createFunction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1050 + self.match(MySqlParser.CREATE) + self.state = 1052 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 1051 + self.ownerStatement() + + + self.state = 1055 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==335: + self.state = 1054 + self.match(MySqlParser.AGGREGATE) + + + self.state = 1057 + self.match(MySqlParser.FUNCTION) + self.state = 1059 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,52,self._ctx) + if la_ == 1: + self.state = 1058 + self.ifNotExists() + + + self.state = 1061 + self.fullId() + self.state = 1062 + self.match(MySqlParser.LR_BRACKET) + self.state = 1064 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1063 + self.functionParameter() + + + self.state = 1070 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1066 + self.match(MySqlParser.COMMA) + self.state = 1067 + self.functionParameter() + self.state = 1072 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1073 + self.match(MySqlParser.RR_BRACKET) + self.state = 1074 + self.match(MySqlParser.RETURNS) + self.state = 1075 + self.dataType() + self.state = 1079 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,55,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1076 + self.routineOption() + self.state = 1081 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,55,self._ctx) + + self.state = 1084 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [7, 9, 11, 14, 18, 20, 24, 26, 29, 33, 35, 37, 39, 42, 44, 45, 46, 48, 51, 55, 57, 59, 62, 71, 72, 73, 77, 79, 85, 93, 94, 97, 102, 103, 117, 119, 121, 124, 130, 132, 138, 139, 140, 141, 143, 147, 148, 150, 152, 153, 155, 156, 158, 168, 172, 182, 184, 186, 188, 192, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1133, 1145, 1148, 1156]: + self.state = 1082 + self.routineBody() + pass + elif token in [146]: + self.state = 1083 + self.returnStatement() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateRoleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def roleName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoleNameContext) + else: + return self.getTypedRuleContext(MySqlParser.RoleNameContext,i) + + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_createRole + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateRole" ): + listener.enterCreateRole(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateRole" ): + listener.exitCreateRole(self) + + + + + def createRole(self): + + localctx = MySqlParser.CreateRoleContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_createRole) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1086 + self.match(MySqlParser.CREATE) + self.state = 1087 + self.match(MySqlParser.ROLE) + self.state = 1089 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,57,self._ctx) + if la_ == 1: + self.state = 1088 + self.ifNotExists() + + + self.state = 1091 + self.roleName() + self.state = 1096 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1092 + self.match(MySqlParser.COMMA) + self.state = 1093 + self.roleName() + self.state = 1098 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateServerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.wrapperName = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def SERVER(self): + return self.getToken(MySqlParser.SERVER, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def FOREIGN(self): + return self.getToken(MySqlParser.FOREIGN, 0) + + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + + def WRAPPER(self): + return self.getToken(MySqlParser.WRAPPER, 0) + + def OPTIONS(self): + return self.getToken(MySqlParser.OPTIONS, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def serverOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ServerOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.ServerOptionContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def MYSQL(self): + return self.getToken(MySqlParser.MYSQL, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_createServer + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateServer" ): + listener.enterCreateServer(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateServer" ): + listener.exitCreateServer(self) + + + + + def createServer(self): + + localctx = MySqlParser.CreateServerContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_createServer) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1099 + self.match(MySqlParser.CREATE) + self.state = 1100 + self.match(MySqlParser.SERVER) + self.state = 1101 + self.uid() + self.state = 1102 + self.match(MySqlParser.FOREIGN) + self.state = 1103 + self.match(MySqlParser.DATA) + self.state = 1104 + self.match(MySqlParser.WRAPPER) + self.state = 1105 + localctx.wrapperName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==514 or _la==1148): + localctx.wrapperName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1106 + self.match(MySqlParser.OPTIONS) + self.state = 1107 + self.match(MySqlParser.LR_BRACKET) + self.state = 1108 + self.serverOption() + self.state = 1113 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1109 + self.match(MySqlParser.COMMA) + self.state = 1110 + self.serverOption() + self.state = 1115 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1116 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_createTable + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class CopyCreateTableContext(CreateTableContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateTableContext + super().__init__(parser) + self.parenthesisTable = None # TableNameContext + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def tableName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableNameContext) + else: + return self.getTypedRuleContext(MySqlParser.TableNameContext,i) + + def LIKE(self): + return self.getToken(MySqlParser.LIKE, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCopyCreateTable" ): + listener.enterCopyCreateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCopyCreateTable" ): + listener.exitCopyCreateTable(self) + + + class ColumnCreateTableContext(CreateTableContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateTableContext + super().__init__(parser) + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def createDefinitions(self): + return self.getTypedRuleContext(MySqlParser.CreateDefinitionsContext,0) + + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + def tableOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TableOptionContext,i) + + def partitionDefinitions(self): + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionsContext,0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColumnCreateTable" ): + listener.enterColumnCreateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColumnCreateTable" ): + listener.exitColumnCreateTable(self) + + + class QueryCreateTableContext(CreateTableContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateTableContext + super().__init__(parser) + self.keyViolate = None # Token + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + def createDefinitions(self): + return self.getTypedRuleContext(MySqlParser.CreateDefinitionsContext,0) + + def tableOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TableOptionContext,i) + + def partitionDefinitions(self): + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionsContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryCreateTable" ): + listener.enterQueryCreateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryCreateTable" ): + listener.exitQueryCreateTable(self) + + + + def createTable(self): + + localctx = MySqlParser.CreateTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_createTable) + self._la = 0 # Token type + try: + self.state = 1196 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,78,self._ctx) + if la_ == 1: + localctx = MySqlParser.CopyCreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1118 + self.match(MySqlParser.CREATE) + self.state = 1120 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==649: + self.state = 1119 + self.match(MySqlParser.TEMPORARY) + + + self.state = 1122 + self.match(MySqlParser.TABLE) + self.state = 1124 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,61,self._ctx) + if la_ == 1: + self.state = 1123 + self.ifNotExists() + + + self.state = 1126 + self.tableName() + self.state = 1134 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [98]: + self.state = 1127 + self.match(MySqlParser.LIKE) + self.state = 1128 + self.tableName() + pass + elif token in [1133]: + self.state = 1129 + self.match(MySqlParser.LR_BRACKET) + self.state = 1130 + self.match(MySqlParser.LIKE) + self.state = 1131 + localctx.parenthesisTable = self.tableName() + self.state = 1132 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + localctx = MySqlParser.QueryCreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1136 + self.match(MySqlParser.CREATE) + self.state = 1138 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==649: + self.state = 1137 + self.match(MySqlParser.TEMPORARY) + + + self.state = 1140 + self.match(MySqlParser.TABLE) + self.state = 1142 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,64,self._ctx) + if la_ == 1: + self.state = 1141 + self.ifNotExists() + + + self.state = 1144 + self.tableName() + self.state = 1146 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,65,self._ctx) + if la_ == 1: + self.state = 1145 + self.createDefinitions() + + + self.state = 1158 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 25)) & ~0x3f) == 0 and ((1 << (_la - 25)) & 72057594038059013) != 0) or _la==180 or _la==222 or ((((_la - 341)) & ~0x3f) == 0 and ((1 << (_la - 341)) & 4644375904747527) != 0) or ((((_la - 405)) & ~0x3f) == 0 and ((1 << (_la - 405)) & 4612811918334230547) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 2366149022974977) != 0) or ((((_la - 602)) & ~0x3f) == 0 and ((1 << (_la - 602)) & 4609173815820289) != 0) or _la==841 or _la==875 or _la==1000 or _la==1148: + self.state = 1148 + self.tableOption() + self.state = 1155 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 25)) & ~0x3f) == 0 and ((1 << (_la - 25)) & 72057594038059013) != 0) or _la==180 or _la==222 or ((((_la - 341)) & ~0x3f) == 0 and ((1 << (_la - 341)) & 4644375904747527) != 0) or ((((_la - 405)) & ~0x3f) == 0 and ((1 << (_la - 405)) & 4612811918334230547) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 2366149022974977) != 0) or ((((_la - 602)) & ~0x3f) == 0 and ((1 << (_la - 602)) & 4609173815820289) != 0) or _la==841 or _la==875 or _la==1000 or _la==1135 or _la==1148: + self.state = 1150 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 1149 + self.match(MySqlParser.COMMA) + + + self.state = 1152 + self.tableOption() + self.state = 1157 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 1161 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 1160 + self.partitionDefinitions() + + + self.state = 1164 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78 or _la==141: + self.state = 1163 + localctx.keyViolate = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==78 or _la==141): + localctx.keyViolate = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1167 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 1166 + self.match(MySqlParser.AS) + + + self.state = 1169 + self.selectStatement() + pass + + elif la_ == 3: + localctx = MySqlParser.ColumnCreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1171 + self.match(MySqlParser.CREATE) + self.state = 1173 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==649: + self.state = 1172 + self.match(MySqlParser.TEMPORARY) + + + self.state = 1175 + self.match(MySqlParser.TABLE) + self.state = 1177 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,73,self._ctx) + if la_ == 1: + self.state = 1176 + self.ifNotExists() + + + self.state = 1179 + self.tableName() + self.state = 1180 + self.createDefinitions() + self.state = 1191 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,76,self._ctx) + if la_ == 1: + self.state = 1181 + self.tableOption() + self.state = 1188 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,75,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1183 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 1182 + self.match(MySqlParser.COMMA) + + + self.state = 1185 + self.tableOption() + self.state = 1190 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,75,self._ctx) + + + + self.state = 1194 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 1193 + self.partitionDefinitions() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateTablespaceInnodbContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.datafile = None # Token + self.fileBlockSize = None # FileSizeLiteralContext + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + + def DATAFILE(self): + return self.getToken(MySqlParser.DATAFILE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def FILE_BLOCK_SIZE(self): + return self.getToken(MySqlParser.FILE_BLOCK_SIZE, 0) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def fileSizeLiteral(self): + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_createTablespaceInnodb + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTablespaceInnodb" ): + listener.enterCreateTablespaceInnodb(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTablespaceInnodb" ): + listener.exitCreateTablespaceInnodb(self) + + + + + def createTablespaceInnodb(self): + + localctx = MySqlParser.CreateTablespaceInnodbContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_createTablespaceInnodb) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1198 + self.match(MySqlParser.CREATE) + self.state = 1199 + self.match(MySqlParser.TABLESPACE) + self.state = 1200 + self.uid() + self.state = 1201 + self.match(MySqlParser.ADD) + self.state = 1202 + self.match(MySqlParser.DATAFILE) + self.state = 1203 + localctx.datafile = self.match(MySqlParser.STRING_LITERAL) + self.state = 1207 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==428: + self.state = 1204 + self.match(MySqlParser.FILE_BLOCK_SIZE) + self.state = 1205 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 1206 + localctx.fileBlockSize = self.fileSizeLiteral() + + + self.state = 1214 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==409: + self.state = 1209 + self.match(MySqlParser.ENGINE) + self.state = 1211 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1210 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1213 + self.engineName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateTablespaceNdbContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.datafile = None # Token + self.extentSize = None # FileSizeLiteralContext + self.initialSize = None # FileSizeLiteralContext + self.autoextendSize = None # FileSizeLiteralContext + self.maxSize = None # FileSizeLiteralContext + self.comment = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + + def DATAFILE(self): + return self.getToken(MySqlParser.DATAFILE, 0) + + def USE(self): + return self.getToken(MySqlParser.USE, 0) + + def LOGFILE(self): + return self.getToken(MySqlParser.LOGFILE, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def EXTENT_SIZE(self): + return self.getToken(MySqlParser.EXTENT_SIZE, 0) + + def INITIAL_SIZE(self): + return self.getToken(MySqlParser.INITIAL_SIZE, 0) + + def AUTOEXTEND_SIZE(self): + return self.getToken(MySqlParser.AUTOEXTEND_SIZE, 0) + + def MAX_SIZE(self): + return self.getToken(MySqlParser.MAX_SIZE, 0) + + def NODEGROUP(self): + return self.getToken(MySqlParser.NODEGROUP, 0) + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def fileSizeLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FileSizeLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_createTablespaceNdb + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTablespaceNdb" ): + listener.enterCreateTablespaceNdb(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTablespaceNdb" ): + listener.exitCreateTablespaceNdb(self) + + + + + def createTablespaceNdb(self): + + localctx = MySqlParser.CreateTablespaceNdbContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_createTablespaceNdb) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1216 + self.match(MySqlParser.CREATE) + self.state = 1217 + self.match(MySqlParser.TABLESPACE) + self.state = 1218 + self.uid() + self.state = 1219 + self.match(MySqlParser.ADD) + self.state = 1220 + self.match(MySqlParser.DATAFILE) + self.state = 1221 + localctx.datafile = self.match(MySqlParser.STRING_LITERAL) + self.state = 1222 + self.match(MySqlParser.USE) + self.state = 1223 + self.match(MySqlParser.LOGFILE) + self.state = 1224 + self.match(MySqlParser.GROUP) + self.state = 1225 + self.uid() + self.state = 1231 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==423: + self.state = 1226 + self.match(MySqlParser.EXTENT_SIZE) + self.state = 1228 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1227 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1230 + localctx.extentSize = self.fileSizeLiteral() + + + self.state = 1238 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==453: + self.state = 1233 + self.match(MySqlParser.INITIAL_SIZE) + self.state = 1235 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1234 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1237 + localctx.initialSize = self.fileSizeLiteral() + + + self.state = 1245 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==341: + self.state = 1240 + self.match(MySqlParser.AUTOEXTEND_SIZE) + self.state = 1242 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1241 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1244 + localctx.autoextendSize = self.fileSizeLiteral() + + + self.state = 1252 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==501: + self.state = 1247 + self.match(MySqlParser.MAX_SIZE) + self.state = 1249 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1248 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1251 + localctx.maxSize = self.fileSizeLiteral() + + + self.state = 1259 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==528: + self.state = 1254 + self.match(MySqlParser.NODEGROUP) + self.state = 1256 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1255 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1258 + self.uid() + + + self.state = 1262 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==674: + self.state = 1261 + self.match(MySqlParser.WAIT) + + + self.state = 1269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==368: + self.state = 1264 + self.match(MySqlParser.COMMENT) + self.state = 1266 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1265 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1268 + localctx.comment = self.match(MySqlParser.STRING_LITERAL) + + + self.state = 1271 + self.match(MySqlParser.ENGINE) + self.state = 1273 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1272 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1275 + self.engineName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateTriggerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.thisTrigger = None # FullIdContext + self.triggerTime = None # Token + self.triggerEvent = None # Token + self.triggerPlace = None # Token + self.otherTrigger = None # FullIdContext + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def TRIGGER(self): + return self.getToken(MySqlParser.TRIGGER, 0) + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def EACH(self): + return self.getToken(MySqlParser.EACH, 0) + + def ROW(self): + return self.getToken(MySqlParser.ROW, 0) + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def fullId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullIdContext) + else: + return self.getTypedRuleContext(MySqlParser.FullIdContext,i) + + + def BEFORE(self): + return self.getToken(MySqlParser.BEFORE, 0) + + def AFTER(self): + return self.getToken(MySqlParser.AFTER, 0) + + def INSERT(self): + return self.getToken(MySqlParser.INSERT, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def DELETE(self): + return self.getToken(MySqlParser.DELETE, 0) + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def FOLLOWS(self): + return self.getToken(MySqlParser.FOLLOWS, 0) + + def PRECEDES(self): + return self.getToken(MySqlParser.PRECEDES, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_createTrigger + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTrigger" ): + listener.enterCreateTrigger(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTrigger" ): + listener.exitCreateTrigger(self) + + + + + def createTrigger(self): + + localctx = MySqlParser.CreateTriggerContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_createTrigger) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1277 + self.match(MySqlParser.CREATE) + self.state = 1279 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 1278 + self.ownerStatement() + + + self.state = 1281 + self.match(MySqlParser.TRIGGER) + self.state = 1282 + localctx.thisTrigger = self.fullId() + self.state = 1283 + localctx.triggerTime = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==15 or _la==334): + localctx.triggerTime = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1284 + localctx.triggerEvent = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==44 or _la==85 or _la==184): + localctx.triggerEvent = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1285 + self.match(MySqlParser.ON) + self.state = 1286 + self.tableName() + self.state = 1287 + self.match(MySqlParser.FOR) + self.state = 1288 + self.match(MySqlParser.EACH) + self.state = 1289 + self.match(MySqlParser.ROW) + self.state = 1292 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,97,self._ctx) + if la_ == 1: + self.state = 1290 + localctx.triggerPlace = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==434 or _la==558): + localctx.triggerPlace = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1291 + localctx.otherTrigger = self.fullId() + + + self.state = 1294 + self.routineBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WithClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def commonTableExpressions(self): + return self.getTypedRuleContext(MySqlParser.CommonTableExpressionsContext,0) + + + def RECURSIVE(self): + return self.getToken(MySqlParser.RECURSIVE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_withClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWithClause" ): + listener.enterWithClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWithClause" ): + listener.exitWithClause(self) + + + + + def withClause(self): + + localctx = MySqlParser.WithClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_withClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1296 + self.match(MySqlParser.WITH) + self.state = 1298 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,98,self._ctx) + if la_ == 1: + self.state = 1297 + self.match(MySqlParser.RECURSIVE) + + + self.state = 1300 + self.commonTableExpressions() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CommonTableExpressionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def cteName(self): + return self.getTypedRuleContext(MySqlParser.CteNameContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def dmlStatement(self): + return self.getTypedRuleContext(MySqlParser.DmlStatementContext,0) + + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def cteColumnName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CteColumnNameContext) + else: + return self.getTypedRuleContext(MySqlParser.CteColumnNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def commonTableExpressions(self): + return self.getTypedRuleContext(MySqlParser.CommonTableExpressionsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_commonTableExpressions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommonTableExpressions" ): + listener.enterCommonTableExpressions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommonTableExpressions" ): + listener.exitCommonTableExpressions(self) + + + + + def commonTableExpressions(self): + + localctx = MySqlParser.CommonTableExpressionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_commonTableExpressions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1302 + self.cteName() + self.state = 1314 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 1303 + self.match(MySqlParser.LR_BRACKET) + self.state = 1304 + self.cteColumnName() + self.state = 1309 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1305 + self.match(MySqlParser.COMMA) + self.state = 1306 + self.cteColumnName() + self.state = 1311 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1312 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 1316 + self.match(MySqlParser.AS) + self.state = 1317 + self.match(MySqlParser.LR_BRACKET) + self.state = 1318 + self.dmlStatement() + self.state = 1319 + self.match(MySqlParser.RR_BRACKET) + self.state = 1322 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,101,self._ctx) + if la_ == 1: + self.state = 1320 + self.match(MySqlParser.COMMA) + self.state = 1321 + self.commonTableExpressions() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CteNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_cteName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCteName" ): + listener.enterCteName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCteName" ): + listener.exitCteName(self) + + + + + def cteName(self): + + localctx = MySqlParser.CteNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_cteName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1324 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CteColumnNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_cteColumnName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCteColumnName" ): + listener.enterCteColumnName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCteColumnName" ): + listener.exitCteColumnName(self) + + + + + def cteColumnName(self): + + localctx = MySqlParser.CteColumnNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_cteColumnName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1326 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateViewContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.algType = None # Token + self.secContext = None # Token + self.checkOption = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def orReplace(self): + return self.getTypedRuleContext(MySqlParser.OrReplaceContext,0) + + + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def SQL(self): + return self.getToken(MySqlParser.SQL, 0) + + def SECURITY(self): + return self.getToken(MySqlParser.SECURITY, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def UNDEFINED(self): + return self.getToken(MySqlParser.UNDEFINED, 0) + + def MERGE(self): + return self.getToken(MySqlParser.MERGE, 0) + + def TEMPTABLE(self): + return self.getToken(MySqlParser.TEMPTABLE, 0) + + def DEFINER(self): + return self.getToken(MySqlParser.DEFINER, 0) + + def INVOKER(self): + return self.getToken(MySqlParser.INVOKER, 0) + + def withClause(self): + return self.getTypedRuleContext(MySqlParser.WithClauseContext,0) + + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + + def OPTION(self): + return self.getToken(MySqlParser.OPTION, 0) + + def CASCADED(self): + return self.getToken(MySqlParser.CASCADED, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_createView + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateView" ): + listener.enterCreateView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateView" ): + listener.exitCreateView(self) + + + + + def createView(self): + + localctx = MySqlParser.CreateViewContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_createView) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1328 + self.match(MySqlParser.CREATE) + self.state = 1330 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==123: + self.state = 1329 + self.orReplace() + + + self.state = 1335 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==336: + self.state = 1332 + self.match(MySqlParser.ALGORITHM) + self.state = 1333 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 1334 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==506 or _la==650 or _la==658): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1338 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 1337 + self.ownerStatement() + + + self.state = 1343 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==160: + self.state = 1340 + self.match(MySqlParser.SQL) + self.state = 1341 + self.match(MySqlParser.SECURITY) + self.state = 1342 + localctx.secContext = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==392 or _la==460): + localctx.secContext = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1345 + self.match(MySqlParser.VIEW) + self.state = 1346 + self.fullId() + self.state = 1351 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 1347 + self.match(MySqlParser.LR_BRACKET) + self.state = 1348 + self.uidList() + self.state = 1349 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 1353 + self.match(MySqlParser.AS) + self.state = 1373 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + if la_ == 1: + self.state = 1354 + self.match(MySqlParser.LR_BRACKET) + self.state = 1356 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==192: + self.state = 1355 + self.withClause() + + + self.state = 1358 + self.selectStatement() + self.state = 1359 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 2: + self.state = 1362 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==192: + self.state = 1361 + self.withClause() + + + self.state = 1364 + self.selectStatement() + self.state = 1371 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,110,self._ctx) + if la_ == 1: + self.state = 1365 + self.match(MySqlParser.WITH) + self.state = 1367 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==352 or _la==474: + self.state = 1366 + localctx.checkOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==352 or _la==474): + localctx.checkOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1369 + self.match(MySqlParser.CHECK) + self.state = 1370 + self.match(MySqlParser.OPTION) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateDatabaseOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def DEFAULT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.DEFAULT) + else: + return self.getToken(MySqlParser.DEFAULT, i) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def ENCRYPTION(self): + return self.getToken(MySqlParser.ENCRYPTION, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def ONLY(self): + return self.getToken(MySqlParser.ONLY, 0) + + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_createDatabaseOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateDatabaseOption" ): + listener.enterCreateDatabaseOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateDatabaseOption" ): + listener.exitCreateDatabaseOption(self) + + + + + def createDatabaseOption(self): + + localctx = MySqlParser.CreateDatabaseOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_createDatabaseOption) + self._la = 0 # Token type + try: + self.state = 1408 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,120,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1376 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 1375 + self.match(MySqlParser.DEFAULT) + + + self.state = 1378 + self.charSet() + self.state = 1380 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1379 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1384 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [226, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 1145, 1148]: + self.state = 1382 + self.charsetName() + pass + elif token in [42]: + self.state = 1383 + self.match(MySqlParser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1387 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 1386 + self.match(MySqlParser.DEFAULT) + + + self.state = 1389 + self.match(MySqlParser.COLLATE) + self.state = 1391 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1390 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1393 + self.collationName() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1395 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 1394 + self.match(MySqlParser.DEFAULT) + + + self.state = 1397 + self.match(MySqlParser.ENCRYPTION) + self.state = 1399 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1398 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1401 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1402 + self.match(MySqlParser.READ) + self.state = 1403 + self.match(MySqlParser.ONLY) + self.state = 1405 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1404 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1407 + _la = self._input.LA(1) + if not(_la==42 or _la==1138 or _la==1139): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CharSetContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def CHARSET(self): + return self.getToken(MySqlParser.CHARSET, 0) + + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_charSet + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCharSet" ): + listener.enterCharSet(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCharSet" ): + listener.exitCharSet(self) + + + + + def charSet(self): + + localctx = MySqlParser.CharSetContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_charSet) + try: + self.state = 1415 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [25]: + self.enterOuterAlt(localctx, 1) + self.state = 1410 + self.match(MySqlParser.CHARACTER) + self.state = 1411 + self.match(MySqlParser.SET) + pass + elif token in [841]: + self.enterOuterAlt(localctx, 2) + self.state = 1412 + self.match(MySqlParser.CHARSET) + pass + elif token in [222]: + self.enterOuterAlt(localctx, 3) + self.state = 1413 + self.match(MySqlParser.CHAR) + self.state = 1414 + self.match(MySqlParser.SET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OwnerStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEFINER(self): + return self.getToken(MySqlParser.DEFINER, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def CURRENT_USER(self): + return self.getToken(MySqlParser.CURRENT_USER, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_ownerStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOwnerStatement" ): + listener.enterOwnerStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOwnerStatement" ): + listener.exitOwnerStatement(self) + + + + + def ownerStatement(self): + + localctx = MySqlParser.OwnerStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_ownerStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1417 + self.match(MySqlParser.DEFINER) + self.state = 1418 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 1425 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,123,self._ctx) + if la_ == 1: + self.state = 1419 + self.userName() + pass + + elif la_ == 2: + self.state = 1420 + self.match(MySqlParser.CURRENT_USER) + self.state = 1423 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 1421 + self.match(MySqlParser.LR_BRACKET) + self.state = 1422 + self.match(MySqlParser.RR_BRACKET) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ScheduleExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_scheduleExpression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PreciseScheduleContext(ScheduleExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ScheduleExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AT(self): + return self.getToken(MySqlParser.AT, 0) + def timestampValue(self): + return self.getTypedRuleContext(MySqlParser.TimestampValueContext,0) + + def intervalExpr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IntervalExprContext) + else: + return self.getTypedRuleContext(MySqlParser.IntervalExprContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreciseSchedule" ): + listener.enterPreciseSchedule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreciseSchedule" ): + listener.exitPreciseSchedule(self) + + + class IntervalScheduleContext(ScheduleExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ScheduleExpressionContext + super().__init__(parser) + self.startTimestamp = None # TimestampValueContext + self._intervalExpr = None # IntervalExprContext + self.startIntervals = list() # of IntervalExprContexts + self.endTimestamp = None # TimestampValueContext + self.endIntervals = list() # of IntervalExprContexts + self.copyFrom(ctx) + + def EVERY(self): + return self.getToken(MySqlParser.EVERY, 0) + def intervalType(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeContext,0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def STARTS(self): + return self.getToken(MySqlParser.STARTS, 0) + def ENDS(self): + return self.getToken(MySqlParser.ENDS, 0) + def timestampValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TimestampValueContext) + else: + return self.getTypedRuleContext(MySqlParser.TimestampValueContext,i) + + def intervalExpr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IntervalExprContext) + else: + return self.getTypedRuleContext(MySqlParser.IntervalExprContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalSchedule" ): + listener.enterIntervalSchedule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalSchedule" ): + listener.exitIntervalSchedule(self) + + + + def scheduleExpression(self): + + localctx = MySqlParser.ScheduleExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_scheduleExpression) + self._la = 0 # Token type + try: + self.state = 1461 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [338]: + localctx = MySqlParser.PreciseScheduleContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1427 + self.match(MySqlParser.AT) + self.state = 1428 + self.timestampValue() + self.state = 1432 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1120: + self.state = 1429 + self.intervalExpr() + self.state = 1434 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + elif token in [417]: + localctx = MySqlParser.IntervalScheduleContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1435 + self.match(MySqlParser.EVERY) + self.state = 1438 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,125,self._ctx) + if la_ == 1: + self.state = 1436 + self.decimalLiteral() + pass + + elif la_ == 2: + self.state = 1437 + self.expression(0) + pass + + + self.state = 1440 + self.intervalType() + self.state = 1449 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==630: + self.state = 1441 + self.match(MySqlParser.STARTS) + self.state = 1442 + localctx.startTimestamp = self.timestampValue() + self.state = 1446 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1120: + self.state = 1443 + localctx._intervalExpr = self.intervalExpr() + localctx.startIntervals.append(localctx._intervalExpr) + self.state = 1448 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 1459 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==408: + self.state = 1451 + self.match(MySqlParser.ENDS) + self.state = 1452 + localctx.endTimestamp = self.timestampValue() + self.state = 1456 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1120: + self.state = 1453 + localctx._intervalExpr = self.intervalExpr() + localctx.endIntervals.append(localctx._intervalExpr) + self.state = 1458 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TimestampValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CURRENT_TIMESTAMP(self): + return self.getToken(MySqlParser.CURRENT_TIMESTAMP, 0) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_timestampValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTimestampValue" ): + listener.enterTimestampValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTimestampValue" ): + listener.exitTimestampValue(self) + + + + + def timestampValue(self): + + localctx = MySqlParser.TimestampValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_timestampValue) + try: + self.state = 1467 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,131,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1463 + self.match(MySqlParser.CURRENT_TIMESTAMP) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1464 + self.stringLiteral() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1465 + self.decimalLiteral() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1466 + self.expression(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IntervalExprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PLUS(self): + return self.getToken(MySqlParser.PLUS, 0) + + def INTERVAL(self): + return self.getToken(MySqlParser.INTERVAL, 0) + + def intervalType(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeContext,0) + + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_intervalExpr + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalExpr" ): + listener.enterIntervalExpr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalExpr" ): + listener.exitIntervalExpr(self) + + + + + def intervalExpr(self): + + localctx = MySqlParser.IntervalExprContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_intervalExpr) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1469 + self.match(MySqlParser.PLUS) + self.state = 1470 + self.match(MySqlParser.INTERVAL) + self.state = 1473 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,132,self._ctx) + if la_ == 1: + self.state = 1471 + self.decimalLiteral() + pass + + elif la_ == 2: + self.state = 1472 + self.expression(0) + pass + + + self.state = 1475 + self.intervalType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IntervalTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def intervalTypeBase(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeBaseContext,0) + + + def YEAR(self): + return self.getToken(MySqlParser.YEAR, 0) + + def YEAR_MONTH(self): + return self.getToken(MySqlParser.YEAR_MONTH, 0) + + def DAY_HOUR(self): + return self.getToken(MySqlParser.DAY_HOUR, 0) + + def DAY_MINUTE(self): + return self.getToken(MySqlParser.DAY_MINUTE, 0) + + def DAY_SECOND(self): + return self.getToken(MySqlParser.DAY_SECOND, 0) + + def HOUR_MINUTE(self): + return self.getToken(MySqlParser.HOUR_MINUTE, 0) + + def HOUR_SECOND(self): + return self.getToken(MySqlParser.HOUR_SECOND, 0) + + def MINUTE_SECOND(self): + return self.getToken(MySqlParser.MINUTE_SECOND, 0) + + def SECOND_MICROSECOND(self): + return self.getToken(MySqlParser.SECOND_MICROSECOND, 0) + + def MINUTE_MICROSECOND(self): + return self.getToken(MySqlParser.MINUTE_MICROSECOND, 0) + + def HOUR_MICROSECOND(self): + return self.getToken(MySqlParser.HOUR_MICROSECOND, 0) + + def DAY_MICROSECOND(self): + return self.getToken(MySqlParser.DAY_MICROSECOND, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_intervalType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalType" ): + listener.enterIntervalType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalType" ): + listener.exitIntervalType(self) + + + + + def intervalType(self): + + localctx = MySqlParser.IntervalTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_intervalType) + try: + self.state = 1490 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [689, 690, 691, 692, 693, 694, 695, 696]: + self.enterOuterAlt(localctx, 1) + self.state = 1477 + self.intervalTypeBase() + pass + elif token in [221]: + self.enterOuterAlt(localctx, 2) + self.state = 1478 + self.match(MySqlParser.YEAR) + pass + elif token in [240]: + self.enterOuterAlt(localctx, 3) + self.state = 1479 + self.match(MySqlParser.YEAR_MONTH) + pass + elif token in [241]: + self.enterOuterAlt(localctx, 4) + self.state = 1480 + self.match(MySqlParser.DAY_HOUR) + pass + elif token in [242]: + self.enterOuterAlt(localctx, 5) + self.state = 1481 + self.match(MySqlParser.DAY_MINUTE) + pass + elif token in [243]: + self.enterOuterAlt(localctx, 6) + self.state = 1482 + self.match(MySqlParser.DAY_SECOND) + pass + elif token in [244]: + self.enterOuterAlt(localctx, 7) + self.state = 1483 + self.match(MySqlParser.HOUR_MINUTE) + pass + elif token in [245]: + self.enterOuterAlt(localctx, 8) + self.state = 1484 + self.match(MySqlParser.HOUR_SECOND) + pass + elif token in [246]: + self.enterOuterAlt(localctx, 9) + self.state = 1485 + self.match(MySqlParser.MINUTE_SECOND) + pass + elif token in [247]: + self.enterOuterAlt(localctx, 10) + self.state = 1486 + self.match(MySqlParser.SECOND_MICROSECOND) + pass + elif token in [248]: + self.enterOuterAlt(localctx, 11) + self.state = 1487 + self.match(MySqlParser.MINUTE_MICROSECOND) + pass + elif token in [249]: + self.enterOuterAlt(localctx, 12) + self.state = 1488 + self.match(MySqlParser.HOUR_MICROSECOND) + pass + elif token in [250]: + self.enterOuterAlt(localctx, 13) + self.state = 1489 + self.match(MySqlParser.DAY_MICROSECOND) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EnableTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ENABLE(self): + return self.getToken(MySqlParser.ENABLE, 0) + + def DISABLE(self): + return self.getToken(MySqlParser.DISABLE, 0) + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_enableType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEnableType" ): + listener.enterEnableType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEnableType" ): + listener.exitEnableType(self) + + + + + def enableType(self): + + localctx = MySqlParser.EnableTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_enableType) + try: + self.state = 1497 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,134,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1492 + self.match(MySqlParser.ENABLE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1493 + self.match(MySqlParser.DISABLE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1494 + self.match(MySqlParser.DISABLE) + self.state = 1495 + self.match(MySqlParser.ON) + self.state = 1496 + self.match(MySqlParser.SLAVE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def USING(self): + return self.getToken(MySqlParser.USING, 0) + + def BTREE(self): + return self.getToken(MySqlParser.BTREE, 0) + + def HASH(self): + return self.getToken(MySqlParser.HASH, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_indexType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexType" ): + listener.enterIndexType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexType" ): + listener.exitIndexType(self) + + + + + def indexType(self): + + localctx = MySqlParser.IndexTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_indexType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1499 + self.match(MySqlParser.USING) + self.state = 1500 + _la = self._input.LA(1) + if not(_la==350 or _la==443): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def KEY_BLOCK_SIZE(self): + return self.getToken(MySqlParser.KEY_BLOCK_SIZE, 0) + + def fileSizeLiteral(self): + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,0) + + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def PARSER(self): + return self.getToken(MySqlParser.PARSER, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def VISIBLE(self): + return self.getToken(MySqlParser.VISIBLE, 0) + + def INVISIBLE(self): + return self.getToken(MySqlParser.INVISIBLE, 0) + + def ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.ENGINE_ATTRIBUTE, 0) + + def SECONDARY_ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_indexOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexOption" ): + listener.enterIndexOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexOption" ): + listener.exitIndexOption(self) + + + + + def indexOption(self): + + localctx = MySqlParser.IndexOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_indexOption) + self._la = 0 # Token type + try: + self.state = 1524 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [467]: + self.enterOuterAlt(localctx, 1) + self.state = 1502 + self.match(MySqlParser.KEY_BLOCK_SIZE) + self.state = 1504 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1503 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1506 + self.fileSizeLiteral() + pass + elif token in [187]: + self.enterOuterAlt(localctx, 2) + self.state = 1507 + self.indexType() + pass + elif token in [192]: + self.enterOuterAlt(localctx, 3) + self.state = 1508 + self.match(MySqlParser.WITH) + self.state = 1509 + self.match(MySqlParser.PARSER) + self.state = 1510 + self.uid() + pass + elif token in [368]: + self.enterOuterAlt(localctx, 4) + self.state = 1511 + self.match(MySqlParser.COMMENT) + self.state = 1512 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [459, 673]: + self.enterOuterAlt(localctx, 5) + self.state = 1513 + _la = self._input.LA(1) + if not(_la==459 or _la==673): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [875]: + self.enterOuterAlt(localctx, 6) + self.state = 1514 + self.match(MySqlParser.ENGINE_ATTRIBUTE) + self.state = 1516 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1515 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1518 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [1000]: + self.enterOuterAlt(localctx, 7) + self.state = 1519 + self.match(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE) + self.state = 1521 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1520 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1523 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ProcedureParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.direction = None # Token + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def IN(self): + return self.getToken(MySqlParser.IN, 0) + + def OUT(self): + return self.getToken(MySqlParser.OUT, 0) + + def INOUT(self): + return self.getToken(MySqlParser.INOUT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_procedureParameter + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProcedureParameter" ): + listener.enterProcedureParameter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProcedureParameter" ): + listener.exitProcedureParameter(self) + + + + + def procedureParameter(self): + + localctx = MySqlParser.ProcedureParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_procedureParameter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1527 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 80)) & ~0x3f) == 0 and ((1 << (_la - 80)) & 35184372088849) != 0): + self.state = 1526 + localctx.direction = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 80)) & ~0x3f) == 0 and ((1 << (_la - 80)) & 35184372088849) != 0)): + localctx.direction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1529 + self.uid() + self.state = 1530 + self.dataType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_functionParameter + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionParameter" ): + listener.enterFunctionParameter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionParameter" ): + listener.exitFunctionParameter(self) + + + + + def functionParameter(self): + + localctx = MySqlParser.FunctionParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_functionParameter) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1532 + self.uid() + self.state = 1533 + self.dataType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RoutineOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_routineOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class RoutineBehaviorContext(RoutineOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RoutineOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def DETERMINISTIC(self): + return self.getToken(MySqlParser.DETERMINISTIC, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineBehavior" ): + listener.enterRoutineBehavior(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineBehavior" ): + listener.exitRoutineBehavior(self) + + + class RoutineLanguageContext(RoutineOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RoutineOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LANGUAGE(self): + return self.getToken(MySqlParser.LANGUAGE, 0) + def SQL(self): + return self.getToken(MySqlParser.SQL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineLanguage" ): + listener.enterRoutineLanguage(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineLanguage" ): + listener.exitRoutineLanguage(self) + + + class RoutineCommentContext(RoutineOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RoutineOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineComment" ): + listener.enterRoutineComment(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineComment" ): + listener.exitRoutineComment(self) + + + class RoutineSecurityContext(RoutineOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RoutineOptionContext + super().__init__(parser) + self.context = None # Token + self.copyFrom(ctx) + + def SQL(self): + return self.getToken(MySqlParser.SQL, 0) + def SECURITY(self): + return self.getToken(MySqlParser.SECURITY, 0) + def DEFINER(self): + return self.getToken(MySqlParser.DEFINER, 0) + def INVOKER(self): + return self.getToken(MySqlParser.INVOKER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineSecurity" ): + listener.enterRoutineSecurity(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineSecurity" ): + listener.exitRoutineSecurity(self) + + + class RoutineDataContext(RoutineOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RoutineOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def CONTAINS(self): + return self.getToken(MySqlParser.CONTAINS, 0) + def SQL(self): + return self.getToken(MySqlParser.SQL, 0) + def NO(self): + return self.getToken(MySqlParser.NO, 0) + def READS(self): + return self.getToken(MySqlParser.READS, 0) + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + def MODIFIES(self): + return self.getToken(MySqlParser.MODIFIES, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineData" ): + listener.enterRoutineData(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineData" ): + listener.exitRoutineData(self) + + + + def routineOption(self): + + localctx = MySqlParser.RoutineOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_routineOption) + self._la = 0 # Token type + try: + self.state = 1558 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [368]: + localctx = MySqlParser.RoutineCommentContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1535 + self.match(MySqlParser.COMMENT) + self.state = 1536 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [468]: + localctx = MySqlParser.RoutineLanguageContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1537 + self.match(MySqlParser.LANGUAGE) + self.state = 1538 + self.match(MySqlParser.SQL) + pass + elif token in [47, 114]: + localctx = MySqlParser.RoutineBehaviorContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1540 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 1539 + self.match(MySqlParser.NOT) + + + self.state = 1542 + self.match(MySqlParser.DETERMINISTIC) + pass + elif token in [112, 135, 381, 521]: + localctx = MySqlParser.RoutineDataContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1553 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [381]: + self.state = 1543 + self.match(MySqlParser.CONTAINS) + self.state = 1544 + self.match(MySqlParser.SQL) + pass + elif token in [521]: + self.state = 1545 + self.match(MySqlParser.NO) + self.state = 1546 + self.match(MySqlParser.SQL) + pass + elif token in [135]: + self.state = 1547 + self.match(MySqlParser.READS) + self.state = 1548 + self.match(MySqlParser.SQL) + self.state = 1549 + self.match(MySqlParser.DATA) + pass + elif token in [112]: + self.state = 1550 + self.match(MySqlParser.MODIFIES) + self.state = 1551 + self.match(MySqlParser.SQL) + self.state = 1552 + self.match(MySqlParser.DATA) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [160]: + localctx = MySqlParser.RoutineSecurityContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 1555 + self.match(MySqlParser.SQL) + self.state = 1556 + self.match(MySqlParser.SECURITY) + self.state = 1557 + localctx.context = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==392 or _la==460): + localctx.context = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ServerOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HOST(self): + return self.getToken(MySqlParser.HOST, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def SOCKET(self): + return self.getToken(MySqlParser.SOCKET, 0) + + def OWNER(self): + return self.getToken(MySqlParser.OWNER, 0) + + def PORT(self): + return self.getToken(MySqlParser.PORT, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_serverOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterServerOption" ): + listener.enterServerOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitServerOption" ): + listener.exitServerOption(self) + + + + + def serverOption(self): + + localctx = MySqlParser.ServerOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_serverOption) + try: + self.state = 1574 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [446]: + self.enterOuterAlt(localctx, 1) + self.state = 1560 + self.match(MySqlParser.HOST) + self.state = 1561 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [39]: + self.enterOuterAlt(localctx, 2) + self.state = 1562 + self.match(MySqlParser.DATABASE) + self.state = 1563 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [665]: + self.enterOuterAlt(localctx, 3) + self.state = 1564 + self.match(MySqlParser.USER) + self.state = 1565 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [551]: + self.enterOuterAlt(localctx, 4) + self.state = 1566 + self.match(MySqlParser.PASSWORD) + self.state = 1567 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [617]: + self.enterOuterAlt(localctx, 5) + self.state = 1568 + self.match(MySqlParser.SOCKET) + self.state = 1569 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [542]: + self.enterOuterAlt(localctx, 6) + self.state = 1570 + self.match(MySqlParser.OWNER) + self.state = 1571 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [557]: + self.enterOuterAlt(localctx, 7) + self.state = 1572 + self.match(MySqlParser.PORT) + self.state = 1573 + self.decimalLiteral() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateDefinitionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def createDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CreateDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.CreateDefinitionContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_createDefinitions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateDefinitions" ): + listener.enterCreateDefinitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateDefinitions" ): + listener.exitCreateDefinitions(self) + + + + + def createDefinitions(self): + + localctx = MySqlParser.CreateDefinitionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_createDefinitions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1576 + self.match(MySqlParser.LR_BRACKET) + self.state = 1577 + self.createDefinition() + self.state = 1582 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 1578 + self.match(MySqlParser.COMMA) + self.state = 1579 + self.createDefinition() + self.state = 1584 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1585 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_createDefinition + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ColumnDeclarationContext(CreateDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + def columnDefinition(self): + return self.getTypedRuleContext(MySqlParser.ColumnDefinitionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColumnDeclaration" ): + listener.enterColumnDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColumnDeclaration" ): + listener.exitColumnDeclaration(self) + + + class ConstraintDeclarationContext(CreateDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def tableConstraint(self): + return self.getTypedRuleContext(MySqlParser.TableConstraintContext,0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def ENFORCED(self): + return self.getToken(MySqlParser.ENFORCED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstraintDeclaration" ): + listener.enterConstraintDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstraintDeclaration" ): + listener.exitConstraintDeclaration(self) + + + class IndexDeclarationContext(CreateDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def indexColumnDefinition(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnDefinitionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexDeclaration" ): + listener.enterIndexDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexDeclaration" ): + listener.exitIndexDeclaration(self) + + + + def createDefinition(self): + + localctx = MySqlParser.CreateDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_createDefinition) + self._la = 0 # Token type + try: + self.state = 1598 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,147,self._ctx) + if la_ == 1: + localctx = MySqlParser.ColumnDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1587 + self.fullColumnName() + self.state = 1588 + self.columnDefinition() + pass + + elif la_ == 2: + localctx = MySqlParser.ConstraintDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1590 + self.tableConstraint() + self.state = 1592 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 1591 + self.match(MySqlParser.NOT) + + + self.state = 1595 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==57: + self.state = 1594 + self.match(MySqlParser.ENFORCED) + + + pass + + elif la_ == 3: + localctx = MySqlParser.IndexDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1597 + self.indexColumnDefinition() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ColumnDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def columnConstraint(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ColumnConstraintContext) + else: + return self.getTypedRuleContext(MySqlParser.ColumnConstraintContext,i) + + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def ENFORCED(self): + return self.getToken(MySqlParser.ENFORCED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_columnDefinition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColumnDefinition" ): + listener.enterColumnDefinition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColumnDefinition" ): + listener.exitColumnDefinition(self) + + + + + def columnDefinition(self): + + localctx = MySqlParser.ColumnDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_columnDefinition) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1600 + self.dataType() + self.state = 1604 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,148,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1601 + self.columnConstraint() + self.state = 1606 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,148,self._ctx) + + self.state = 1608 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 1607 + self.match(MySqlParser.NOT) + + + self.state = 1611 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==57: + self.state = 1610 + self.match(MySqlParser.ENFORCED) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ColumnConstraintContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_columnConstraint + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class StorageColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.storageval = None # Token + self.copyFrom(ctx) + + def STORAGE(self): + return self.getToken(MySqlParser.STORAGE, 0) + def DISK(self): + return self.getToken(MySqlParser.DISK, 0) + def MEMORY(self): + return self.getToken(MySqlParser.MEMORY, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStorageColumnConstraint" ): + listener.enterStorageColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStorageColumnConstraint" ): + listener.exitStorageColumnConstraint(self) + + + class VisibilityColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def VISIBLE(self): + return self.getToken(MySqlParser.VISIBLE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVisibilityColumnConstraint" ): + listener.enterVisibilityColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVisibilityColumnConstraint" ): + listener.exitVisibilityColumnConstraint(self) + + + class AutoIncrementColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def AUTO_INCREMENT(self): + return self.getToken(MySqlParser.AUTO_INCREMENT, 0) + def ON(self): + return self.getToken(MySqlParser.ON, 0) + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + def currentTimestamp(self): + return self.getTypedRuleContext(MySqlParser.CurrentTimestampContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAutoIncrementColumnConstraint" ): + listener.enterAutoIncrementColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAutoIncrementColumnConstraint" ): + listener.exitAutoIncrementColumnConstraint(self) + + + class CommentColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommentColumnConstraint" ): + listener.enterCommentColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommentColumnConstraint" ): + listener.exitCommentColumnConstraint(self) + + + class UniqueKeyColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def UNIQUE(self): + return self.getToken(MySqlParser.UNIQUE, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUniqueKeyColumnConstraint" ): + listener.enterUniqueKeyColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUniqueKeyColumnConstraint" ): + listener.exitUniqueKeyColumnConstraint(self) + + + class SerialDefaultColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def SERIAL(self): + return self.getToken(MySqlParser.SERIAL, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSerialDefaultColumnConstraint" ): + listener.enterSerialDefaultColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSerialDefaultColumnConstraint" ): + listener.exitSerialDefaultColumnConstraint(self) + + + class GeneratedColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def GENERATED(self): + return self.getToken(MySqlParser.GENERATED, 0) + def ALWAYS(self): + return self.getToken(MySqlParser.ALWAYS, 0) + def VIRTUAL(self): + return self.getToken(MySqlParser.VIRTUAL, 0) + def STORED(self): + return self.getToken(MySqlParser.STORED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGeneratedColumnConstraint" ): + listener.enterGeneratedColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGeneratedColumnConstraint" ): + listener.exitGeneratedColumnConstraint(self) + + + class FormatColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.colformat = None # Token + self.copyFrom(ctx) + + def COLUMN_FORMAT(self): + return self.getToken(MySqlParser.COLUMN_FORMAT, 0) + def FIXED(self): + return self.getToken(MySqlParser.FIXED, 0) + def DYNAMIC(self): + return self.getToken(MySqlParser.DYNAMIC, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFormatColumnConstraint" ): + listener.enterFormatColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFormatColumnConstraint" ): + listener.exitFormatColumnConstraint(self) + + + class CollateColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCollateColumnConstraint" ): + listener.enterCollateColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCollateColumnConstraint" ): + listener.exitCollateColumnConstraint(self) + + + class PrimaryKeyColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def PRIMARY(self): + return self.getToken(MySqlParser.PRIMARY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrimaryKeyColumnConstraint" ): + listener.enterPrimaryKeyColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrimaryKeyColumnConstraint" ): + listener.exitPrimaryKeyColumnConstraint(self) + + + class CheckColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.name = None # UidContext + self.copyFrom(ctx) + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCheckColumnConstraint" ): + listener.enterCheckColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCheckColumnConstraint" ): + listener.exitCheckColumnConstraint(self) + + + class NullColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def nullNotnull(self): + return self.getTypedRuleContext(MySqlParser.NullNotnullContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNullColumnConstraint" ): + listener.enterNullColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNullColumnConstraint" ): + listener.exitNullColumnConstraint(self) + + + class DefaultColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def defaultValue(self): + return self.getTypedRuleContext(MySqlParser.DefaultValueContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefaultColumnConstraint" ): + listener.enterDefaultColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefaultColumnConstraint" ): + listener.exitDefaultColumnConstraint(self) + + + class ReferenceColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def referenceDefinition(self): + return self.getTypedRuleContext(MySqlParser.ReferenceDefinitionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReferenceColumnConstraint" ): + listener.enterReferenceColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReferenceColumnConstraint" ): + listener.exitReferenceColumnConstraint(self) + + + class InvisibilityColumnConstraintContext(ColumnConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ColumnConstraintContext + super().__init__(parser) + self.copyFrom(ctx) + + def INVISIBLE(self): + return self.getToken(MySqlParser.INVISIBLE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInvisibilityColumnConstraint" ): + listener.enterInvisibilityColumnConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInvisibilityColumnConstraint" ): + listener.exitInvisibilityColumnConstraint(self) + + + + def columnConstraint(self): + + localctx = MySqlParser.ColumnConstraintContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_columnConstraint) + self._la = 0 # Token type + try: + self.state = 1666 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [114, 116, 1152]: + localctx = MySqlParser.NullColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1613 + self.nullNotnull() + pass + elif token in [42]: + localctx = MySqlParser.DefaultColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1614 + self.match(MySqlParser.DEFAULT) + self.state = 1615 + self.defaultValue() + pass + elif token in [673]: + localctx = MySqlParser.VisibilityColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1616 + self.match(MySqlParser.VISIBLE) + pass + elif token in [459]: + localctx = MySqlParser.InvisibilityColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1617 + self.match(MySqlParser.INVISIBLE) + pass + elif token in [118, 342]: + localctx = MySqlParser.AutoIncrementColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 1622 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [342]: + self.state = 1618 + self.match(MySqlParser.AUTO_INCREMENT) + pass + elif token in [118]: + self.state = 1619 + self.match(MySqlParser.ON) + self.state = 1620 + self.match(MySqlParser.UPDATE) + self.state = 1621 + self.currentTimestamp() + pass + else: + raise NoViableAltException(self) + + pass + elif token in [91, 130]: + localctx = MySqlParser.PrimaryKeyColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 1625 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==130: + self.state = 1624 + self.match(MySqlParser.PRIMARY) + + + self.state = 1627 + self.match(MySqlParser.KEY) + pass + elif token in [181]: + localctx = MySqlParser.UniqueKeyColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 1628 + self.match(MySqlParser.UNIQUE) + self.state = 1630 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,153,self._ctx) + if la_ == 1: + self.state = 1629 + self.match(MySqlParser.KEY) + + + pass + elif token in [368]: + localctx = MySqlParser.CommentColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 1632 + self.match(MySqlParser.COMMENT) + self.state = 1633 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [366]: + localctx = MySqlParser.FormatColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 1634 + self.match(MySqlParser.COLUMN_FORMAT) + self.state = 1635 + localctx.colformat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==402 or _la==431): + localctx.colformat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [636]: + localctx = MySqlParser.StorageColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 1636 + self.match(MySqlParser.STORAGE) + self.state = 1637 + localctx.storageval = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==398 or _la==792): + localctx.storageval = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [136]: + localctx = MySqlParser.ReferenceColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 1638 + self.referenceDefinition() + pass + elif token in [27]: + localctx = MySqlParser.CollateColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 1639 + self.match(MySqlParser.COLLATE) + self.state = 1640 + self.collationName() + pass + elif token in [12, 70]: + localctx = MySqlParser.GeneratedColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 1643 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==70: + self.state = 1641 + self.match(MySqlParser.GENERATED) + self.state = 1642 + self.match(MySqlParser.ALWAYS) + + + self.state = 1645 + self.match(MySqlParser.AS) + self.state = 1646 + self.match(MySqlParser.LR_BRACKET) + self.state = 1647 + self.expression(0) + self.state = 1648 + self.match(MySqlParser.RR_BRACKET) + self.state = 1650 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==637 or _la==672: + self.state = 1649 + _la = self._input.LA(1) + if not(_la==637 or _la==672): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + pass + elif token in [239]: + localctx = MySqlParser.SerialDefaultColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 1652 + self.match(MySqlParser.SERIAL) + self.state = 1653 + self.match(MySqlParser.DEFAULT) + self.state = 1654 + self.match(MySqlParser.VALUE) + pass + elif token in [26, 30]: + localctx = MySqlParser.CheckColumnConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 1659 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 1655 + self.match(MySqlParser.CONSTRAINT) + self.state = 1657 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1656 + localctx.name = self.uid() + + + + + self.state = 1661 + self.match(MySqlParser.CHECK) + self.state = 1662 + self.match(MySqlParser.LR_BRACKET) + self.state = 1663 + self.expression(0) + self.state = 1664 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableConstraintContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_tableConstraint + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class UniqueKeyTableConstraintContext(TableConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableConstraintContext + super().__init__(parser) + self.name = None # UidContext + self.indexFormat = None # Token + self.index = None # UidContext + self.copyFrom(ctx) + + def UNIQUE(self): + return self.getToken(MySqlParser.UNIQUE, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUniqueKeyTableConstraint" ): + listener.enterUniqueKeyTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUniqueKeyTableConstraint" ): + listener.exitUniqueKeyTableConstraint(self) + + + class CheckTableConstraintContext(TableConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableConstraintContext + super().__init__(parser) + self.name = None # UidContext + self.copyFrom(ctx) + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCheckTableConstraint" ): + listener.enterCheckTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCheckTableConstraint" ): + listener.exitCheckTableConstraint(self) + + + class PrimaryKeyTableConstraintContext(TableConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableConstraintContext + super().__init__(parser) + self.name = None # UidContext + self.index = None # UidContext + self.copyFrom(ctx) + + def PRIMARY(self): + return self.getToken(MySqlParser.PRIMARY, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrimaryKeyTableConstraint" ): + listener.enterPrimaryKeyTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrimaryKeyTableConstraint" ): + listener.exitPrimaryKeyTableConstraint(self) + + + class ForeignKeyTableConstraintContext(TableConstraintContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableConstraintContext + super().__init__(parser) + self.name = None # UidContext + self.index = None # UidContext + self.copyFrom(ctx) + + def FOREIGN(self): + return self.getToken(MySqlParser.FOREIGN, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def referenceDefinition(self): + return self.getTypedRuleContext(MySqlParser.ReferenceDefinitionContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterForeignKeyTableConstraint" ): + listener.enterForeignKeyTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitForeignKeyTableConstraint" ): + listener.exitForeignKeyTableConstraint(self) + + + + def tableConstraint(self): + + localctx = MySqlParser.TableConstraintContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_tableConstraint) + self._la = 0 # Token type + try: + self.state = 1737 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,175,self._ctx) + if la_ == 1: + localctx = MySqlParser.PrimaryKeyTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1672 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 1668 + self.match(MySqlParser.CONSTRAINT) + self.state = 1670 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,159,self._ctx) + if la_ == 1: + self.state = 1669 + localctx.name = self.uid() + + + + + self.state = 1674 + self.match(MySqlParser.PRIMARY) + self.state = 1675 + self.match(MySqlParser.KEY) + self.state = 1677 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1676 + localctx.index = self.uid() + + + self.state = 1680 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 1679 + self.indexType() + + + self.state = 1682 + self.indexColumnNames() + self.state = 1686 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==187 or _la==192 or _la==368 or _la==459 or _la==467 or _la==673 or _la==875 or _la==1000: + self.state = 1683 + self.indexOption() + self.state = 1688 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.UniqueKeyTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1693 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 1689 + self.match(MySqlParser.CONSTRAINT) + self.state = 1691 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1690 + localctx.name = self.uid() + + + + + self.state = 1695 + self.match(MySqlParser.UNIQUE) + self.state = 1697 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 1696 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1700 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1699 + localctx.index = self.uid() + + + self.state = 1703 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 1702 + self.indexType() + + + self.state = 1705 + self.indexColumnNames() + self.state = 1709 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==187 or _la==192 or _la==368 or _la==459 or _la==467 or _la==673 or _la==875 or _la==1000: + self.state = 1706 + self.indexOption() + self.state = 1711 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 3: + localctx = MySqlParser.ForeignKeyTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1716 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 1712 + self.match(MySqlParser.CONSTRAINT) + self.state = 1714 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1713 + localctx.name = self.uid() + + + + + self.state = 1718 + self.match(MySqlParser.FOREIGN) + self.state = 1719 + self.match(MySqlParser.KEY) + self.state = 1721 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1720 + localctx.index = self.uid() + + + self.state = 1723 + self.indexColumnNames() + self.state = 1724 + self.referenceDefinition() + pass + + elif la_ == 4: + localctx = MySqlParser.CheckTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1730 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 1726 + self.match(MySqlParser.CONSTRAINT) + self.state = 1728 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1727 + localctx.name = self.uid() + + + + + self.state = 1732 + self.match(MySqlParser.CHECK) + self.state = 1733 + self.match(MySqlParser.LR_BRACKET) + self.state = 1734 + self.expression(0) + self.state = 1735 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReferenceDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.matchType = None # Token + + def REFERENCES(self): + return self.getToken(MySqlParser.REFERENCES, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + + def MATCH(self): + return self.getToken(MySqlParser.MATCH, 0) + + def referenceAction(self): + return self.getTypedRuleContext(MySqlParser.ReferenceActionContext,0) + + + def FULL(self): + return self.getToken(MySqlParser.FULL, 0) + + def PARTIAL(self): + return self.getToken(MySqlParser.PARTIAL, 0) + + def SIMPLE(self): + return self.getToken(MySqlParser.SIMPLE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_referenceDefinition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReferenceDefinition" ): + listener.enterReferenceDefinition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReferenceDefinition" ): + listener.exitReferenceDefinition(self) + + + + + def referenceDefinition(self): + + localctx = MySqlParser.ReferenceDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_referenceDefinition) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1739 + self.match(MySqlParser.REFERENCES) + self.state = 1740 + self.tableName() + self.state = 1742 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,176,self._ctx) + if la_ == 1: + self.state = 1741 + self.indexColumnNames() + + + self.state = 1746 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==109: + self.state = 1744 + self.match(MySqlParser.MATCH) + self.state = 1745 + localctx.matchType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==436 or _la==548 or _la==613): + localctx.matchType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1749 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,178,self._ctx) + if la_ == 1: + self.state = 1748 + self.referenceAction() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReferenceActionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.onDelete = None # ReferenceControlTypeContext + self.onUpdate = None # ReferenceControlTypeContext + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + + def DELETE(self): + return self.getToken(MySqlParser.DELETE, 0) + + def referenceControlType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ReferenceControlTypeContext) + else: + return self.getTypedRuleContext(MySqlParser.ReferenceControlTypeContext,i) + + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_referenceAction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReferenceAction" ): + listener.enterReferenceAction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReferenceAction" ): + listener.exitReferenceAction(self) + + + + + def referenceAction(self): + + localctx = MySqlParser.ReferenceActionContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_referenceAction) + try: + self.state = 1767 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,181,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1751 + self.match(MySqlParser.ON) + self.state = 1752 + self.match(MySqlParser.DELETE) + self.state = 1753 + localctx.onDelete = self.referenceControlType() + self.state = 1757 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,179,self._ctx) + if la_ == 1: + self.state = 1754 + self.match(MySqlParser.ON) + self.state = 1755 + self.match(MySqlParser.UPDATE) + self.state = 1756 + localctx.onUpdate = self.referenceControlType() + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1759 + self.match(MySqlParser.ON) + self.state = 1760 + self.match(MySqlParser.UPDATE) + self.state = 1761 + localctx.onUpdate = self.referenceControlType() + self.state = 1765 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,180,self._ctx) + if la_ == 1: + self.state = 1762 + self.match(MySqlParser.ON) + self.state = 1763 + self.match(MySqlParser.DELETE) + self.state = 1764 + localctx.onDelete = self.referenceControlType() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReferenceControlTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESTRICT(self): + return self.getToken(MySqlParser.RESTRICT, 0) + + def CASCADE(self): + return self.getToken(MySqlParser.CASCADE, 0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def NO(self): + return self.getToken(MySqlParser.NO, 0) + + def ACTION(self): + return self.getToken(MySqlParser.ACTION, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_referenceControlType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReferenceControlType" ): + listener.enterReferenceControlType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReferenceControlType" ): + listener.exitReferenceControlType(self) + + + + + def referenceControlType(self): + + localctx = MySqlParser.ReferenceControlTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_referenceControlType) + try: + self.state = 1777 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,182,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1769 + self.match(MySqlParser.RESTRICT) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1770 + self.match(MySqlParser.CASCADE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1771 + self.match(MySqlParser.SET) + self.state = 1772 + self.match(MySqlParser.NULL_LITERAL) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1773 + self.match(MySqlParser.NO) + self.state = 1774 + self.match(MySqlParser.ACTION) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1775 + self.match(MySqlParser.SET) + self.state = 1776 + self.match(MySqlParser.DEFAULT) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexColumnDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_indexColumnDefinition + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SpecialIndexDeclarationContext(IndexColumnDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.IndexColumnDefinitionContext + super().__init__(parser) + self.indexFormat = None # Token + self.copyFrom(ctx) + + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def FULLTEXT(self): + return self.getToken(MySqlParser.FULLTEXT, 0) + def SPATIAL(self): + return self.getToken(MySqlParser.SPATIAL, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecialIndexDeclaration" ): + listener.enterSpecialIndexDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecialIndexDeclaration" ): + listener.exitSpecialIndexDeclaration(self) + + + class SimpleIndexDeclarationContext(IndexColumnDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.IndexColumnDefinitionContext + super().__init__(parser) + self.indexFormat = None # Token + self.copyFrom(ctx) + + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleIndexDeclaration" ): + listener.enterSimpleIndexDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleIndexDeclaration" ): + listener.exitSimpleIndexDeclaration(self) + + + + def indexColumnDefinition(self): + + localctx = MySqlParser.IndexColumnDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_indexColumnDefinition) + self._la = 0 # Token type + try: + self.state = 1807 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [81, 91]: + localctx = MySqlParser.SimpleIndexDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1779 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1781 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1780 + self.uid() + + + self.state = 1784 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 1783 + self.indexType() + + + self.state = 1786 + self.indexColumnNames() + self.state = 1790 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==187 or _la==192 or _la==368 or _la==459 or _la==467 or _la==673 or _la==875 or _la==1000: + self.state = 1787 + self.indexOption() + self.state = 1792 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + elif token in [69, 159]: + localctx = MySqlParser.SpecialIndexDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1793 + _la = self._input.LA(1) + if not(_la==69 or _la==159): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1795 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 1794 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1798 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 1797 + self.uid() + + + self.state = 1800 + self.indexColumnNames() + self.state = 1804 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==187 or _la==192 or _la==368 or _la==459 or _la==467 or _la==673 or _la==875 or _la==1000: + self.state = 1801 + self.indexOption() + self.state = 1806 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_tableOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class TableOptionEngineContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionEngine" ): + listener.enterTableOptionEngine(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionEngine" ): + listener.exitTableOptionEngine(self) + + + class TableOptionMaxRowsContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MAX_ROWS(self): + return self.getToken(MySqlParser.MAX_ROWS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionMaxRows" ): + listener.enterTableOptionMaxRows(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionMaxRows" ): + listener.exitTableOptionMaxRows(self) + + + class TableOptionCollateContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionCollate" ): + listener.enterTableOptionCollate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionCollate" ): + listener.exitTableOptionCollate(self) + + + class TableOptionPersistentContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.extBoolValue = None # Token + self.copyFrom(ctx) + + def STATS_PERSISTENT(self): + return self.getToken(MySqlParser.STATS_PERSISTENT, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionPersistent" ): + listener.enterTableOptionPersistent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionPersistent" ): + listener.exitTableOptionPersistent(self) + + + class TableOptionTablespaceContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def tablespaceStorage(self): + return self.getTypedRuleContext(MySqlParser.TablespaceStorageContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionTablespace" ): + listener.enterTableOptionTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionTablespace" ): + listener.exitTableOptionTablespace(self) + + + class TableOptionAutoextendSizeContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AUTOEXTEND_SIZE(self): + return self.getToken(MySqlParser.AUTOEXTEND_SIZE, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionAutoextendSize" ): + listener.enterTableOptionAutoextendSize(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionAutoextendSize" ): + listener.exitTableOptionAutoextendSize(self) + + + class TableOptionPageCompressedContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PAGE_COMPRESSED(self): + return self.getToken(MySqlParser.PAGE_COMPRESSED, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionPageCompressed" ): + listener.enterTableOptionPageCompressed(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionPageCompressed" ): + listener.exitTableOptionPageCompressed(self) + + + class TableOptionStartTransactionContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def START(self): + return self.getToken(MySqlParser.START, 0) + def TRANSACTION(self): + return self.getToken(MySqlParser.TRANSACTION, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionStartTransaction" ): + listener.enterTableOptionStartTransaction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionStartTransaction" ): + listener.exitTableOptionStartTransaction(self) + + + class TableOptionPackKeysContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.extBoolValue = None # Token + self.copyFrom(ctx) + + def PACK_KEYS(self): + return self.getToken(MySqlParser.PACK_KEYS, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionPackKeys" ): + listener.enterTableOptionPackKeys(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionPackKeys" ): + listener.exitTableOptionPackKeys(self) + + + class TableOptionPasswordContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionPassword" ): + listener.enterTableOptionPassword(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionPassword" ): + listener.exitTableOptionPassword(self) + + + class TableOptionUnionContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def UNION(self): + return self.getToken(MySqlParser.UNION, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionUnion" ): + listener.enterTableOptionUnion(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionUnion" ): + listener.exitTableOptionUnion(self) + + + class TableOptionSamplePageContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def STATS_SAMPLE_PAGES(self): + return self.getToken(MySqlParser.STATS_SAMPLE_PAGES, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionSamplePage" ): + listener.enterTableOptionSamplePage(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionSamplePage" ): + listener.exitTableOptionSamplePage(self) + + + class TableOptionCharsetContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def DEFAULT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.DEFAULT) + else: + return self.getToken(MySqlParser.DEFAULT, i) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionCharset" ): + listener.enterTableOptionCharset(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionCharset" ): + listener.exitTableOptionCharset(self) + + + class TableOptionIndexDirectoryContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionIndexDirectory" ): + listener.enterTableOptionIndexDirectory(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionIndexDirectory" ): + listener.exitTableOptionIndexDirectory(self) + + + class TableOptionTableTypeContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def TABLE_TYPE(self): + return self.getToken(MySqlParser.TABLE_TYPE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def tableType(self): + return self.getTypedRuleContext(MySqlParser.TableTypeContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionTableType" ): + listener.enterTableOptionTableType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionTableType" ): + listener.exitTableOptionTableType(self) + + + class TableOptionKeyBlockSizeContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def KEY_BLOCK_SIZE(self): + return self.getToken(MySqlParser.KEY_BLOCK_SIZE, 0) + def fileSizeLiteral(self): + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionKeyBlockSize" ): + listener.enterTableOptionKeyBlockSize(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionKeyBlockSize" ): + listener.exitTableOptionKeyBlockSize(self) + + + class TableOptionEncryptionContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENCRYPTION(self): + return self.getToken(MySqlParser.ENCRYPTION, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionEncryption" ): + listener.enterTableOptionEncryption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionEncryption" ): + listener.exitTableOptionEncryption(self) + + + class TableOptionDataDirectoryContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionDataDirectory" ): + listener.enterTableOptionDataDirectory(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionDataDirectory" ): + listener.exitTableOptionDataDirectory(self) + + + class TableOptionRecalculationContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.extBoolValue = None # Token + self.copyFrom(ctx) + + def STATS_AUTO_RECALC(self): + return self.getToken(MySqlParser.STATS_AUTO_RECALC, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionRecalculation" ): + listener.enterTableOptionRecalculation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionRecalculation" ): + listener.exitTableOptionRecalculation(self) + + + class TableOptionAutoIncrementContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AUTO_INCREMENT(self): + return self.getToken(MySqlParser.AUTO_INCREMENT, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionAutoIncrement" ): + listener.enterTableOptionAutoIncrement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionAutoIncrement" ): + listener.exitTableOptionAutoIncrement(self) + + + class TableOptionEncryptionKeyIdContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENCRYPTION_KEY_ID(self): + return self.getToken(MySqlParser.ENCRYPTION_KEY_ID, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionEncryptionKeyId" ): + listener.enterTableOptionEncryptionKeyId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionEncryptionKeyId" ): + listener.exitTableOptionEncryptionKeyId(self) + + + class TableOptionChecksumContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.boolValue = None # Token + self.copyFrom(ctx) + + def CHECKSUM(self): + return self.getToken(MySqlParser.CHECKSUM, 0) + def PAGE_CHECKSUM(self): + return self.getToken(MySqlParser.PAGE_CHECKSUM, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionChecksum" ): + listener.enterTableOptionChecksum(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionChecksum" ): + listener.exitTableOptionChecksum(self) + + + class TableOptionDelayContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.boolValue = None # Token + self.copyFrom(ctx) + + def DELAY_KEY_WRITE(self): + return self.getToken(MySqlParser.DELAY_KEY_WRITE, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionDelay" ): + listener.enterTableOptionDelay(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionDelay" ): + listener.exitTableOptionDelay(self) + + + class TableOptionConnectionContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def CONNECTION(self): + return self.getToken(MySqlParser.CONNECTION, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionConnection" ): + listener.enterTableOptionConnection(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionConnection" ): + listener.exitTableOptionConnection(self) + + + class TableOptionTransactionalContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def TRANSACTIONAL(self): + return self.getToken(MySqlParser.TRANSACTIONAL, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionTransactional" ): + listener.enterTableOptionTransactional(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionTransactional" ): + listener.exitTableOptionTransactional(self) + + + class TableOptionPageCompressionLevelContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def PAGE_COMPRESSION_LEVEL(self): + return self.getToken(MySqlParser.PAGE_COMPRESSION_LEVEL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionPageCompressionLevel" ): + listener.enterTableOptionPageCompressionLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionPageCompressionLevel" ): + listener.exitTableOptionPageCompressionLevel(self) + + + class TableOptionSecondaryEngineAttributeContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def SECONDARY_ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionSecondaryEngineAttribute" ): + listener.enterTableOptionSecondaryEngineAttribute(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionSecondaryEngineAttribute" ): + listener.exitTableOptionSecondaryEngineAttribute(self) + + + class TableOptionCommentContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionComment" ): + listener.enterTableOptionComment(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionComment" ): + listener.exitTableOptionComment(self) + + + class TableOptionAverageContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def AVG_ROW_LENGTH(self): + return self.getToken(MySqlParser.AVG_ROW_LENGTH, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionAverage" ): + listener.enterTableOptionAverage(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionAverage" ): + listener.exitTableOptionAverage(self) + + + class TableOptionRowFormatContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.rowFormat = None # Token + self.copyFrom(ctx) + + def ROW_FORMAT(self): + return self.getToken(MySqlParser.ROW_FORMAT, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def DYNAMIC(self): + return self.getToken(MySqlParser.DYNAMIC, 0) + def FIXED(self): + return self.getToken(MySqlParser.FIXED, 0) + def COMPRESSED(self): + return self.getToken(MySqlParser.COMPRESSED, 0) + def REDUNDANT(self): + return self.getToken(MySqlParser.REDUNDANT, 0) + def COMPACT(self): + return self.getToken(MySqlParser.COMPACT, 0) + def ID(self): + return self.getToken(MySqlParser.ID, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionRowFormat" ): + listener.enterTableOptionRowFormat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionRowFormat" ): + listener.exitTableOptionRowFormat(self) + + + class TableOptionCompressionContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def COMPRESSION(self): + return self.getToken(MySqlParser.COMPRESSION, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def ID(self): + return self.getToken(MySqlParser.ID, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionCompression" ): + listener.enterTableOptionCompression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionCompression" ): + listener.exitTableOptionCompression(self) + + + class TableOptionInsertMethodContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.insertMethod = None # Token + self.copyFrom(ctx) + + def INSERT_METHOD(self): + return self.getToken(MySqlParser.INSERT_METHOD, 0) + def NO(self): + return self.getToken(MySqlParser.NO, 0) + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + def LAST(self): + return self.getToken(MySqlParser.LAST, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionInsertMethod" ): + listener.enterTableOptionInsertMethod(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionInsertMethod" ): + listener.exitTableOptionInsertMethod(self) + + + class TableOptionEngineAttributeContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.ENGINE_ATTRIBUTE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionEngineAttribute" ): + listener.enterTableOptionEngineAttribute(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionEngineAttribute" ): + listener.exitTableOptionEngineAttribute(self) + + + class TableOptionMinRowsContext(TableOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MIN_ROWS(self): + return self.getToken(MySqlParser.MIN_ROWS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableOptionMinRows" ): + listener.enterTableOptionMinRows(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableOptionMinRows" ): + listener.exitTableOptionMinRows(self) + + + + def tableOption(self): + + localctx = MySqlParser.TableOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_tableOption) + self._la = 0 # Token type + try: + self.state = 1994 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,227,self._ctx) + if la_ == 1: + localctx = MySqlParser.TableOptionEngineContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1809 + self.match(MySqlParser.ENGINE) + self.state = 1811 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1810 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1814 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,191,self._ctx) + if la_ == 1: + self.state = 1813 + self.engineName() + + + pass + + elif la_ == 2: + localctx = MySqlParser.TableOptionEngineAttributeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1816 + self.match(MySqlParser.ENGINE_ATTRIBUTE) + self.state = 1818 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1817 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1820 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 3: + localctx = MySqlParser.TableOptionAutoextendSizeContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1821 + self.match(MySqlParser.AUTOEXTEND_SIZE) + self.state = 1823 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1822 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1825 + self.decimalLiteral() + pass + + elif la_ == 4: + localctx = MySqlParser.TableOptionAutoIncrementContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1826 + self.match(MySqlParser.AUTO_INCREMENT) + self.state = 1828 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1827 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1830 + self.decimalLiteral() + pass + + elif la_ == 5: + localctx = MySqlParser.TableOptionAverageContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 1831 + self.match(MySqlParser.AVG_ROW_LENGTH) + self.state = 1833 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1832 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1835 + self.decimalLiteral() + pass + + elif la_ == 6: + localctx = MySqlParser.TableOptionCharsetContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 1837 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 1836 + self.match(MySqlParser.DEFAULT) + + + self.state = 1839 + self.charSet() + self.state = 1841 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1840 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1845 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [226, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 1145, 1148]: + self.state = 1843 + self.charsetName() + pass + elif token in [42]: + self.state = 1844 + self.match(MySqlParser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 7: + localctx = MySqlParser.TableOptionChecksumContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 1847 + _la = self._input.LA(1) + if not(_la==356 or _la==357): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1849 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1848 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1851 + localctx.boolValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + localctx.boolValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 8: + localctx = MySqlParser.TableOptionCollateContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 1853 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 1852 + self.match(MySqlParser.DEFAULT) + + + self.state = 1855 + self.match(MySqlParser.COLLATE) + self.state = 1857 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1856 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1859 + self.collationName() + pass + + elif la_ == 9: + localctx = MySqlParser.TableOptionCommentContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 1860 + self.match(MySqlParser.COMMENT) + self.state = 1862 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1861 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1864 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 10: + localctx = MySqlParser.TableOptionCompressionContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 1865 + self.match(MySqlParser.COMPRESSION) + self.state = 1867 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1866 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1869 + _la = self._input.LA(1) + if not(_la==1148 or _la==1156): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 11: + localctx = MySqlParser.TableOptionConnectionContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 1870 + self.match(MySqlParser.CONNECTION) + self.state = 1872 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1871 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1874 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 12: + localctx = MySqlParser.TableOptionDataDirectoryContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 1875 + _la = self._input.LA(1) + if not(_la==81 or _la==388): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1876 + self.match(MySqlParser.DIRECTORY) + self.state = 1878 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1877 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1880 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 13: + localctx = MySqlParser.TableOptionDelayContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 1881 + self.match(MySqlParser.DELAY_KEY_WRITE) + self.state = 1883 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1882 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1885 + localctx.boolValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + localctx.boolValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 14: + localctx = MySqlParser.TableOptionEncryptionContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 1886 + self.match(MySqlParser.ENCRYPTION) + self.state = 1888 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1887 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1890 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 15: + localctx = MySqlParser.TableOptionPageCompressedContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 1891 + _la = self._input.LA(1) + if not(_la==545 or _la==1148): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1893 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1892 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1895 + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 16: + localctx = MySqlParser.TableOptionPageCompressionLevelContext(self, localctx) + self.enterOuterAlt(localctx, 16) + self.state = 1896 + _la = self._input.LA(1) + if not(_la==546 or _la==1148): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1898 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1897 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1900 + self.decimalLiteral() + pass + + elif la_ == 17: + localctx = MySqlParser.TableOptionEncryptionKeyIdContext(self, localctx) + self.enterOuterAlt(localctx, 17) + self.state = 1901 + self.match(MySqlParser.ENCRYPTION_KEY_ID) + self.state = 1903 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1902 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1905 + self.decimalLiteral() + pass + + elif la_ == 18: + localctx = MySqlParser.TableOptionIndexDirectoryContext(self, localctx) + self.enterOuterAlt(localctx, 18) + self.state = 1906 + self.match(MySqlParser.INDEX) + self.state = 1907 + self.match(MySqlParser.DIRECTORY) + self.state = 1909 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1908 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1911 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 19: + localctx = MySqlParser.TableOptionInsertMethodContext(self, localctx) + self.enterOuterAlt(localctx, 19) + self.state = 1912 + self.match(MySqlParser.INSERT_METHOD) + self.state = 1914 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1913 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1916 + localctx.insertMethod = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==430 or _la==469 or _la==521): + localctx.insertMethod = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 20: + localctx = MySqlParser.TableOptionKeyBlockSizeContext(self, localctx) + self.enterOuterAlt(localctx, 20) + self.state = 1917 + self.match(MySqlParser.KEY_BLOCK_SIZE) + self.state = 1919 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1918 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1921 + self.fileSizeLiteral() + pass + + elif la_ == 21: + localctx = MySqlParser.TableOptionMaxRowsContext(self, localctx) + self.enterOuterAlt(localctx, 21) + self.state = 1922 + self.match(MySqlParser.MAX_ROWS) + self.state = 1924 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1923 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1926 + self.decimalLiteral() + pass + + elif la_ == 22: + localctx = MySqlParser.TableOptionMinRowsContext(self, localctx) + self.enterOuterAlt(localctx, 22) + self.state = 1927 + self.match(MySqlParser.MIN_ROWS) + self.state = 1929 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1928 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1931 + self.decimalLiteral() + pass + + elif la_ == 23: + localctx = MySqlParser.TableOptionPackKeysContext(self, localctx) + self.enterOuterAlt(localctx, 23) + self.state = 1932 + self.match(MySqlParser.PACK_KEYS) + self.state = 1934 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1933 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1936 + localctx.extBoolValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==1138 or _la==1139): + localctx.extBoolValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 24: + localctx = MySqlParser.TableOptionPasswordContext(self, localctx) + self.enterOuterAlt(localctx, 24) + self.state = 1937 + self.match(MySqlParser.PASSWORD) + self.state = 1939 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1938 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1941 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 25: + localctx = MySqlParser.TableOptionRowFormatContext(self, localctx) + self.enterOuterAlt(localctx, 25) + self.state = 1942 + self.match(MySqlParser.ROW_FORMAT) + self.state = 1944 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1943 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1946 + localctx.rowFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or ((((_la - 370)) & ~0x3f) == 0 and ((1 << (_la - 370)) & 2305843013508661253) != 0) or _la==573 or _la==1156): + localctx.rowFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 26: + localctx = MySqlParser.TableOptionStartTransactionContext(self, localctx) + self.enterOuterAlt(localctx, 26) + self.state = 1947 + self.match(MySqlParser.START) + self.state = 1948 + self.match(MySqlParser.TRANSACTION) + pass + + elif la_ == 27: + localctx = MySqlParser.TableOptionSecondaryEngineAttributeContext(self, localctx) + self.enterOuterAlt(localctx, 27) + self.state = 1949 + self.match(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE) + self.state = 1951 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1950 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1953 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 28: + localctx = MySqlParser.TableOptionRecalculationContext(self, localctx) + self.enterOuterAlt(localctx, 28) + self.state = 1954 + self.match(MySqlParser.STATS_AUTO_RECALC) + self.state = 1956 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1955 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1958 + localctx.extBoolValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==1138 or _la==1139): + localctx.extBoolValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 29: + localctx = MySqlParser.TableOptionPersistentContext(self, localctx) + self.enterOuterAlt(localctx, 29) + self.state = 1959 + self.match(MySqlParser.STATS_PERSISTENT) + self.state = 1961 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1960 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1963 + localctx.extBoolValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==1138 or _la==1139): + localctx.extBoolValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 30: + localctx = MySqlParser.TableOptionSamplePageContext(self, localctx) + self.enterOuterAlt(localctx, 30) + self.state = 1964 + self.match(MySqlParser.STATS_SAMPLE_PAGES) + self.state = 1966 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1965 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1970 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [42]: + self.state = 1968 + self.match(MySqlParser.DEFAULT) + pass + elif token in [1138, 1139, 1140, 1149, 1151]: + self.state = 1969 + self.decimalLiteral() + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 31: + localctx = MySqlParser.TableOptionTablespaceContext(self, localctx) + self.enterOuterAlt(localctx, 31) + self.state = 1972 + self.match(MySqlParser.TABLESPACE) + self.state = 1973 + self.uid() + self.state = 1975 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,224,self._ctx) + if la_ == 1: + self.state = 1974 + self.tablespaceStorage() + + + pass + + elif la_ == 32: + localctx = MySqlParser.TableOptionTableTypeContext(self, localctx) + self.enterOuterAlt(localctx, 32) + self.state = 1977 + self.match(MySqlParser.TABLE_TYPE) + self.state = 1978 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 1979 + self.tableType() + pass + + elif la_ == 33: + localctx = MySqlParser.TableOptionTablespaceContext(self, localctx) + self.enterOuterAlt(localctx, 33) + self.state = 1980 + self.tablespaceStorage() + pass + + elif la_ == 34: + localctx = MySqlParser.TableOptionTransactionalContext(self, localctx) + self.enterOuterAlt(localctx, 34) + self.state = 1981 + self.match(MySqlParser.TRANSACTIONAL) + self.state = 1983 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1982 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1985 + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 35: + localctx = MySqlParser.TableOptionUnionContext(self, localctx) + self.enterOuterAlt(localctx, 35) + self.state = 1986 + self.match(MySqlParser.UNION) + self.state = 1988 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 1987 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 1990 + self.match(MySqlParser.LR_BRACKET) + self.state = 1991 + self.tables() + self.state = 1992 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MYSQL(self): + return self.getToken(MySqlParser.MYSQL, 0) + + def ODBC(self): + return self.getToken(MySqlParser.ODBC, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_tableType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableType" ): + listener.enterTableType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableType" ): + listener.exitTableType(self) + + + + + def tableType(self): + + localctx = MySqlParser.TableTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_tableType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1996 + _la = self._input.LA(1) + if not(_la==514 or _la==530): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TablespaceStorageContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STORAGE(self): + return self.getToken(MySqlParser.STORAGE, 0) + + def DISK(self): + return self.getToken(MySqlParser.DISK, 0) + + def MEMORY(self): + return self.getToken(MySqlParser.MEMORY, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_tablespaceStorage + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTablespaceStorage" ): + listener.enterTablespaceStorage(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTablespaceStorage" ): + listener.exitTablespaceStorage(self) + + + + + def tablespaceStorage(self): + + localctx = MySqlParser.TablespaceStorageContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_tablespaceStorage) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1998 + self.match(MySqlParser.STORAGE) + self.state = 1999 + _la = self._input.LA(1) + if not(_la==42 or _la==398 or _la==792): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionDefinitionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.count = None # DecimalLiteralContext + self.subCount = None # DecimalLiteralContext + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def BY(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.BY) + else: + return self.getToken(MySqlParser.BY, i) + + def partitionFunctionDefinition(self): + return self.getTypedRuleContext(MySqlParser.PartitionFunctionDefinitionContext,0) + + + def PARTITIONS(self): + return self.getToken(MySqlParser.PARTITIONS, 0) + + def SUBPARTITION(self): + return self.getToken(MySqlParser.SUBPARTITION, 0) + + def subpartitionFunctionDefinition(self): + return self.getTypedRuleContext(MySqlParser.SubpartitionFunctionDefinitionContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def partitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def SUBPARTITIONS(self): + return self.getToken(MySqlParser.SUBPARTITIONS, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_partitionDefinitions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionDefinitions" ): + listener.enterPartitionDefinitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionDefinitions" ): + listener.exitPartitionDefinitions(self) + + + + + def partitionDefinitions(self): + + localctx = MySqlParser.PartitionDefinitionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_partitionDefinitions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2001 + self.match(MySqlParser.PARTITION) + self.state = 2002 + self.match(MySqlParser.BY) + self.state = 2003 + self.partitionFunctionDefinition() + self.state = 2006 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==550: + self.state = 2004 + self.match(MySqlParser.PARTITIONS) + self.state = 2005 + localctx.count = self.decimalLiteral() + + + self.state = 2015 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==641: + self.state = 2008 + self.match(MySqlParser.SUBPARTITION) + self.state = 2009 + self.match(MySqlParser.BY) + self.state = 2010 + self.subpartitionFunctionDefinition() + self.state = 2013 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==642: + self.state = 2011 + self.match(MySqlParser.SUBPARTITIONS) + self.state = 2012 + localctx.subCount = self.decimalLiteral() + + + + + self.state = 2028 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,232,self._ctx) + if la_ == 1: + self.state = 2017 + self.match(MySqlParser.LR_BRACKET) + self.state = 2018 + self.partitionDefinition() + self.state = 2023 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2019 + self.match(MySqlParser.COMMA) + self.state = 2020 + self.partitionDefinition() + self.state = 2025 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2026 + self.match(MySqlParser.RR_BRACKET) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionFunctionDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_partitionFunctionDefinition + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PartitionFunctionKeyContext(PartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionFunctionDefinitionContext + super().__init__(parser) + self.algType = None # Token + self.copyFrom(ctx) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def LINEAR(self): + return self.getToken(MySqlParser.LINEAR, 0) + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def TWO_DECIMAL(self): + return self.getToken(MySqlParser.TWO_DECIMAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionFunctionKey" ): + listener.enterPartitionFunctionKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionFunctionKey" ): + listener.exitPartitionFunctionKey(self) + + + class PartitionFunctionHashContext(PartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionFunctionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def HASH(self): + return self.getToken(MySqlParser.HASH, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def LINEAR(self): + return self.getToken(MySqlParser.LINEAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionFunctionHash" ): + listener.enterPartitionFunctionHash(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionFunctionHash" ): + listener.exitPartitionFunctionHash(self) + + + class PartitionFunctionListContext(PartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionFunctionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LIST(self): + return self.getToken(MySqlParser.LIST, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionFunctionList" ): + listener.enterPartitionFunctionList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionFunctionList" ): + listener.exitPartitionFunctionList(self) + + + class PartitionFunctionRangeContext(PartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionFunctionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def RANGE(self): + return self.getToken(MySqlParser.RANGE, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionFunctionRange" ): + listener.enterPartitionFunctionRange(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionFunctionRange" ): + listener.exitPartitionFunctionRange(self) + + + + def partitionFunctionDefinition(self): + + localctx = MySqlParser.PartitionFunctionDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_partitionFunctionDefinition) + self._la = 0 # Token type + try: + self.state = 2076 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,239,self._ctx) + if la_ == 1: + localctx = MySqlParser.PartitionFunctionHashContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2031 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==100: + self.state = 2030 + self.match(MySqlParser.LINEAR) + + + self.state = 2033 + self.match(MySqlParser.HASH) + self.state = 2034 + self.match(MySqlParser.LR_BRACKET) + self.state = 2035 + self.expression(0) + self.state = 2036 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 2: + localctx = MySqlParser.PartitionFunctionKeyContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2039 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==100: + self.state = 2038 + self.match(MySqlParser.LINEAR) + + + self.state = 2041 + self.match(MySqlParser.KEY) + self.state = 2045 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==336: + self.state = 2042 + self.match(MySqlParser.ALGORITHM) + self.state = 2043 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2044 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1139 or _la==1140): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2047 + self.match(MySqlParser.LR_BRACKET) + self.state = 2049 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2048 + self.uidList() + + + self.state = 2051 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 3: + localctx = MySqlParser.PartitionFunctionRangeContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2052 + self.match(MySqlParser.RANGE) + self.state = 2062 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1133]: + self.state = 2053 + self.match(MySqlParser.LR_BRACKET) + self.state = 2054 + self.expression(0) + self.state = 2055 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [365]: + self.state = 2057 + self.match(MySqlParser.COLUMNS) + self.state = 2058 + self.match(MySqlParser.LR_BRACKET) + self.state = 2059 + self.uidList() + self.state = 2060 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 4: + localctx = MySqlParser.PartitionFunctionListContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2064 + self.match(MySqlParser.LIST) + self.state = 2074 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1133]: + self.state = 2065 + self.match(MySqlParser.LR_BRACKET) + self.state = 2066 + self.expression(0) + self.state = 2067 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [365]: + self.state = 2069 + self.match(MySqlParser.COLUMNS) + self.state = 2070 + self.match(MySqlParser.LR_BRACKET) + self.state = 2071 + self.uidList() + self.state = 2072 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SubpartitionFunctionDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_subpartitionFunctionDefinition + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SubPartitionFunctionHashContext(SubpartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SubpartitionFunctionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def HASH(self): + return self.getToken(MySqlParser.HASH, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def LINEAR(self): + return self.getToken(MySqlParser.LINEAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubPartitionFunctionHash" ): + listener.enterSubPartitionFunctionHash(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubPartitionFunctionHash" ): + listener.exitSubPartitionFunctionHash(self) + + + class SubPartitionFunctionKeyContext(SubpartitionFunctionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SubpartitionFunctionDefinitionContext + super().__init__(parser) + self.algType = None # Token + self.copyFrom(ctx) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def LINEAR(self): + return self.getToken(MySqlParser.LINEAR, 0) + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + def TWO_DECIMAL(self): + return self.getToken(MySqlParser.TWO_DECIMAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubPartitionFunctionKey" ): + listener.enterSubPartitionFunctionKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubPartitionFunctionKey" ): + listener.exitSubPartitionFunctionKey(self) + + + + def subpartitionFunctionDefinition(self): + + localctx = MySqlParser.SubpartitionFunctionDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_subpartitionFunctionDefinition) + self._la = 0 # Token type + try: + self.state = 2099 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,243,self._ctx) + if la_ == 1: + localctx = MySqlParser.SubPartitionFunctionHashContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2079 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==100: + self.state = 2078 + self.match(MySqlParser.LINEAR) + + + self.state = 2081 + self.match(MySqlParser.HASH) + self.state = 2082 + self.match(MySqlParser.LR_BRACKET) + self.state = 2083 + self.expression(0) + self.state = 2084 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 2: + localctx = MySqlParser.SubPartitionFunctionKeyContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2087 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==100: + self.state = 2086 + self.match(MySqlParser.LINEAR) + + + self.state = 2089 + self.match(MySqlParser.KEY) + self.state = 2093 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==336: + self.state = 2090 + self.match(MySqlParser.ALGORITHM) + self.state = 2091 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2092 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1139 or _la==1140): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2095 + self.match(MySqlParser.LR_BRACKET) + self.state = 2096 + self.uidList() + self.state = 2097 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_partitionDefinition + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PartitionComparisonContext(PartitionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + def LESS(self): + return self.getToken(MySqlParser.LESS, 0) + def THAN(self): + return self.getToken(MySqlParser.THAN, 0) + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + def partitionDefinerAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinerAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinerAtomContext,i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def partitionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionOptionContext,i) + + def subpartitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SubpartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.SubpartitionDefinitionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionComparison" ): + listener.enterPartitionComparison(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionComparison" ): + listener.exitPartitionComparison(self) + + + class PartitionListAtomContext(PartitionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + def partitionDefinerAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinerAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinerAtomContext,i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def partitionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionOptionContext,i) + + def subpartitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SubpartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.SubpartitionDefinitionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionListAtom" ): + listener.enterPartitionListAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionListAtom" ): + listener.exitPartitionListAtom(self) + + + class PartitionListVectorContext(PartitionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + def partitionDefinerVector(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinerVectorContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinerVectorContext,i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def partitionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionOptionContext,i) + + def subpartitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SubpartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.SubpartitionDefinitionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionListVector" ): + listener.enterPartitionListVector(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionListVector" ): + listener.exitPartitionListVector(self) + + + class PartitionSimpleContext(PartitionDefinitionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionDefinitionContext + super().__init__(parser) + self.copyFrom(ctx) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def partitionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionOptionContext,i) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def subpartitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SubpartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.SubpartitionDefinitionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionSimple" ): + listener.enterPartitionSimple(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionSimple" ): + listener.exitPartitionSimple(self) + + + + def partitionDefinition(self): + + localctx = MySqlParser.PartitionDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_partitionDefinition) + self._la = 0 # Token type + try: + self.state = 2247 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,262,self._ctx) + if la_ == 1: + localctx = MySqlParser.PartitionComparisonContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2101 + self.match(MySqlParser.PARTITION) + self.state = 2102 + self.uid() + self.state = 2103 + self.match(MySqlParser.VALUES) + self.state = 2104 + self.match(MySqlParser.LESS) + self.state = 2105 + self.match(MySqlParser.THAN) + self.state = 2106 + self.match(MySqlParser.LR_BRACKET) + self.state = 2107 + self.partitionDefinerAtom() + self.state = 2112 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2108 + self.match(MySqlParser.COMMA) + self.state = 2109 + self.partitionDefinerAtom() + self.state = 2114 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2115 + self.match(MySqlParser.RR_BRACKET) + self.state = 2119 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2116 + self.partitionOption() + self.state = 2121 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2133 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2122 + self.match(MySqlParser.LR_BRACKET) + self.state = 2123 + self.subpartitionDefinition() + self.state = 2128 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2124 + self.match(MySqlParser.COMMA) + self.state = 2125 + self.subpartitionDefinition() + self.state = 2130 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2131 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 2: + localctx = MySqlParser.PartitionComparisonContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2135 + self.match(MySqlParser.PARTITION) + self.state = 2136 + self.uid() + self.state = 2137 + self.match(MySqlParser.VALUES) + self.state = 2138 + self.match(MySqlParser.LESS) + self.state = 2139 + self.match(MySqlParser.THAN) + self.state = 2140 + self.partitionDefinerAtom() + self.state = 2144 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2141 + self.partitionOption() + self.state = 2146 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2158 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2147 + self.match(MySqlParser.LR_BRACKET) + self.state = 2148 + self.subpartitionDefinition() + self.state = 2153 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2149 + self.match(MySqlParser.COMMA) + self.state = 2150 + self.subpartitionDefinition() + self.state = 2155 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2156 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 3: + localctx = MySqlParser.PartitionListAtomContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2160 + self.match(MySqlParser.PARTITION) + self.state = 2161 + self.uid() + self.state = 2162 + self.match(MySqlParser.VALUES) + self.state = 2163 + self.match(MySqlParser.IN) + self.state = 2164 + self.match(MySqlParser.LR_BRACKET) + self.state = 2165 + self.partitionDefinerAtom() + self.state = 2170 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2166 + self.match(MySqlParser.COMMA) + self.state = 2167 + self.partitionDefinerAtom() + self.state = 2172 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2173 + self.match(MySqlParser.RR_BRACKET) + self.state = 2177 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2174 + self.partitionOption() + self.state = 2179 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2191 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2180 + self.match(MySqlParser.LR_BRACKET) + self.state = 2181 + self.subpartitionDefinition() + self.state = 2186 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2182 + self.match(MySqlParser.COMMA) + self.state = 2183 + self.subpartitionDefinition() + self.state = 2188 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2189 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 4: + localctx = MySqlParser.PartitionListVectorContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2193 + self.match(MySqlParser.PARTITION) + self.state = 2194 + self.uid() + self.state = 2195 + self.match(MySqlParser.VALUES) + self.state = 2196 + self.match(MySqlParser.IN) + self.state = 2197 + self.match(MySqlParser.LR_BRACKET) + self.state = 2198 + self.partitionDefinerVector() + self.state = 2203 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2199 + self.match(MySqlParser.COMMA) + self.state = 2200 + self.partitionDefinerVector() + self.state = 2205 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2206 + self.match(MySqlParser.RR_BRACKET) + self.state = 2210 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2207 + self.partitionOption() + self.state = 2212 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2224 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2213 + self.match(MySqlParser.LR_BRACKET) + self.state = 2214 + self.subpartitionDefinition() + self.state = 2219 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2215 + self.match(MySqlParser.COMMA) + self.state = 2216 + self.subpartitionDefinition() + self.state = 2221 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2222 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 5: + localctx = MySqlParser.PartitionSimpleContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2226 + self.match(MySqlParser.PARTITION) + self.state = 2227 + self.uid() + self.state = 2231 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2228 + self.partitionOption() + self.state = 2233 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2245 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2234 + self.match(MySqlParser.LR_BRACKET) + self.state = 2235 + self.subpartitionDefinition() + self.state = 2240 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2236 + self.match(MySqlParser.COMMA) + self.state = 2237 + self.subpartitionDefinition() + self.state = 2242 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2243 + self.match(MySqlParser.RR_BRACKET) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionDefinerAtomContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constant(self): + return self.getTypedRuleContext(MySqlParser.ConstantContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def MAXVALUE(self): + return self.getToken(MySqlParser.MAXVALUE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_partitionDefinerAtom + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionDefinerAtom" ): + listener.enterPartitionDefinerAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionDefinerAtom" ): + listener.exitPartitionDefinerAtom(self) + + + + + def partitionDefinerAtom(self): + + localctx = MySqlParser.PartitionDefinerAtomContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_partitionDefinerAtom) + try: + self.state = 2252 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,263,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2249 + self.constant() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2250 + self.expression(0) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2251 + self.match(MySqlParser.MAXVALUE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionDefinerVectorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def partitionDefinerAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinerAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinerAtomContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_partitionDefinerVector + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionDefinerVector" ): + listener.enterPartitionDefinerVector(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionDefinerVector" ): + listener.exitPartitionDefinerVector(self) + + + + + def partitionDefinerVector(self): + + localctx = MySqlParser.PartitionDefinerVectorContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_partitionDefinerVector) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2254 + self.match(MySqlParser.LR_BRACKET) + self.state = 2255 + self.partitionDefinerAtom() + self.state = 2258 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2256 + self.match(MySqlParser.COMMA) + self.state = 2257 + self.partitionDefinerAtom() + self.state = 2260 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==1135): + break + + self.state = 2262 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SubpartitionDefinitionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SUBPARTITION(self): + return self.getToken(MySqlParser.SUBPARTITION, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def partitionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_subpartitionDefinition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubpartitionDefinition" ): + listener.enterSubpartitionDefinition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubpartitionDefinition" ): + listener.exitSubpartitionDefinition(self) + + + + + def subpartitionDefinition(self): + + localctx = MySqlParser.SubpartitionDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 122, self.RULE_subpartitionDefinition) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2264 + self.match(MySqlParser.SUBPARTITION) + self.state = 2265 + self.uid() + self.state = 2269 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==42 or _la==81 or ((((_la - 368)) & ~0x3f) == 0 and ((1 << (_la - 368)) & 2199024304129) != 0) or ((((_la - 500)) & ~0x3f) == 0 and ((1 << (_la - 500)) & 268436481) != 0) or _la==636 or _la==647: + self.state = 2266 + self.partitionOption() + self.state = 2271 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_partitionOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PartitionOptionCommentContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.comment = None # Token + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionComment" ): + listener.enterPartitionOptionComment(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionComment" ): + listener.exitPartitionOptionComment(self) + + + class PartitionOptionNodeGroupContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.nodegroup = None # UidContext + self.copyFrom(ctx) + + def NODEGROUP(self): + return self.getToken(MySqlParser.NODEGROUP, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionNodeGroup" ): + listener.enterPartitionOptionNodeGroup(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionNodeGroup" ): + listener.exitPartitionOptionNodeGroup(self) + + + class PartitionOptionIndexDirectoryContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.indexDirectory = None # Token + self.copyFrom(ctx) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionIndexDirectory" ): + listener.enterPartitionOptionIndexDirectory(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionIndexDirectory" ): + listener.exitPartitionOptionIndexDirectory(self) + + + class PartitionOptionMaxRowsContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.maxRows = None # DecimalLiteralContext + self.copyFrom(ctx) + + def MAX_ROWS(self): + return self.getToken(MySqlParser.MAX_ROWS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionMaxRows" ): + listener.enterPartitionOptionMaxRows(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionMaxRows" ): + listener.exitPartitionOptionMaxRows(self) + + + class PartitionOptionTablespaceContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.tablespace = None # UidContext + self.copyFrom(ctx) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionTablespace" ): + listener.enterPartitionOptionTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionTablespace" ): + listener.exitPartitionOptionTablespace(self) + + + class PartitionOptionEngineContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def STORAGE(self): + return self.getToken(MySqlParser.STORAGE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionEngine" ): + listener.enterPartitionOptionEngine(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionEngine" ): + listener.exitPartitionOptionEngine(self) + + + class PartitionOptionMinRowsContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.minRows = None # DecimalLiteralContext + self.copyFrom(ctx) + + def MIN_ROWS(self): + return self.getToken(MySqlParser.MIN_ROWS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionMinRows" ): + listener.enterPartitionOptionMinRows(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionMinRows" ): + listener.exitPartitionOptionMinRows(self) + + + class PartitionOptionDataDirectoryContext(PartitionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PartitionOptionContext + super().__init__(parser) + self.dataDirectory = None # Token + self.copyFrom(ctx) + + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionOptionDataDirectory" ): + listener.enterPartitionOptionDataDirectory(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionOptionDataDirectory" ): + listener.exitPartitionOptionDataDirectory(self) + + + + def partitionOption(self): + + localctx = MySqlParser.PartitionOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_partitionOption) + self._la = 0 # Token type + try: + self.state = 2320 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [42, 409, 636]: + localctx = MySqlParser.PartitionOptionEngineContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2273 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 2272 + self.match(MySqlParser.DEFAULT) + + + self.state = 2276 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==636: + self.state = 2275 + self.match(MySqlParser.STORAGE) + + + self.state = 2278 + self.match(MySqlParser.ENGINE) + self.state = 2280 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2279 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2282 + self.engineName() + pass + elif token in [368]: + localctx = MySqlParser.PartitionOptionCommentContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2283 + self.match(MySqlParser.COMMENT) + self.state = 2285 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2284 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2287 + localctx.comment = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [388]: + localctx = MySqlParser.PartitionOptionDataDirectoryContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2288 + self.match(MySqlParser.DATA) + self.state = 2289 + self.match(MySqlParser.DIRECTORY) + self.state = 2291 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2290 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2293 + localctx.dataDirectory = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [81]: + localctx = MySqlParser.PartitionOptionIndexDirectoryContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2294 + self.match(MySqlParser.INDEX) + self.state = 2295 + self.match(MySqlParser.DIRECTORY) + self.state = 2297 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2296 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2299 + localctx.indexDirectory = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [500]: + localctx = MySqlParser.PartitionOptionMaxRowsContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2300 + self.match(MySqlParser.MAX_ROWS) + self.state = 2302 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2301 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2304 + localctx.maxRows = self.decimalLiteral() + pass + elif token in [510]: + localctx = MySqlParser.PartitionOptionMinRowsContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 2305 + self.match(MySqlParser.MIN_ROWS) + self.state = 2307 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2306 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2309 + localctx.minRows = self.decimalLiteral() + pass + elif token in [647]: + localctx = MySqlParser.PartitionOptionTablespaceContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 2310 + self.match(MySqlParser.TABLESPACE) + self.state = 2312 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2311 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2314 + localctx.tablespace = self.uid() + pass + elif token in [528]: + localctx = MySqlParser.PartitionOptionNodeGroupContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 2315 + self.match(MySqlParser.NODEGROUP) + self.state = 2317 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2316 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2319 + localctx.nodegroup = self.uid() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterDatabaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_alterDatabase + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AlterUpgradeNameContext(AlterDatabaseContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterDatabaseContext + super().__init__(parser) + self.dbFormat = None # Token + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def UPGRADE(self): + return self.getToken(MySqlParser.UPGRADE, 0) + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + def NAME(self): + return self.getToken(MySqlParser.NAME, 0) + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterUpgradeName" ): + listener.enterAlterUpgradeName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterUpgradeName" ): + listener.exitAlterUpgradeName(self) + + + class AlterSimpleDatabaseContext(AlterDatabaseContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterDatabaseContext + super().__init__(parser) + self.dbFormat = None # Token + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def createDatabaseOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CreateDatabaseOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.CreateDatabaseOptionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterSimpleDatabase" ): + listener.enterAlterSimpleDatabase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterSimpleDatabase" ): + listener.exitAlterSimpleDatabase(self) + + + + def alterDatabase(self): + + localctx = MySqlParser.AlterDatabaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_alterDatabase) + self._la = 0 # Token type + try: + self.state = 2340 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,279,self._ctx) + if la_ == 1: + localctx = MySqlParser.AlterSimpleDatabaseContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2322 + self.match(MySqlParser.ALTER) + self.state = 2323 + localctx.dbFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==39 or _la==150): + localctx.dbFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2325 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,277,self._ctx) + if la_ == 1: + self.state = 2324 + self.uid() + + + self.state = 2328 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2327 + self.createDatabaseOption() + self.state = 2330 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 4398214283264) != 0) or _la==134 or _la==222 or _la==405 or _la==841): + break + + pass + + elif la_ == 2: + localctx = MySqlParser.AlterUpgradeNameContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2332 + self.match(MySqlParser.ALTER) + self.state = 2333 + localctx.dbFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==39 or _la==150): + localctx.dbFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2334 + self.uid() + self.state = 2335 + self.match(MySqlParser.UPGRADE) + self.state = 2336 + self.match(MySqlParser.DATA) + self.state = 2337 + self.match(MySqlParser.DIRECTORY) + self.state = 2338 + self.match(MySqlParser.NAME) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterEventContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + + def fullId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullIdContext) + else: + return self.getTypedRuleContext(MySqlParser.FullIdContext,i) + + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + + def SCHEDULE(self): + return self.getToken(MySqlParser.SCHEDULE, 0) + + def scheduleExpression(self): + return self.getTypedRuleContext(MySqlParser.ScheduleExpressionContext,0) + + + def COMPLETION(self): + return self.getToken(MySqlParser.COMPLETION, 0) + + def PRESERVE(self): + return self.getToken(MySqlParser.PRESERVE, 0) + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def enableType(self): + return self.getTypedRuleContext(MySqlParser.EnableTypeContext,0) + + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def DO(self): + return self.getToken(MySqlParser.DO, 0) + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_alterEvent + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterEvent" ): + listener.enterAlterEvent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterEvent" ): + listener.exitAlterEvent(self) + + + + + def alterEvent(self): + + localctx = MySqlParser.AlterEventContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_alterEvent) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2342 + self.match(MySqlParser.ALTER) + self.state = 2344 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 2343 + self.ownerStatement() + + + self.state = 2346 + self.match(MySqlParser.EVENT) + self.state = 2347 + self.fullId() + self.state = 2351 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,281,self._ctx) + if la_ == 1: + self.state = 2348 + self.match(MySqlParser.ON) + self.state = 2349 + self.match(MySqlParser.SCHEDULE) + self.state = 2350 + self.scheduleExpression() + + + self.state = 2359 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==118: + self.state = 2353 + self.match(MySqlParser.ON) + self.state = 2354 + self.match(MySqlParser.COMPLETION) + self.state = 2356 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 2355 + self.match(MySqlParser.NOT) + + + self.state = 2358 + self.match(MySqlParser.PRESERVE) + + + self.state = 2364 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,284,self._ctx) + if la_ == 1: + self.state = 2361 + self.match(MySqlParser.RENAME) + self.state = 2362 + self.match(MySqlParser.TO) + self.state = 2363 + self.fullId() + + + self.state = 2367 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==396 or _la==403: + self.state = 2366 + self.enableType() + + + self.state = 2371 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==368: + self.state = 2369 + self.match(MySqlParser.COMMENT) + self.state = 2370 + self.match(MySqlParser.STRING_LITERAL) + + + self.state = 2375 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,287,self._ctx) + if la_ == 1: + self.state = 2373 + self.match(MySqlParser.DO) + self.state = 2374 + self.routineBody() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def routineOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoutineOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.RoutineOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_alterFunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterFunction" ): + listener.enterAlterFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterFunction" ): + listener.exitAlterFunction(self) + + + + + def alterFunction(self): + + localctx = MySqlParser.AlterFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_alterFunction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2377 + self.match(MySqlParser.ALTER) + self.state = 2378 + self.match(MySqlParser.FUNCTION) + self.state = 2379 + self.fullId() + self.state = 2383 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==47 or ((((_la - 112)) & ~0x3f) == 0 and ((1 << (_la - 112)) & 281474985099269) != 0) or _la==368 or _la==381 or _la==468 or _la==521: + self.state = 2380 + self.routineOption() + self.state = 2385 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterInstanceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def INSTANCE(self): + return self.getToken(MySqlParser.INSTANCE, 0) + + def ROTATE(self): + return self.getToken(MySqlParser.ROTATE, 0) + + def INNODB(self): + return self.getToken(MySqlParser.INNODB, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_alterInstance + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterInstance" ): + listener.enterAlterInstance(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterInstance" ): + listener.exitAlterInstance(self) + + + + + def alterInstance(self): + + localctx = MySqlParser.AlterInstanceContext(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_alterInstance) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2386 + self.match(MySqlParser.ALTER) + self.state = 2387 + self.match(MySqlParser.INSTANCE) + self.state = 2388 + self.match(MySqlParser.ROTATE) + self.state = 2389 + self.match(MySqlParser.INNODB) + self.state = 2390 + self.match(MySqlParser.MASTER) + self.state = 2391 + self.match(MySqlParser.KEY) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterLogfileGroupContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def LOGFILE(self): + return self.getToken(MySqlParser.LOGFILE, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + + def UNDOFILE(self): + return self.getToken(MySqlParser.UNDOFILE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def INITIAL_SIZE(self): + return self.getToken(MySqlParser.INITIAL_SIZE, 0) + + def fileSizeLiteral(self): + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,0) + + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def getRuleIndex(self): + return MySqlParser.RULE_alterLogfileGroup + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterLogfileGroup" ): + listener.enterAlterLogfileGroup(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterLogfileGroup" ): + listener.exitAlterLogfileGroup(self) + + + + + def alterLogfileGroup(self): + + localctx = MySqlParser.AlterLogfileGroupContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_alterLogfileGroup) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2393 + self.match(MySqlParser.ALTER) + self.state = 2394 + self.match(MySqlParser.LOGFILE) + self.state = 2395 + self.match(MySqlParser.GROUP) + self.state = 2396 + self.uid() + self.state = 2397 + self.match(MySqlParser.ADD) + self.state = 2398 + self.match(MySqlParser.UNDOFILE) + self.state = 2399 + self.match(MySqlParser.STRING_LITERAL) + self.state = 2405 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==453: + self.state = 2400 + self.match(MySqlParser.INITIAL_SIZE) + self.state = 2402 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2401 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2404 + self.fileSizeLiteral() + + + self.state = 2408 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==674: + self.state = 2407 + self.match(MySqlParser.WAIT) + + + self.state = 2410 + self.match(MySqlParser.ENGINE) + self.state = 2412 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2411 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2414 + self.engineName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterProcedureContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def routineOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoutineOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.RoutineOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_alterProcedure + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterProcedure" ): + listener.enterAlterProcedure(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterProcedure" ): + listener.exitAlterProcedure(self) + + + + + def alterProcedure(self): + + localctx = MySqlParser.AlterProcedureContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_alterProcedure) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2416 + self.match(MySqlParser.ALTER) + self.state = 2417 + self.match(MySqlParser.PROCEDURE) + self.state = 2418 + self.fullId() + self.state = 2422 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==47 or ((((_la - 112)) & ~0x3f) == 0 and ((1 << (_la - 112)) & 281474985099269) != 0) or _la==368 or _la==381 or _la==468 or _la==521: + self.state = 2419 + self.routineOption() + self.state = 2424 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterServerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def SERVER(self): + return self.getToken(MySqlParser.SERVER, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def OPTIONS(self): + return self.getToken(MySqlParser.OPTIONS, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def serverOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ServerOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.ServerOptionContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_alterServer + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterServer" ): + listener.enterAlterServer(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterServer" ): + listener.exitAlterServer(self) + + + + + def alterServer(self): + + localctx = MySqlParser.AlterServerContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_alterServer) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2425 + self.match(MySqlParser.ALTER) + self.state = 2426 + self.match(MySqlParser.SERVER) + self.state = 2427 + self.uid() + self.state = 2428 + self.match(MySqlParser.OPTIONS) + self.state = 2429 + self.match(MySqlParser.LR_BRACKET) + self.state = 2430 + self.serverOption() + self.state = 2435 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2431 + self.match(MySqlParser.COMMA) + self.state = 2432 + self.serverOption() + self.state = 2437 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2438 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.intimeAction = None # Token + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def waitNowaitClause(self): + return self.getTypedRuleContext(MySqlParser.WaitNowaitClauseContext,0) + + + def alterSpecification(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.AlterSpecificationContext) + else: + return self.getTypedRuleContext(MySqlParser.AlterSpecificationContext,i) + + + def partitionDefinitions(self): + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionsContext,0) + + + def ONLINE(self): + return self.getToken(MySqlParser.ONLINE, 0) + + def OFFLINE(self): + return self.getToken(MySqlParser.OFFLINE, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_alterTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterTable" ): + listener.enterAlterTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterTable" ): + listener.exitAlterTable(self) + + + + + def alterTable(self): + + localctx = MySqlParser.AlterTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_alterTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2440 + self.match(MySqlParser.ALTER) + self.state = 2442 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==531 or _la==537: + self.state = 2441 + localctx.intimeAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==531 or _la==537): + localctx.intimeAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2445 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 2444 + self.match(MySqlParser.IGNORE) + + + self.state = 2447 + self.match(MySqlParser.TABLE) + self.state = 2448 + self.tableName() + self.state = 2450 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==527 or _la==674: + self.state = 2449 + self.waitNowaitClause() + + + self.state = 2460 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,299,self._ctx) + if la_ == 1: + self.state = 2452 + self.alterSpecification() + self.state = 2457 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2453 + self.match(MySqlParser.COMMA) + self.state = 2454 + self.alterSpecification() + self.state = 2459 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 2463 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 2462 + self.partitionDefinitions() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterTablespaceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.objectAction = None # Token + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def DATAFILE(self): + return self.getToken(MySqlParser.DATAFILE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def INITIAL_SIZE(self): + return self.getToken(MySqlParser.INITIAL_SIZE, 0) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def fileSizeLiteral(self): + return self.getTypedRuleContext(MySqlParser.FileSizeLiteralContext,0) + + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_alterTablespace + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterTablespace" ): + listener.enterAlterTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterTablespace" ): + listener.exitAlterTablespace(self) + + + + + def alterTablespace(self): + + localctx = MySqlParser.AlterTablespaceContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_alterTablespace) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2465 + self.match(MySqlParser.ALTER) + self.state = 2466 + self.match(MySqlParser.TABLESPACE) + self.state = 2467 + self.uid() + self.state = 2468 + localctx.objectAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==5 or _la==51): + localctx.objectAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2469 + self.match(MySqlParser.DATAFILE) + self.state = 2470 + self.match(MySqlParser.STRING_LITERAL) + self.state = 2474 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==453: + self.state = 2471 + self.match(MySqlParser.INITIAL_SIZE) + self.state = 2472 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2473 + self.fileSizeLiteral() + + + self.state = 2477 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==674: + self.state = 2476 + self.match(MySqlParser.WAIT) + + + self.state = 2479 + self.match(MySqlParser.ENGINE) + self.state = 2481 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2480 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2483 + self.engineName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterViewContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.algType = None # Token + self.secContext = None # Token + self.checkOpt = None # Token + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def ownerStatement(self): + return self.getTypedRuleContext(MySqlParser.OwnerStatementContext,0) + + + def SQL(self): + return self.getToken(MySqlParser.SQL, 0) + + def SECURITY(self): + return self.getToken(MySqlParser.SECURITY, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + + def OPTION(self): + return self.getToken(MySqlParser.OPTION, 0) + + def UNDEFINED(self): + return self.getToken(MySqlParser.UNDEFINED, 0) + + def MERGE(self): + return self.getToken(MySqlParser.MERGE, 0) + + def TEMPTABLE(self): + return self.getToken(MySqlParser.TEMPTABLE, 0) + + def DEFINER(self): + return self.getToken(MySqlParser.DEFINER, 0) + + def INVOKER(self): + return self.getToken(MySqlParser.INVOKER, 0) + + def CASCADED(self): + return self.getToken(MySqlParser.CASCADED, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_alterView + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterView" ): + listener.enterAlterView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterView" ): + listener.exitAlterView(self) + + + + + def alterView(self): + + localctx = MySqlParser.AlterViewContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_alterView) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2485 + self.match(MySqlParser.ALTER) + self.state = 2489 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==336: + self.state = 2486 + self.match(MySqlParser.ALGORITHM) + self.state = 2487 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2488 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==506 or _la==650 or _la==658): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2492 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==392: + self.state = 2491 + self.ownerStatement() + + + self.state = 2497 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==160: + self.state = 2494 + self.match(MySqlParser.SQL) + self.state = 2495 + self.match(MySqlParser.SECURITY) + self.state = 2496 + localctx.secContext = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==392 or _la==460): + localctx.secContext = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2499 + self.match(MySqlParser.VIEW) + self.state = 2500 + self.fullId() + self.state = 2505 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 2501 + self.match(MySqlParser.LR_BRACKET) + self.state = 2502 + self.uidList() + self.state = 2503 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 2507 + self.match(MySqlParser.AS) + self.state = 2508 + self.selectStatement() + self.state = 2515 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,309,self._ctx) + if la_ == 1: + self.state = 2509 + self.match(MySqlParser.WITH) + self.state = 2511 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==352 or _la==474: + self.state = 2510 + localctx.checkOpt = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==352 or _la==474): + localctx.checkOpt = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2513 + self.match(MySqlParser.CHECK) + self.state = 2514 + self.match(MySqlParser.OPTION) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterSpecificationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_alterSpecification + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AlterByAlterColumnDefaultContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def VISIBLE(self): + return self.getToken(MySqlParser.VISIBLE, 0) + def INVISIBLE(self): + return self.getToken(MySqlParser.INVISIBLE, 0) + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAlterColumnDefault" ): + listener.enterAlterByAlterColumnDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAlterColumnDefault" ): + listener.exitAlterByAlterColumnDefault(self) + + + class AlterByDisableKeysContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DISABLE(self): + return self.getToken(MySqlParser.DISABLE, 0) + def KEYS(self): + return self.getToken(MySqlParser.KEYS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDisableKeys" ): + listener.enterAlterByDisableKeys(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDisableKeys" ): + listener.exitAlterByDisableKeys(self) + + + class AlterByDefaultCharsetContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDefaultCharset" ): + listener.enterAlterByDefaultCharset(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDefaultCharset" ): + listener.exitAlterByDefaultCharset(self) + + + class AlterByRenameColumnContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.oldColumn = None # UidContext + self.newColumn = None # UidContext + self.copyFrom(ctx) + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def TO(self): + return self.getToken(MySqlParser.TO, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRenameColumn" ): + listener.enterAlterByRenameColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRenameColumn" ): + listener.exitAlterByRenameColumn(self) + + + class AlterByConvertCharsetContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def CONVERT(self): + return self.getToken(MySqlParser.CONVERT, 0) + def TO(self): + return self.getToken(MySqlParser.TO, 0) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def CHARSET(self): + return self.getToken(MySqlParser.CHARSET, 0) + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByConvertCharset" ): + listener.enterAlterByConvertCharset(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByConvertCharset" ): + listener.exitAlterByConvertCharset(self) + + + class AlterByAddForeignKeyContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.name = None # UidContext + self.indexName = None # UidContext + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def FOREIGN(self): + return self.getToken(MySqlParser.FOREIGN, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def referenceDefinition(self): + return self.getTypedRuleContext(MySqlParser.ReferenceDefinitionContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddForeignKey" ): + listener.enterAlterByAddForeignKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddForeignKey" ): + listener.exitAlterByAddForeignKey(self) + + + class AlterByRenameIndexContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.indexFormat = None # Token + self.copyFrom(ctx) + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRenameIndex" ): + listener.enterAlterByRenameIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRenameIndex" ): + listener.exitAlterByRenameIndex(self) + + + class AlterByRenameContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.renameFormat = None # Token + self.copyFrom(ctx) + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRename" ): + listener.enterAlterByRename(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRename" ): + listener.exitAlterByRename(self) + + + class AlterByImportTablespaceContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def IMPORT(self): + return self.getToken(MySqlParser.IMPORT, 0) + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByImportTablespace" ): + listener.enterAlterByImportTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByImportTablespace" ): + listener.exitAlterByImportTablespace(self) + + + class AlterByAddDefinitionsContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def createDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CreateDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.CreateDefinitionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddDefinitions" ): + listener.enterAlterByAddDefinitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddDefinitions" ): + listener.exitAlterByAddDefinitions(self) + + + class AlterByAlterCheckTableConstraintContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.name = None # UidContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def ENFORCED(self): + return self.getToken(MySqlParser.ENFORCED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAlterCheckTableConstraint" ): + listener.enterAlterByAlterCheckTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAlterCheckTableConstraint" ): + listener.exitAlterByAlterCheckTableConstraint(self) + + + class AlterByDropConstraintCheckContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropConstraintCheck" ): + listener.enterAlterByDropConstraintCheck(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropConstraintCheck" ): + listener.exitAlterByDropConstraintCheck(self) + + + class AlterByAddColumnsContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def columnDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ColumnDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.ColumnDefinitionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddColumns" ): + listener.enterAlterByAddColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddColumns" ): + listener.exitAlterByAddColumns(self) + + + class AlterByAlterIndexVisibilityContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def VISIBLE(self): + return self.getToken(MySqlParser.VISIBLE, 0) + def INVISIBLE(self): + return self.getToken(MySqlParser.INVISIBLE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAlterIndexVisibility" ): + listener.enterAlterByAlterIndexVisibility(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAlterIndexVisibility" ): + listener.exitAlterByAlterIndexVisibility(self) + + + class AlterByDropForeignKeyContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def FOREIGN(self): + return self.getToken(MySqlParser.FOREIGN, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropForeignKey" ): + listener.enterAlterByDropForeignKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropForeignKey" ): + listener.exitAlterByDropForeignKey(self) + + + class AlterByAddCheckTableConstraintContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.name = None # UidContext + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def ENFORCED(self): + return self.getToken(MySqlParser.ENFORCED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddCheckTableConstraint" ): + listener.enterAlterByAddCheckTableConstraint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddCheckTableConstraint" ): + listener.exitAlterByAddCheckTableConstraint(self) + + + class AlterPartitionContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def alterPartitionSpecification(self): + return self.getTypedRuleContext(MySqlParser.AlterPartitionSpecificationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterPartition" ): + listener.enterAlterPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterPartition" ): + listener.exitAlterPartition(self) + + + class AlterByAddIndexContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.indexFormat = None # Token + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddIndex" ): + listener.enterAlterByAddIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddIndex" ): + listener.exitAlterByAddIndex(self) + + + class AlterByDropColumnContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def RESTRICT(self): + return self.getToken(MySqlParser.RESTRICT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropColumn" ): + listener.enterAlterByDropColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropColumn" ): + listener.exitAlterByDropColumn(self) + + + class AlterByChangeDefaultContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def defaultValue(self): + return self.getTypedRuleContext(MySqlParser.DefaultValueContext,0) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByChangeDefault" ): + listener.enterAlterByChangeDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByChangeDefault" ): + listener.exitAlterByChangeDefault(self) + + + class AlterByForceContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def FORCE(self): + return self.getToken(MySqlParser.FORCE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByForce" ): + listener.enterAlterByForce(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByForce" ): + listener.exitAlterByForce(self) + + + class AlterByAddSpecialIndexContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.keyType = None # Token + self.indexFormat = None # Token + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def FULLTEXT(self): + return self.getToken(MySqlParser.FULLTEXT, 0) + def SPATIAL(self): + return self.getToken(MySqlParser.SPATIAL, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddSpecialIndex" ): + listener.enterAlterByAddSpecialIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddSpecialIndex" ): + listener.exitAlterByAddSpecialIndex(self) + + + class AlterByModifyColumnContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def MODIFY(self): + return self.getToken(MySqlParser.MODIFY, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def columnDefinition(self): + return self.getTypedRuleContext(MySqlParser.ColumnDefinitionContext,0) + + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + def AFTER(self): + return self.getToken(MySqlParser.AFTER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByModifyColumn" ): + listener.enterAlterByModifyColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByModifyColumn" ): + listener.exitAlterByModifyColumn(self) + + + class AlterByTableOptionContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def tableOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TableOptionContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByTableOption" ): + listener.enterAlterByTableOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByTableOption" ): + listener.exitAlterByTableOption(self) + + + class AlterByDropPrimaryKeyContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def PRIMARY(self): + return self.getToken(MySqlParser.PRIMARY, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropPrimaryKey" ): + listener.enterAlterByDropPrimaryKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropPrimaryKey" ): + listener.exitAlterByDropPrimaryKey(self) + + + class AlterByLockContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.lockType = None # Token + self.copyFrom(ctx) + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + def SHARED(self): + return self.getToken(MySqlParser.SHARED, 0) + def EXCLUSIVE(self): + return self.getToken(MySqlParser.EXCLUSIVE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByLock" ): + listener.enterAlterByLock(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByLock" ): + listener.exitAlterByLock(self) + + + class AlterByDiscardTablespaceContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DISCARD(self): + return self.getToken(MySqlParser.DISCARD, 0) + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDiscardTablespace" ): + listener.enterAlterByDiscardTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDiscardTablespace" ): + listener.exitAlterByDiscardTablespace(self) + + + class AlterByValidateContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.validationFormat = None # Token + self.copyFrom(ctx) + + def VALIDATION(self): + return self.getToken(MySqlParser.VALIDATION, 0) + def WITHOUT(self): + return self.getToken(MySqlParser.WITHOUT, 0) + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByValidate" ): + listener.enterAlterByValidate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByValidate" ): + listener.exitAlterByValidate(self) + + + class AlterByAddPrimaryKeyContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.name = None # UidContext + self.index = None # UidContext + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def PRIMARY(self): + return self.getToken(MySqlParser.PRIMARY, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddPrimaryKey" ): + listener.enterAlterByAddPrimaryKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddPrimaryKey" ): + listener.exitAlterByAddPrimaryKey(self) + + + class AlterByEnableKeysContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ENABLE(self): + return self.getToken(MySqlParser.ENABLE, 0) + def KEYS(self): + return self.getToken(MySqlParser.KEYS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByEnableKeys" ): + listener.enterAlterByEnableKeys(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByEnableKeys" ): + listener.exitAlterByEnableKeys(self) + + + class AlterBySetAlgorithmContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.algType = None # Token + self.copyFrom(ctx) + + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def INSTANT(self): + return self.getToken(MySqlParser.INSTANT, 0) + def INPLACE(self): + return self.getToken(MySqlParser.INPLACE, 0) + def COPY(self): + return self.getToken(MySqlParser.COPY, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterBySetAlgorithm" ): + listener.enterAlterBySetAlgorithm(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterBySetAlgorithm" ): + listener.exitAlterBySetAlgorithm(self) + + + class AlterByChangeColumnContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.oldColumn = None # UidContext + self.newColumn = None # UidContext + self.afterColumn = None # UidContext + self.copyFrom(ctx) + + def CHANGE(self): + return self.getToken(MySqlParser.CHANGE, 0) + def columnDefinition(self): + return self.getTypedRuleContext(MySqlParser.ColumnDefinitionContext,0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + def AFTER(self): + return self.getToken(MySqlParser.AFTER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByChangeColumn" ): + listener.enterAlterByChangeColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByChangeColumn" ): + listener.exitAlterByChangeColumn(self) + + + class AlterByAddUniqueKeyContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.name = None # UidContext + self.indexFormat = None # Token + self.indexName = None # UidContext + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def UNIQUE(self): + return self.getToken(MySqlParser.UNIQUE, 0) + def indexColumnNames(self): + return self.getTypedRuleContext(MySqlParser.IndexColumnNamesContext,0) + + def CONSTRAINT(self): + return self.getToken(MySqlParser.CONSTRAINT, 0) + def indexType(self): + return self.getTypedRuleContext(MySqlParser.IndexTypeContext,0) + + def indexOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexOptionContext,i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddUniqueKey" ): + listener.enterAlterByAddUniqueKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddUniqueKey" ): + listener.exitAlterByAddUniqueKey(self) + + + class AlterByDropIndexContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.indexFormat = None # Token + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropIndex" ): + listener.enterAlterByDropIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropIndex" ): + listener.exitAlterByDropIndex(self) + + + class AlterByAddColumnContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def columnDefinition(self): + return self.getTypedRuleContext(MySqlParser.ColumnDefinitionContext,0) + + def COLUMN(self): + return self.getToken(MySqlParser.COLUMN, 0) + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + def AFTER(self): + return self.getToken(MySqlParser.AFTER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddColumn" ): + listener.enterAlterByAddColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddColumn" ): + listener.exitAlterByAddColumn(self) + + + class AlterByOrderContext(AlterSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ORDER(self): + return self.getToken(MySqlParser.ORDER, 0) + def BY(self): + return self.getToken(MySqlParser.BY, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByOrder" ): + listener.enterAlterByOrder(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByOrder" ): + listener.exitAlterByOrder(self) + + + + def alterSpecification(self): + + localctx = MySqlParser.AlterSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_alterSpecification) + self._la = 0 # Token type + try: + self.state = 2868 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,369,self._ctx) + if la_ == 1: + localctx = MySqlParser.AlterByTableOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2517 + self.tableOption() + self.state = 2524 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,311,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2519 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 2518 + self.match(MySqlParser.COMMA) + + + self.state = 2521 + self.tableOption() + self.state = 2526 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,311,self._ctx) + + pass + + elif la_ == 2: + localctx = MySqlParser.AlterByAddColumnContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2527 + self.match(MySqlParser.ADD) + self.state = 2529 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2528 + self.match(MySqlParser.COLUMN) + + + self.state = 2531 + self.uid() + self.state = 2532 + self.columnDefinition() + self.state = 2536 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [430]: + self.state = 2533 + self.match(MySqlParser.FIRST) + pass + elif token in [334]: + self.state = 2534 + self.match(MySqlParser.AFTER) + self.state = 2535 + self.uid() + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 129, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1135, 1136]: + pass + else: + pass + pass + + elif la_ == 3: + localctx = MySqlParser.AlterByAddColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2538 + self.match(MySqlParser.ADD) + self.state = 2540 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2539 + self.match(MySqlParser.COLUMN) + + + self.state = 2542 + self.match(MySqlParser.LR_BRACKET) + self.state = 2543 + self.uid() + self.state = 2544 + self.columnDefinition() + self.state = 2551 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2545 + self.match(MySqlParser.COMMA) + self.state = 2546 + self.uid() + self.state = 2547 + self.columnDefinition() + self.state = 2553 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2554 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 4: + localctx = MySqlParser.AlterByAddIndexContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2556 + self.match(MySqlParser.ADD) + self.state = 2557 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2559 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2558 + self.uid() + + + self.state = 2562 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 2561 + self.indexType() + + + self.state = 2564 + self.indexColumnNames() + self.state = 2568 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,318,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2565 + self.indexOption() + self.state = 2570 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,318,self._ctx) + + pass + + elif la_ == 5: + localctx = MySqlParser.AlterByAddPrimaryKeyContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2571 + self.match(MySqlParser.ADD) + self.state = 2576 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2572 + self.match(MySqlParser.CONSTRAINT) + self.state = 2574 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,319,self._ctx) + if la_ == 1: + self.state = 2573 + localctx.name = self.uid() + + + + + self.state = 2578 + self.match(MySqlParser.PRIMARY) + self.state = 2579 + self.match(MySqlParser.KEY) + self.state = 2581 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2580 + localctx.index = self.uid() + + + self.state = 2584 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 2583 + self.indexType() + + + self.state = 2586 + self.indexColumnNames() + self.state = 2590 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,323,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2587 + self.indexOption() + self.state = 2592 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,323,self._ctx) + + pass + + elif la_ == 6: + localctx = MySqlParser.AlterByAddUniqueKeyContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 2593 + self.match(MySqlParser.ADD) + self.state = 2598 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2594 + self.match(MySqlParser.CONSTRAINT) + self.state = 2596 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2595 + localctx.name = self.uid() + + + + + self.state = 2600 + self.match(MySqlParser.UNIQUE) + self.state = 2602 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 2601 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2605 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2604 + localctx.indexName = self.uid() + + + self.state = 2608 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 2607 + self.indexType() + + + self.state = 2610 + self.indexColumnNames() + self.state = 2614 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,329,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2611 + self.indexOption() + self.state = 2616 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,329,self._ctx) + + pass + + elif la_ == 7: + localctx = MySqlParser.AlterByAddSpecialIndexContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 2617 + self.match(MySqlParser.ADD) + self.state = 2618 + localctx.keyType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==69 or _la==159): + localctx.keyType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2620 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 2619 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2623 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2622 + self.uid() + + + self.state = 2625 + self.indexColumnNames() + self.state = 2629 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,332,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2626 + self.indexOption() + self.state = 2631 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,332,self._ctx) + + pass + + elif la_ == 8: + localctx = MySqlParser.AlterByAddForeignKeyContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 2632 + self.match(MySqlParser.ADD) + self.state = 2637 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2633 + self.match(MySqlParser.CONSTRAINT) + self.state = 2635 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2634 + localctx.name = self.uid() + + + + + self.state = 2639 + self.match(MySqlParser.FOREIGN) + self.state = 2640 + self.match(MySqlParser.KEY) + self.state = 2642 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2641 + localctx.indexName = self.uid() + + + self.state = 2644 + self.indexColumnNames() + self.state = 2645 + self.referenceDefinition() + pass + + elif la_ == 9: + localctx = MySqlParser.AlterByAddCheckTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 2647 + self.match(MySqlParser.ADD) + self.state = 2652 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2648 + self.match(MySqlParser.CONSTRAINT) + self.state = 2650 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2649 + localctx.name = self.uid() + + + + + self.state = 2654 + self.match(MySqlParser.CHECK) + self.state = 2661 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,338,self._ctx) + if la_ == 1: + self.state = 2655 + self.uid() + pass + + elif la_ == 2: + self.state = 2656 + self.stringLiteral() + pass + + elif la_ == 3: + self.state = 2657 + self.match(MySqlParser.LR_BRACKET) + self.state = 2658 + self.expression(0) + self.state = 2659 + self.match(MySqlParser.RR_BRACKET) + pass + + + self.state = 2664 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 2663 + self.match(MySqlParser.NOT) + + + self.state = 2667 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==57: + self.state = 2666 + self.match(MySqlParser.ENFORCED) + + + pass + + elif la_ == 10: + localctx = MySqlParser.AlterByAlterCheckTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 2669 + self.match(MySqlParser.ALTER) + self.state = 2674 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2670 + self.match(MySqlParser.CONSTRAINT) + self.state = 2672 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2671 + localctx.name = self.uid() + + + + + self.state = 2676 + self.match(MySqlParser.CHECK) + self.state = 2683 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,343,self._ctx) + if la_ == 1: + self.state = 2677 + self.uid() + pass + + elif la_ == 2: + self.state = 2678 + self.stringLiteral() + pass + + elif la_ == 3: + self.state = 2679 + self.match(MySqlParser.LR_BRACKET) + self.state = 2680 + self.expression(0) + self.state = 2681 + self.match(MySqlParser.RR_BRACKET) + pass + + + self.state = 2686 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 2685 + self.match(MySqlParser.NOT) + + + self.state = 2689 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==57: + self.state = 2688 + self.match(MySqlParser.ENFORCED) + + + pass + + elif la_ == 11: + localctx = MySqlParser.AlterByAddCheckTableConstraintContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 2691 + self.match(MySqlParser.ADD) + self.state = 2696 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==30: + self.state = 2692 + self.match(MySqlParser.CONSTRAINT) + self.state = 2694 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 2693 + localctx.name = self.uid() + + + + + self.state = 2698 + self.match(MySqlParser.CHECK) + self.state = 2699 + self.match(MySqlParser.LR_BRACKET) + self.state = 2700 + self.expression(0) + self.state = 2701 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 12: + localctx = MySqlParser.AlterBySetAlgorithmContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 2703 + self.match(MySqlParser.ALGORITHM) + self.state = 2705 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2704 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2707 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==384 or _la==454 or _la==458): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 13: + localctx = MySqlParser.AlterByChangeDefaultContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 2708 + self.match(MySqlParser.ALTER) + self.state = 2710 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2709 + self.match(MySqlParser.COLUMN) + + + self.state = 2712 + self.uid() + self.state = 2718 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [153]: + self.state = 2713 + self.match(MySqlParser.SET) + self.state = 2714 + self.match(MySqlParser.DEFAULT) + self.state = 2715 + self.defaultValue() + pass + elif token in [51]: + self.state = 2716 + self.match(MySqlParser.DROP) + self.state = 2717 + self.match(MySqlParser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 14: + localctx = MySqlParser.AlterByChangeColumnContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 2720 + self.match(MySqlParser.CHANGE) + self.state = 2722 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2721 + self.match(MySqlParser.COLUMN) + + + self.state = 2724 + localctx.oldColumn = self.uid() + self.state = 2725 + localctx.newColumn = self.uid() + self.state = 2726 + self.columnDefinition() + self.state = 2730 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [430]: + self.state = 2727 + self.match(MySqlParser.FIRST) + pass + elif token in [334]: + self.state = 2728 + self.match(MySqlParser.AFTER) + self.state = 2729 + localctx.afterColumn = self.uid() + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 129, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1135, 1136]: + pass + else: + pass + pass + + elif la_ == 15: + localctx = MySqlParser.AlterByRenameColumnContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 2732 + self.match(MySqlParser.RENAME) + self.state = 2733 + self.match(MySqlParser.COLUMN) + self.state = 2734 + localctx.oldColumn = self.uid() + self.state = 2735 + self.match(MySqlParser.TO) + self.state = 2736 + localctx.newColumn = self.uid() + pass + + elif la_ == 16: + localctx = MySqlParser.AlterByLockContext(self, localctx) + self.enterOuterAlt(localctx, 16) + self.state = 2738 + self.match(MySqlParser.LOCK) + self.state = 2740 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2739 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2742 + localctx.lockType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==419 or _la==529 or _la==611): + localctx.lockType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 17: + localctx = MySqlParser.AlterByModifyColumnContext(self, localctx) + self.enterOuterAlt(localctx, 17) + self.state = 2743 + self.match(MySqlParser.MODIFY) + self.state = 2745 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2744 + self.match(MySqlParser.COLUMN) + + + self.state = 2747 + self.uid() + self.state = 2748 + self.columnDefinition() + self.state = 2752 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [430]: + self.state = 2749 + self.match(MySqlParser.FIRST) + pass + elif token in [334]: + self.state = 2750 + self.match(MySqlParser.AFTER) + self.state = 2751 + self.uid() + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 129, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1135, 1136]: + pass + else: + pass + pass + + elif la_ == 18: + localctx = MySqlParser.AlterByDropColumnContext(self, localctx) + self.enterOuterAlt(localctx, 18) + self.state = 2754 + self.match(MySqlParser.DROP) + self.state = 2756 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2755 + self.match(MySqlParser.COLUMN) + + + self.state = 2758 + self.uid() + self.state = 2760 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==144: + self.state = 2759 + self.match(MySqlParser.RESTRICT) + + + pass + + elif la_ == 19: + localctx = MySqlParser.AlterByDropConstraintCheckContext(self, localctx) + self.enterOuterAlt(localctx, 19) + self.state = 2762 + self.match(MySqlParser.DROP) + self.state = 2763 + _la = self._input.LA(1) + if not(_la==26 or _la==30): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2764 + self.uid() + pass + + elif la_ == 20: + localctx = MySqlParser.AlterByDropPrimaryKeyContext(self, localctx) + self.enterOuterAlt(localctx, 20) + self.state = 2765 + self.match(MySqlParser.DROP) + self.state = 2766 + self.match(MySqlParser.PRIMARY) + self.state = 2767 + self.match(MySqlParser.KEY) + pass + + elif la_ == 21: + localctx = MySqlParser.AlterByDropIndexContext(self, localctx) + self.enterOuterAlt(localctx, 21) + self.state = 2768 + self.match(MySqlParser.DROP) + self.state = 2769 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2770 + self.uid() + pass + + elif la_ == 22: + localctx = MySqlParser.AlterByRenameIndexContext(self, localctx) + self.enterOuterAlt(localctx, 22) + self.state = 2771 + self.match(MySqlParser.RENAME) + self.state = 2772 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2773 + self.uid() + self.state = 2774 + self.match(MySqlParser.TO) + self.state = 2775 + self.uid() + pass + + elif la_ == 23: + localctx = MySqlParser.AlterByAlterColumnDefaultContext(self, localctx) + self.enterOuterAlt(localctx, 23) + self.state = 2777 + self.match(MySqlParser.ALTER) + self.state = 2779 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2778 + self.match(MySqlParser.COLUMN) + + + self.state = 2781 + self.uid() + self.state = 2795 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,360,self._ctx) + if la_ == 1: + self.state = 2782 + self.match(MySqlParser.SET) + self.state = 2783 + self.match(MySqlParser.DEFAULT) + self.state = 2789 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1147, 1148, 1154]: + self.state = 2784 + self.stringLiteral() + pass + elif token in [1133]: + self.state = 2785 + self.match(MySqlParser.LR_BRACKET) + self.state = 2786 + self.expression(0) + self.state = 2787 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + self.state = 2791 + self.match(MySqlParser.SET) + self.state = 2792 + _la = self._input.LA(1) + if not(_la==459 or _la==673): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 3: + self.state = 2793 + self.match(MySqlParser.DROP) + self.state = 2794 + self.match(MySqlParser.DEFAULT) + pass + + + pass + + elif la_ == 24: + localctx = MySqlParser.AlterByAlterIndexVisibilityContext(self, localctx) + self.enterOuterAlt(localctx, 24) + self.state = 2797 + self.match(MySqlParser.ALTER) + self.state = 2798 + self.match(MySqlParser.INDEX) + self.state = 2799 + self.uid() + self.state = 2800 + _la = self._input.LA(1) + if not(_la==459 or _la==673): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 25: + localctx = MySqlParser.AlterByDropForeignKeyContext(self, localctx) + self.enterOuterAlt(localctx, 25) + self.state = 2802 + self.match(MySqlParser.DROP) + self.state = 2803 + self.match(MySqlParser.FOREIGN) + self.state = 2804 + self.match(MySqlParser.KEY) + self.state = 2805 + self.uid() + pass + + elif la_ == 26: + localctx = MySqlParser.AlterByDisableKeysContext(self, localctx) + self.enterOuterAlt(localctx, 26) + self.state = 2806 + self.match(MySqlParser.DISABLE) + self.state = 2807 + self.match(MySqlParser.KEYS) + pass + + elif la_ == 27: + localctx = MySqlParser.AlterByEnableKeysContext(self, localctx) + self.enterOuterAlt(localctx, 27) + self.state = 2808 + self.match(MySqlParser.ENABLE) + self.state = 2809 + self.match(MySqlParser.KEYS) + pass + + elif la_ == 28: + localctx = MySqlParser.AlterByRenameContext(self, localctx) + self.enterOuterAlt(localctx, 28) + self.state = 2810 + self.match(MySqlParser.RENAME) + self.state = 2812 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12 or _la==175: + self.state = 2811 + localctx.renameFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==12 or _la==175): + localctx.renameFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2816 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,362,self._ctx) + if la_ == 1: + self.state = 2814 + self.uid() + pass + + elif la_ == 2: + self.state = 2815 + self.fullId() + pass + + + pass + + elif la_ == 29: + localctx = MySqlParser.AlterByOrderContext(self, localctx) + self.enterOuterAlt(localctx, 29) + self.state = 2818 + self.match(MySqlParser.ORDER) + self.state = 2819 + self.match(MySqlParser.BY) + self.state = 2820 + self.uidList() + pass + + elif la_ == 30: + localctx = MySqlParser.AlterByConvertCharsetContext(self, localctx) + self.enterOuterAlt(localctx, 30) + self.state = 2821 + self.match(MySqlParser.CONVERT) + self.state = 2822 + self.match(MySqlParser.TO) + self.state = 2826 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [841]: + self.state = 2823 + self.match(MySqlParser.CHARSET) + pass + elif token in [25]: + self.state = 2824 + self.match(MySqlParser.CHARACTER) + self.state = 2825 + self.match(MySqlParser.SET) + pass + else: + raise NoViableAltException(self) + + self.state = 2828 + self.charsetName() + self.state = 2831 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==27: + self.state = 2829 + self.match(MySqlParser.COLLATE) + self.state = 2830 + self.collationName() + + + pass + + elif la_ == 31: + localctx = MySqlParser.AlterByDefaultCharsetContext(self, localctx) + self.enterOuterAlt(localctx, 31) + self.state = 2834 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 2833 + self.match(MySqlParser.DEFAULT) + + + self.state = 2836 + self.match(MySqlParser.CHARACTER) + self.state = 2837 + self.match(MySqlParser.SET) + self.state = 2838 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2839 + self.charsetName() + self.state = 2843 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==27: + self.state = 2840 + self.match(MySqlParser.COLLATE) + self.state = 2841 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 2842 + self.collationName() + + + pass + + elif la_ == 32: + localctx = MySqlParser.AlterByDiscardTablespaceContext(self, localctx) + self.enterOuterAlt(localctx, 32) + self.state = 2845 + self.match(MySqlParser.DISCARD) + self.state = 2846 + self.match(MySqlParser.TABLESPACE) + pass + + elif la_ == 33: + localctx = MySqlParser.AlterByImportTablespaceContext(self, localctx) + self.enterOuterAlt(localctx, 33) + self.state = 2847 + self.match(MySqlParser.IMPORT) + self.state = 2848 + self.match(MySqlParser.TABLESPACE) + pass + + elif la_ == 34: + localctx = MySqlParser.AlterByForceContext(self, localctx) + self.enterOuterAlt(localctx, 34) + self.state = 2849 + self.match(MySqlParser.FORCE) + pass + + elif la_ == 35: + localctx = MySqlParser.AlterByValidateContext(self, localctx) + self.enterOuterAlt(localctx, 35) + self.state = 2850 + localctx.validationFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==192 or _la==677): + localctx.validationFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2851 + self.match(MySqlParser.VALIDATION) + pass + + elif la_ == 36: + localctx = MySqlParser.AlterByAddDefinitionsContext(self, localctx) + self.enterOuterAlt(localctx, 36) + self.state = 2852 + self.match(MySqlParser.ADD) + self.state = 2854 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==28: + self.state = 2853 + self.match(MySqlParser.COLUMN) + + + self.state = 2856 + self.match(MySqlParser.LR_BRACKET) + self.state = 2857 + self.createDefinition() + self.state = 2862 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2858 + self.match(MySqlParser.COMMA) + self.state = 2859 + self.createDefinition() + self.state = 2864 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2865 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 37: + localctx = MySqlParser.AlterPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 37) + self.state = 2867 + self.alterPartitionSpecification() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterPartitionSpecificationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_alterPartitionSpecification + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AlterByImportPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def IMPORT(self): + return self.getToken(MySqlParser.IMPORT, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByImportPartition" ): + listener.enterAlterByImportPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByImportPartition" ): + listener.exitAlterByImportPartition(self) + + + class AlterByDropPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDropPartition" ): + listener.enterAlterByDropPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDropPartition" ): + listener.exitAlterByDropPartition(self) + + + class AlterByDiscardPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def DISCARD(self): + return self.getToken(MySqlParser.DISCARD, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByDiscardPartition" ): + listener.enterAlterByDiscardPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByDiscardPartition" ): + listener.exitAlterByDiscardPartition(self) + + + class AlterByAddPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ADD(self): + return self.getToken(MySqlParser.ADD, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def partitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAddPartition" ): + listener.enterAlterByAddPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAddPartition" ): + listener.exitAlterByAddPartition(self) + + + class AlterByRemovePartitioningContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def REMOVE(self): + return self.getToken(MySqlParser.REMOVE, 0) + def PARTITIONING(self): + return self.getToken(MySqlParser.PARTITIONING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRemovePartitioning" ): + listener.enterAlterByRemovePartitioning(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRemovePartitioning" ): + listener.exitAlterByRemovePartitioning(self) + + + class AlterByOptimizePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPTIMIZE(self): + return self.getToken(MySqlParser.OPTIMIZE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByOptimizePartition" ): + listener.enterAlterByOptimizePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByOptimizePartition" ): + listener.exitAlterByOptimizePartition(self) + + + class AlterByCheckPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByCheckPartition" ): + listener.enterAlterByCheckPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByCheckPartition" ): + listener.exitAlterByCheckPartition(self) + + + class AlterByCoalescePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def COALESCE(self): + return self.getToken(MySqlParser.COALESCE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByCoalescePartition" ): + listener.enterAlterByCoalescePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByCoalescePartition" ): + listener.exitAlterByCoalescePartition(self) + + + class AlterByReorganizePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def REORGANIZE(self): + return self.getToken(MySqlParser.REORGANIZE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def partitionDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PartitionDefinitionContext) + else: + return self.getTypedRuleContext(MySqlParser.PartitionDefinitionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByReorganizePartition" ): + listener.enterAlterByReorganizePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByReorganizePartition" ): + listener.exitAlterByReorganizePartition(self) + + + class AlterByAnalyzePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def ANALYZE(self): + return self.getToken(MySqlParser.ANALYZE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByAnalyzePartition" ): + listener.enterAlterByAnalyzePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByAnalyzePartition" ): + listener.exitAlterByAnalyzePartition(self) + + + class AlterByRebuildPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def REBUILD(self): + return self.getToken(MySqlParser.REBUILD, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRebuildPartition" ): + listener.enterAlterByRebuildPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRebuildPartition" ): + listener.exitAlterByRebuildPartition(self) + + + class AlterByUpgradePartitioningContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def UPGRADE(self): + return self.getToken(MySqlParser.UPGRADE, 0) + def PARTITIONING(self): + return self.getToken(MySqlParser.PARTITIONING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByUpgradePartitioning" ): + listener.enterAlterByUpgradePartitioning(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByUpgradePartitioning" ): + listener.exitAlterByUpgradePartitioning(self) + + + class AlterByTruncatePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def TRUNCATE(self): + return self.getToken(MySqlParser.TRUNCATE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByTruncatePartition" ): + listener.enterAlterByTruncatePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByTruncatePartition" ): + listener.exitAlterByTruncatePartition(self) + + + class AlterByRepairPartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPAIR(self): + return self.getToken(MySqlParser.REPAIR, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByRepairPartition" ): + listener.enterAlterByRepairPartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByRepairPartition" ): + listener.exitAlterByRepairPartition(self) + + + class AlterByExchangePartitionContext(AlterPartitionSpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterPartitionSpecificationContext + super().__init__(parser) + self.validationFormat = None # Token + self.copyFrom(ctx) + + def EXCHANGE(self): + return self.getToken(MySqlParser.EXCHANGE, 0) + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def WITH(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.WITH) + else: + return self.getToken(MySqlParser.WITH, i) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def VALIDATION(self): + return self.getToken(MySqlParser.VALIDATION, 0) + def WITHOUT(self): + return self.getToken(MySqlParser.WITHOUT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterByExchangePartition" ): + listener.enterAlterByExchangePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterByExchangePartition" ): + listener.exitAlterByExchangePartition(self) + + + + def alterPartitionSpecification(self): + + localctx = MySqlParser.AlterPartitionSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_alterPartitionSpecification) + self._la = 0 # Token type + try: + self.state = 2968 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [5]: + localctx = MySqlParser.AlterByAddPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2870 + self.match(MySqlParser.ADD) + self.state = 2871 + self.match(MySqlParser.PARTITION) + self.state = 2872 + self.match(MySqlParser.LR_BRACKET) + self.state = 2873 + self.partitionDefinition() + self.state = 2878 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2874 + self.match(MySqlParser.COMMA) + self.state = 2875 + self.partitionDefinition() + self.state = 2880 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2881 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [51]: + localctx = MySqlParser.AlterByDropPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2883 + self.match(MySqlParser.DROP) + self.state = 2884 + self.match(MySqlParser.PARTITION) + self.state = 2885 + self.uidList() + pass + elif token in [397]: + localctx = MySqlParser.AlterByDiscardPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2886 + self.match(MySqlParser.DISCARD) + self.state = 2887 + self.match(MySqlParser.PARTITION) + self.state = 2890 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2888 + self.uidList() + pass + elif token in [6]: + self.state = 2889 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + self.state = 2892 + self.match(MySqlParser.TABLESPACE) + pass + elif token in [450]: + localctx = MySqlParser.AlterByImportPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2893 + self.match(MySqlParser.IMPORT) + self.state = 2894 + self.match(MySqlParser.PARTITION) + self.state = 2897 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2895 + self.uidList() + pass + elif token in [6]: + self.state = 2896 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + self.state = 2899 + self.match(MySqlParser.TABLESPACE) + pass + elif token in [656]: + localctx = MySqlParser.AlterByTruncatePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2900 + self.match(MySqlParser.TRUNCATE) + self.state = 2901 + self.match(MySqlParser.PARTITION) + self.state = 2904 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2902 + self.uidList() + pass + elif token in [6]: + self.state = 2903 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [363]: + localctx = MySqlParser.AlterByCoalescePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 2906 + self.match(MySqlParser.COALESCE) + self.state = 2907 + self.match(MySqlParser.PARTITION) + self.state = 2908 + self.decimalLiteral() + pass + elif token in [579]: + localctx = MySqlParser.AlterByReorganizePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 2909 + self.match(MySqlParser.REORGANIZE) + self.state = 2910 + self.match(MySqlParser.PARTITION) + self.state = 2911 + self.uidList() + self.state = 2912 + self.match(MySqlParser.INTO) + self.state = 2913 + self.match(MySqlParser.LR_BRACKET) + self.state = 2914 + self.partitionDefinition() + self.state = 2919 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 2915 + self.match(MySqlParser.COMMA) + self.state = 2916 + self.partitionDefinition() + self.state = 2921 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2922 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [418]: + localctx = MySqlParser.AlterByExchangePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 2924 + self.match(MySqlParser.EXCHANGE) + self.state = 2925 + self.match(MySqlParser.PARTITION) + self.state = 2926 + self.uid() + self.state = 2927 + self.match(MySqlParser.WITH) + self.state = 2928 + self.match(MySqlParser.TABLE) + self.state = 2929 + self.tableName() + self.state = 2932 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,375,self._ctx) + if la_ == 1: + self.state = 2930 + localctx.validationFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==192 or _la==677): + localctx.validationFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2931 + self.match(MySqlParser.VALIDATION) + + + pass + elif token in [9]: + localctx = MySqlParser.AlterByAnalyzePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 2934 + self.match(MySqlParser.ANALYZE) + self.state = 2935 + self.match(MySqlParser.PARTITION) + self.state = 2938 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2936 + self.uidList() + pass + elif token in [6]: + self.state = 2937 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [26]: + localctx = MySqlParser.AlterByCheckPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 2940 + self.match(MySqlParser.CHECK) + self.state = 2941 + self.match(MySqlParser.PARTITION) + self.state = 2944 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2942 + self.uidList() + pass + elif token in [6]: + self.state = 2943 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [119]: + localctx = MySqlParser.AlterByOptimizePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 2946 + self.match(MySqlParser.OPTIMIZE) + self.state = 2947 + self.match(MySqlParser.PARTITION) + self.state = 2950 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2948 + self.uidList() + pass + elif token in [6]: + self.state = 2949 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [569]: + localctx = MySqlParser.AlterByRebuildPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 2952 + self.match(MySqlParser.REBUILD) + self.state = 2953 + self.match(MySqlParser.PARTITION) + self.state = 2956 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2954 + self.uidList() + pass + elif token in [6]: + self.state = 2955 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [580]: + localctx = MySqlParser.AlterByRepairPartitionContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 2958 + self.match(MySqlParser.REPAIR) + self.state = 2959 + self.match(MySqlParser.PARTITION) + self.state = 2962 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 2960 + self.uidList() + pass + elif token in [6]: + self.state = 2961 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + pass + elif token in [578]: + localctx = MySqlParser.AlterByRemovePartitioningContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 2964 + self.match(MySqlParser.REMOVE) + self.state = 2965 + self.match(MySqlParser.PARTITIONING) + pass + elif token in [664]: + localctx = MySqlParser.AlterByUpgradePartitioningContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 2966 + self.match(MySqlParser.UPGRADE) + self.state = 2967 + self.match(MySqlParser.PARTITIONING) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropDatabaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.dbFormat = None # Token + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropDatabase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropDatabase" ): + listener.enterDropDatabase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropDatabase" ): + listener.exitDropDatabase(self) + + + + + def dropDatabase(self): + + localctx = MySqlParser.DropDatabaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_dropDatabase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2970 + self.match(MySqlParser.DROP) + self.state = 2971 + localctx.dbFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==39 or _la==150): + localctx.dbFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2973 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,382,self._ctx) + if la_ == 1: + self.state = 2972 + self.ifExists() + + + self.state = 2975 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropEventContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropEvent + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropEvent" ): + listener.enterDropEvent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropEvent" ): + listener.exitDropEvent(self) + + + + + def dropEvent(self): + + localctx = MySqlParser.DropEventContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_dropEvent) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2977 + self.match(MySqlParser.DROP) + self.state = 2978 + self.match(MySqlParser.EVENT) + self.state = 2980 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,383,self._ctx) + if la_ == 1: + self.state = 2979 + self.ifExists() + + + self.state = 2982 + self.fullId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropIndexContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.intimeAction = None # Token + self.algType = None # Token + self.lockType = None # Token + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def ALGORITHM(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ALGORITHM) + else: + return self.getToken(MySqlParser.ALGORITHM, i) + + def LOCK(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LOCK) + else: + return self.getToken(MySqlParser.LOCK, i) + + def ONLINE(self): + return self.getToken(MySqlParser.ONLINE, 0) + + def OFFLINE(self): + return self.getToken(MySqlParser.OFFLINE, 0) + + def DEFAULT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.DEFAULT) + else: + return self.getToken(MySqlParser.DEFAULT, i) + + def INPLACE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.INPLACE) + else: + return self.getToken(MySqlParser.INPLACE, i) + + def COPY(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COPY) + else: + return self.getToken(MySqlParser.COPY, i) + + def NONE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.NONE) + else: + return self.getToken(MySqlParser.NONE, i) + + def SHARED(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SHARED) + else: + return self.getToken(MySqlParser.SHARED, i) + + def EXCLUSIVE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EXCLUSIVE) + else: + return self.getToken(MySqlParser.EXCLUSIVE, i) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def getRuleIndex(self): + return MySqlParser.RULE_dropIndex + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropIndex" ): + listener.enterDropIndex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropIndex" ): + listener.exitDropIndex(self) + + + + + def dropIndex(self): + + localctx = MySqlParser.DropIndexContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_dropIndex) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2984 + self.match(MySqlParser.DROP) + self.state = 2985 + self.match(MySqlParser.INDEX) + self.state = 2987 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,384,self._ctx) + if la_ == 1: + self.state = 2986 + localctx.intimeAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==531 or _la==537): + localctx.intimeAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2989 + self.uid() + self.state = 2990 + self.match(MySqlParser.ON) + self.state = 2991 + self.tableName() + self.state = 3004 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,388,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3002 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [336]: + self.state = 2992 + self.match(MySqlParser.ALGORITHM) + self.state = 2994 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2993 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 2996 + localctx.algType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==384 or _la==454): + localctx.algType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [103]: + self.state = 2997 + self.match(MySqlParser.LOCK) + self.state = 2999 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 2998 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 3001 + localctx.lockType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==42 or _la==419 or _la==529 or _la==611): + localctx.lockType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + else: + raise NoViableAltException(self) + + self.state = 3006 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,388,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropLogfileGroupContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def LOGFILE(self): + return self.getToken(MySqlParser.LOGFILE, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropLogfileGroup + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropLogfileGroup" ): + listener.enterDropLogfileGroup(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropLogfileGroup" ): + listener.exitDropLogfileGroup(self) + + + + + def dropLogfileGroup(self): + + localctx = MySqlParser.DropLogfileGroupContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_dropLogfileGroup) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3007 + self.match(MySqlParser.DROP) + self.state = 3008 + self.match(MySqlParser.LOGFILE) + self.state = 3009 + self.match(MySqlParser.GROUP) + self.state = 3010 + self.uid() + self.state = 3011 + self.match(MySqlParser.ENGINE) + self.state = 3012 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 3013 + self.engineName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropProcedureContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropProcedure + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropProcedure" ): + listener.enterDropProcedure(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropProcedure" ): + listener.exitDropProcedure(self) + + + + + def dropProcedure(self): + + localctx = MySqlParser.DropProcedureContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_dropProcedure) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3015 + self.match(MySqlParser.DROP) + self.state = 3016 + self.match(MySqlParser.PROCEDURE) + self.state = 3018 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,389,self._ctx) + if la_ == 1: + self.state = 3017 + self.ifExists() + + + self.state = 3020 + self.fullId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropFunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropFunction" ): + listener.enterDropFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropFunction" ): + listener.exitDropFunction(self) + + + + + def dropFunction(self): + + localctx = MySqlParser.DropFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_dropFunction) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3022 + self.match(MySqlParser.DROP) + self.state = 3023 + self.match(MySqlParser.FUNCTION) + self.state = 3025 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,390,self._ctx) + if la_ == 1: + self.state = 3024 + self.ifExists() + + + self.state = 3027 + self.fullId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropServerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def SERVER(self): + return self.getToken(MySqlParser.SERVER, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropServer + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropServer" ): + listener.enterDropServer(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropServer" ): + listener.exitDropServer(self) + + + + + def dropServer(self): + + localctx = MySqlParser.DropServerContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_dropServer) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3029 + self.match(MySqlParser.DROP) + self.state = 3030 + self.match(MySqlParser.SERVER) + self.state = 3032 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,391,self._ctx) + if la_ == 1: + self.state = 3031 + self.ifExists() + + + self.state = 3034 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.dropType = None # Token + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def RESTRICT(self): + return self.getToken(MySqlParser.RESTRICT, 0) + + def CASCADE(self): + return self.getToken(MySqlParser.CASCADE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_dropTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTable" ): + listener.enterDropTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTable" ): + listener.exitDropTable(self) + + + + + def dropTable(self): + + localctx = MySqlParser.DropTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_dropTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3036 + self.match(MySqlParser.DROP) + self.state = 3038 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==649: + self.state = 3037 + self.match(MySqlParser.TEMPORARY) + + + self.state = 3040 + self.match(MySqlParser.TABLE) + self.state = 3042 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,393,self._ctx) + if la_ == 1: + self.state = 3041 + self.ifExists() + + + self.state = 3044 + self.tables() + self.state = 3046 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==21 or _la==144: + self.state = 3045 + localctx.dropType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==21 or _la==144): + localctx.dropType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropTablespaceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_dropTablespace + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTablespace" ): + listener.enterDropTablespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTablespace" ): + listener.exitDropTablespace(self) + + + + + def dropTablespace(self): + + localctx = MySqlParser.DropTablespaceContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_dropTablespace) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3048 + self.match(MySqlParser.DROP) + self.state = 3049 + self.match(MySqlParser.TABLESPACE) + self.state = 3050 + self.uid() + self.state = 3056 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==409: + self.state = 3051 + self.match(MySqlParser.ENGINE) + self.state = 3053 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1124: + self.state = 3052 + self.match(MySqlParser.EQUAL_SYMBOL) + + + self.state = 3055 + self.engineName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropTriggerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def TRIGGER(self): + return self.getToken(MySqlParser.TRIGGER, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dropTrigger + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTrigger" ): + listener.enterDropTrigger(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTrigger" ): + listener.exitDropTrigger(self) + + + + + def dropTrigger(self): + + localctx = MySqlParser.DropTriggerContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_dropTrigger) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3058 + self.match(MySqlParser.DROP) + self.state = 3059 + self.match(MySqlParser.TRIGGER) + self.state = 3061 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,397,self._ctx) + if la_ == 1: + self.state = 3060 + self.ifExists() + + + self.state = 3063 + self.fullId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropViewContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.dropType = None # Token + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def fullId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullIdContext) + else: + return self.getTypedRuleContext(MySqlParser.FullIdContext,i) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def RESTRICT(self): + return self.getToken(MySqlParser.RESTRICT, 0) + + def CASCADE(self): + return self.getToken(MySqlParser.CASCADE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_dropView + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropView" ): + listener.enterDropView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropView" ): + listener.exitDropView(self) + + + + + def dropView(self): + + localctx = MySqlParser.DropViewContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_dropView) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3065 + self.match(MySqlParser.DROP) + self.state = 3066 + self.match(MySqlParser.VIEW) + self.state = 3068 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,398,self._ctx) + if la_ == 1: + self.state = 3067 + self.ifExists() + + + self.state = 3070 + self.fullId() + self.state = 3075 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3071 + self.match(MySqlParser.COMMA) + self.state = 3072 + self.fullId() + self.state = 3077 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3079 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==21 or _la==144: + self.state = 3078 + localctx.dropType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==21 or _la==144): + localctx.dropType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropRoleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def roleName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoleNameContext) + else: + return self.getTypedRuleContext(MySqlParser.RoleNameContext,i) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_dropRole + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropRole" ): + listener.enterDropRole(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropRole" ): + listener.exitDropRole(self) + + + + + def dropRole(self): + + localctx = MySqlParser.DropRoleContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_dropRole) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3081 + self.match(MySqlParser.DROP) + self.state = 3082 + self.match(MySqlParser.ROLE) + self.state = 3084 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,401,self._ctx) + if la_ == 1: + self.state = 3083 + self.ifExists() + + + self.state = 3086 + self.roleName() + self.state = 3091 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3087 + self.match(MySqlParser.COMMA) + self.state = 3088 + self.roleName() + self.state = 3093 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetRoleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def roleName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RoleNameContext) + else: + return self.getTypedRuleContext(MySqlParser.RoleNameContext,i) + + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def roleOption(self): + return self.getTypedRuleContext(MySqlParser.RoleOptionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_setRole + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetRole" ): + listener.enterSetRole(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetRole" ): + listener.exitSetRole(self) + + + + + def setRole(self): + + localctx = MySqlParser.SetRoleContext(self, self._ctx, self.state) + self.enterRule(localctx, 174, self.RULE_setRole) + self._la = 0 # Token type + try: + self.state = 3127 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,408,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3094 + self.match(MySqlParser.SET) + self.state = 3095 + self.match(MySqlParser.DEFAULT) + self.state = 3096 + self.match(MySqlParser.ROLE) + self.state = 3107 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,404,self._ctx) + if la_ == 1: + self.state = 3097 + self.match(MySqlParser.NONE) + pass + + elif la_ == 2: + self.state = 3098 + self.match(MySqlParser.ALL) + pass + + elif la_ == 3: + self.state = 3099 + self.roleName() + self.state = 3104 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3100 + self.match(MySqlParser.COMMA) + self.state = 3101 + self.roleName() + self.state = 3106 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + self.state = 3109 + self.match(MySqlParser.TO) + self.state = 3112 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,405,self._ctx) + if la_ == 1: + self.state = 3110 + self.userName() + pass + + elif la_ == 2: + self.state = 3111 + self.uid() + pass + + + self.state = 3121 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3114 + self.match(MySqlParser.COMMA) + self.state = 3117 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,406,self._ctx) + if la_ == 1: + self.state = 3115 + self.userName() + pass + + elif la_ == 2: + self.state = 3116 + self.uid() + pass + + + self.state = 3123 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3124 + self.match(MySqlParser.SET) + self.state = 3125 + self.match(MySqlParser.ROLE) + self.state = 3126 + self.roleOption() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RenameTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def renameTableClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RenameTableClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.RenameTableClauseContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_renameTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameTable" ): + listener.enterRenameTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameTable" ): + listener.exitRenameTable(self) + + + + + def renameTable(self): + + localctx = MySqlParser.RenameTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 176, self.RULE_renameTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3129 + self.match(MySqlParser.RENAME) + self.state = 3130 + self.match(MySqlParser.TABLE) + self.state = 3131 + self.renameTableClause() + self.state = 3136 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3132 + self.match(MySqlParser.COMMA) + self.state = 3133 + self.renameTableClause() + self.state = 3138 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RenameTableClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableNameContext) + else: + return self.getTypedRuleContext(MySqlParser.TableNameContext,i) + + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_renameTableClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameTableClause" ): + listener.enterRenameTableClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameTableClause" ): + listener.exitRenameTableClause(self) + + + + + def renameTableClause(self): + + localctx = MySqlParser.RenameTableClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_renameTableClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3139 + self.tableName() + self.state = 3140 + self.match(MySqlParser.TO) + self.state = 3141 + self.tableName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TruncateTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRUNCATE(self): + return self.getToken(MySqlParser.TRUNCATE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_truncateTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTruncateTable" ): + listener.enterTruncateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTruncateTable" ): + listener.exitTruncateTable(self) + + + + + def truncateTable(self): + + localctx = MySqlParser.TruncateTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_truncateTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3143 + self.match(MySqlParser.TRUNCATE) + self.state = 3145 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==172: + self.state = 3144 + self.match(MySqlParser.TABLE) + + + self.state = 3147 + self.tableName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CallStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CALL(self): + return self.getToken(MySqlParser.CALL, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def constants(self): + return self.getTypedRuleContext(MySqlParser.ConstantsContext,0) + + + def expressions(self): + return self.getTypedRuleContext(MySqlParser.ExpressionsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_callStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCallStatement" ): + listener.enterCallStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCallStatement" ): + listener.exitCallStatement(self) + + + + + def callStatement(self): + + localctx = MySqlParser.CallStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 182, self.RULE_callStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3149 + self.match(MySqlParser.CALL) + self.state = 3150 + self.fullId() + self.state = 3157 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,412,self._ctx) + if la_ == 1: + self.state = 3151 + self.match(MySqlParser.LR_BRACKET) + self.state = 3154 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,411,self._ctx) + if la_ == 1: + self.state = 3152 + self.constants() + + elif la_ == 2: + self.state = 3153 + self.expressions() + + + self.state = 3156 + self.match(MySqlParser.RR_BRACKET) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeleteStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def singleDeleteStatement(self): + return self.getTypedRuleContext(MySqlParser.SingleDeleteStatementContext,0) + + + def multipleDeleteStatement(self): + return self.getTypedRuleContext(MySqlParser.MultipleDeleteStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_deleteStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeleteStatement" ): + listener.enterDeleteStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeleteStatement" ): + listener.exitDeleteStatement(self) + + + + + def deleteStatement(self): + + localctx = MySqlParser.DeleteStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_deleteStatement) + try: + self.state = 3161 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,413,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3159 + self.singleDeleteStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3160 + self.multipleDeleteStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DoStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DO(self): + return self.getToken(MySqlParser.DO, 0) + + def expressions(self): + return self.getTypedRuleContext(MySqlParser.ExpressionsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_doStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoStatement" ): + listener.enterDoStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoStatement" ): + listener.exitDoStatement(self) + + + + + def doStatement(self): + + localctx = MySqlParser.DoStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_doStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3163 + self.match(MySqlParser.DO) + self.state = 3164 + self.expressions() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def handlerOpenStatement(self): + return self.getTypedRuleContext(MySqlParser.HandlerOpenStatementContext,0) + + + def handlerReadIndexStatement(self): + return self.getTypedRuleContext(MySqlParser.HandlerReadIndexStatementContext,0) + + + def handlerReadStatement(self): + return self.getTypedRuleContext(MySqlParser.HandlerReadStatementContext,0) + + + def handlerCloseStatement(self): + return self.getTypedRuleContext(MySqlParser.HandlerCloseStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_handlerStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerStatement" ): + listener.enterHandlerStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerStatement" ): + listener.exitHandlerStatement(self) + + + + + def handlerStatement(self): + + localctx = MySqlParser.HandlerStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 188, self.RULE_handlerStatement) + try: + self.state = 3170 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,414,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3166 + self.handlerOpenStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3167 + self.handlerReadIndexStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 3168 + self.handlerReadStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 3169 + self.handlerCloseStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class InsertStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + self.partitions = None # UidListContext + self.columns = None # FullColumnNameListContext + self.setFirst = None # UpdatedElementContext + self._updatedElement = None # UpdatedElementContext + self.setElements = list() # of UpdatedElementContexts + self.duplicatedFirst = None # UpdatedElementContext + self.duplicatedElements = list() # of UpdatedElementContexts + + def INSERT(self): + return self.getToken(MySqlParser.INSERT, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def insertStatementValue(self): + return self.getTypedRuleContext(MySqlParser.InsertStatementValueContext,0) + + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def DUPLICATE(self): + return self.getToken(MySqlParser.DUPLICATE, 0) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def DELAYED(self): + return self.getToken(MySqlParser.DELAYED, 0) + + def HIGH_PRIORITY(self): + return self.getToken(MySqlParser.HIGH_PRIORITY, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def fullColumnNameList(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameListContext,0) + + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_insertStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertStatement" ): + listener.enterInsertStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertStatement" ): + listener.exitInsertStatement(self) + + + + + def insertStatement(self): + + localctx = MySqlParser.InsertStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_insertStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3172 + self.match(MySqlParser.INSERT) + self.state = 3174 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 43)) & ~0x3f) == 0 and ((1 << (_la - 43)) & -9223372032559808511) != 0): + self.state = 3173 + localctx.priority = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 43)) & ~0x3f) == 0 and ((1 << (_la - 43)) & -9223372032559808511) != 0)): + localctx.priority = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3177 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3176 + self.match(MySqlParser.IGNORE) + + + self.state = 3180 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==87: + self.state = 3179 + self.match(MySqlParser.INTO) + + + self.state = 3182 + self.tableName() + self.state = 3189 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 3183 + self.match(MySqlParser.PARTITION) + self.state = 3184 + self.match(MySqlParser.LR_BRACKET) + self.state = 3186 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 3185 + localctx.partitions = self.uidList() + + + self.state = 3188 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3213 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152, 188, 669, 1133]: + self.state = 3195 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,420,self._ctx) + if la_ == 1: + self.state = 3191 + self.match(MySqlParser.LR_BRACKET) + self.state = 3192 + localctx.columns = self.fullColumnNameList() + self.state = 3193 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3197 + self.insertStatementValue() + self.state = 3202 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,422,self._ctx) + if la_ == 1: + self.state = 3199 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3198 + self.match(MySqlParser.AS) + + + self.state = 3201 + self.uid() + + + pass + elif token in [153]: + self.state = 3204 + self.match(MySqlParser.SET) + self.state = 3205 + localctx.setFirst = self.updatedElement() + self.state = 3210 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3206 + self.match(MySqlParser.COMMA) + self.state = 3207 + localctx._updatedElement = self.updatedElement() + localctx.setElements.append(localctx._updatedElement) + self.state = 3212 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + self.state = 3227 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==118: + self.state = 3215 + self.match(MySqlParser.ON) + self.state = 3216 + self.match(MySqlParser.DUPLICATE) + self.state = 3217 + self.match(MySqlParser.KEY) + self.state = 3218 + self.match(MySqlParser.UPDATE) + self.state = 3219 + localctx.duplicatedFirst = self.updatedElement() + self.state = 3224 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3220 + self.match(MySqlParser.COMMA) + self.state = 3221 + localctx._updatedElement = self.updatedElement() + localctx.duplicatedElements.append(localctx._updatedElement) + self.state = 3226 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoadDataStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + self.filename = None # Token + self.violation = None # Token + self.charset = None # CharsetNameContext + self.fieldsFormat = None # Token + self.linesFormat = None # Token + + def LOAD(self): + return self.getToken(MySqlParser.LOAD, 0) + + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + + def INFILE(self): + return self.getToken(MySqlParser.INFILE, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + + def SET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SET) + else: + return self.getToken(MySqlParser.SET, i) + + def LINES(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LINES) + else: + return self.getToken(MySqlParser.LINES, i) + + def IGNORE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.IGNORE) + else: + return self.getToken(MySqlParser.IGNORE, i) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def assignmentField(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.AssignmentFieldContext) + else: + return self.getTypedRuleContext(MySqlParser.AssignmentFieldContext,i) + + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def CONCURRENT(self): + return self.getToken(MySqlParser.CONCURRENT, 0) + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def FIELDS(self): + return self.getToken(MySqlParser.FIELDS, 0) + + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + + def ROWS(self): + return self.getToken(MySqlParser.ROWS, 0) + + def selectFieldsInto(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectFieldsIntoContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectFieldsIntoContext,i) + + + def selectLinesInto(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectLinesIntoContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectLinesIntoContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_loadDataStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadDataStatement" ): + listener.enterLoadDataStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadDataStatement" ): + listener.exitLoadDataStatement(self) + + + + + def loadDataStatement(self): + + localctx = MySqlParser.LoadDataStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 192, self.RULE_loadDataStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3229 + self.match(MySqlParser.LOAD) + self.state = 3230 + self.match(MySqlParser.DATA) + self.state = 3232 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106 or _la==374: + self.state = 3231 + localctx.priority = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==106 or _la==374): + localctx.priority = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3235 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==474: + self.state = 3234 + self.match(MySqlParser.LOCAL) + + + self.state = 3237 + self.match(MySqlParser.INFILE) + self.state = 3238 + localctx.filename = self.match(MySqlParser.STRING_LITERAL) + self.state = 3240 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78 or _la==141: + self.state = 3239 + localctx.violation = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==78 or _la==141): + localctx.violation = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3242 + self.match(MySqlParser.INTO) + self.state = 3243 + self.match(MySqlParser.TABLE) + self.state = 3244 + self.tableName() + self.state = 3250 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 3245 + self.match(MySqlParser.PARTITION) + self.state = 3246 + self.match(MySqlParser.LR_BRACKET) + self.state = 3247 + self.uidList() + self.state = 3248 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3255 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==25: + self.state = 3252 + self.match(MySqlParser.CHARACTER) + self.state = 3253 + self.match(MySqlParser.SET) + self.state = 3254 + localctx.charset = self.charsetName() + + + self.state = 3263 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==365 or _la==427: + self.state = 3257 + localctx.fieldsFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==365 or _la==427): + localctx.fieldsFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3259 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 3258 + self.selectFieldsInto() + self.state = 3261 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==56 or _la==58 or _la==122 or _la==173): + break + + + + self.state = 3271 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==101: + self.state = 3265 + self.match(MySqlParser.LINES) + self.state = 3267 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 3266 + self.selectLinesInto() + self.state = 3269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==169 or _la==173): + break + + + + self.state = 3277 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3273 + self.match(MySqlParser.IGNORE) + self.state = 3274 + self.decimalLiteral() + self.state = 3275 + localctx.linesFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==101 or _la==601): + localctx.linesFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3290 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,438,self._ctx) + if la_ == 1: + self.state = 3279 + self.match(MySqlParser.LR_BRACKET) + self.state = 3280 + self.assignmentField() + self.state = 3285 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3281 + self.match(MySqlParser.COMMA) + self.state = 3282 + self.assignmentField() + self.state = 3287 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3288 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3301 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,440,self._ctx) + if la_ == 1: + self.state = 3292 + self.match(MySqlParser.SET) + self.state = 3293 + self.updatedElement() + self.state = 3298 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3294 + self.match(MySqlParser.COMMA) + self.state = 3295 + self.updatedElement() + self.state = 3300 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoadXmlStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + self.filename = None # Token + self.violation = None # Token + self.charset = None # CharsetNameContext + self.tag = None # Token + self.linesFormat = None # Token + + def LOAD(self): + return self.getToken(MySqlParser.LOAD, 0) + + def XML(self): + return self.getToken(MySqlParser.XML, 0) + + def INFILE(self): + return self.getToken(MySqlParser.INFILE, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + + def SET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SET) + else: + return self.getToken(MySqlParser.SET, i) + + def ROWS(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ROWS) + else: + return self.getToken(MySqlParser.ROWS, i) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def LESS_SYMBOL(self): + return self.getToken(MySqlParser.LESS_SYMBOL, 0) + + def GREATER_SYMBOL(self): + return self.getToken(MySqlParser.GREATER_SYMBOL, 0) + + def IGNORE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.IGNORE) + else: + return self.getToken(MySqlParser.IGNORE, i) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def assignmentField(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.AssignmentFieldContext) + else: + return self.getTypedRuleContext(MySqlParser.AssignmentFieldContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def CONCURRENT(self): + return self.getToken(MySqlParser.CONCURRENT, 0) + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def LINES(self): + return self.getToken(MySqlParser.LINES, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_loadXmlStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadXmlStatement" ): + listener.enterLoadXmlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadXmlStatement" ): + listener.exitLoadXmlStatement(self) + + + + + def loadXmlStatement(self): + + localctx = MySqlParser.LoadXmlStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 194, self.RULE_loadXmlStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3303 + self.match(MySqlParser.LOAD) + self.state = 3304 + self.match(MySqlParser.XML) + self.state = 3306 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106 or _la==374: + self.state = 3305 + localctx.priority = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==106 or _la==374): + localctx.priority = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3309 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==474: + self.state = 3308 + self.match(MySqlParser.LOCAL) + + + self.state = 3311 + self.match(MySqlParser.INFILE) + self.state = 3312 + localctx.filename = self.match(MySqlParser.STRING_LITERAL) + self.state = 3314 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78 or _la==141: + self.state = 3313 + localctx.violation = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==78 or _la==141): + localctx.violation = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3316 + self.match(MySqlParser.INTO) + self.state = 3317 + self.match(MySqlParser.TABLE) + self.state = 3318 + self.tableName() + self.state = 3322 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==25: + self.state = 3319 + self.match(MySqlParser.CHARACTER) + self.state = 3320 + self.match(MySqlParser.SET) + self.state = 3321 + localctx.charset = self.charsetName() + + + self.state = 3330 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==601: + self.state = 3324 + self.match(MySqlParser.ROWS) + self.state = 3325 + self.match(MySqlParser.IDENTIFIED) + self.state = 3326 + self.match(MySqlParser.BY) + self.state = 3327 + self.match(MySqlParser.LESS_SYMBOL) + self.state = 3328 + localctx.tag = self.match(MySqlParser.STRING_LITERAL) + self.state = 3329 + self.match(MySqlParser.GREATER_SYMBOL) + + + self.state = 3336 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3332 + self.match(MySqlParser.IGNORE) + self.state = 3333 + self.decimalLiteral() + self.state = 3334 + localctx.linesFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==101 or _la==601): + localctx.linesFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3349 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,448,self._ctx) + if la_ == 1: + self.state = 3338 + self.match(MySqlParser.LR_BRACKET) + self.state = 3339 + self.assignmentField() + self.state = 3344 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3340 + self.match(MySqlParser.COMMA) + self.state = 3341 + self.assignmentField() + self.state = 3346 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3347 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3360 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,450,self._ctx) + if la_ == 1: + self.state = 3351 + self.match(MySqlParser.SET) + self.state = 3352 + self.updatedElement() + self.state = 3357 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3353 + self.match(MySqlParser.COMMA) + self.state = 3354 + self.updatedElement() + self.state = 3359 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReplaceStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + self.partitions = None # UidListContext + self.columns = None # UidListContext + self.setFirst = None # UpdatedElementContext + self._updatedElement = None # UpdatedElementContext + self.setElements = list() # of UpdatedElementContexts + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def insertStatementValue(self): + return self.getTypedRuleContext(MySqlParser.InsertStatementValueContext,0) + + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def uidList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidListContext) + else: + return self.getTypedRuleContext(MySqlParser.UidListContext,i) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def DELAYED(self): + return self.getToken(MySqlParser.DELAYED, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_replaceStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReplaceStatement" ): + listener.enterReplaceStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReplaceStatement" ): + listener.exitReplaceStatement(self) + + + + + def replaceStatement(self): + + localctx = MySqlParser.ReplaceStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_replaceStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3362 + self.match(MySqlParser.REPLACE) + self.state = 3364 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==43 or _la==106: + self.state = 3363 + localctx.priority = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==43 or _la==106): + localctx.priority = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3367 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==87: + self.state = 3366 + self.match(MySqlParser.INTO) + + + self.state = 3369 + self.tableName() + self.state = 3375 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 3370 + self.match(MySqlParser.PARTITION) + self.state = 3371 + self.match(MySqlParser.LR_BRACKET) + self.state = 3372 + localctx.partitions = self.uidList() + self.state = 3373 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3393 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152, 188, 669, 1133]: + self.state = 3381 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,454,self._ctx) + if la_ == 1: + self.state = 3377 + self.match(MySqlParser.LR_BRACKET) + self.state = 3378 + localctx.columns = self.uidList() + self.state = 3379 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3383 + self.insertStatementValue() + pass + elif token in [153]: + self.state = 3384 + self.match(MySqlParser.SET) + self.state = 3385 + localctx.setFirst = self.updatedElement() + self.state = 3390 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3386 + self.match(MySqlParser.COMMA) + self.state = 3387 + localctx._updatedElement = self.updatedElement() + localctx.setElements.append(localctx._updatedElement) + self.state = 3392 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_selectStatement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class UnionSelectContext(SelectStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectStatementContext + super().__init__(parser) + self.unionType = None # Token + self.copyFrom(ctx) + + def querySpecificationNointo(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationNointoContext,0) + + def unionStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UnionStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.UnionStatementContext,i) + + def UNION(self): + return self.getToken(MySqlParser.UNION, 0) + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + def lockClause(self): + return self.getTypedRuleContext(MySqlParser.LockClauseContext,0) + + def querySpecification(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationContext,0) + + def queryExpression(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnionSelect" ): + listener.enterUnionSelect(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnionSelect" ): + listener.exitUnionSelect(self) + + + class UnionParenthesisSelectContext(SelectStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectStatementContext + super().__init__(parser) + self.unionType = None # Token + self.copyFrom(ctx) + + def queryExpressionNointo(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionNointoContext,0) + + def unionParenthesis(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UnionParenthesisContext) + else: + return self.getTypedRuleContext(MySqlParser.UnionParenthesisContext,i) + + def UNION(self): + return self.getToken(MySqlParser.UNION, 0) + def queryExpression(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionContext,0) + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + def lockClause(self): + return self.getTypedRuleContext(MySqlParser.LockClauseContext,0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnionParenthesisSelect" ): + listener.enterUnionParenthesisSelect(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnionParenthesisSelect" ): + listener.exitUnionParenthesisSelect(self) + + + class SimpleSelectContext(SelectStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def querySpecification(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationContext,0) + + def lockClause(self): + return self.getTypedRuleContext(MySqlParser.LockClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleSelect" ): + listener.enterSimpleSelect(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleSelect" ): + listener.exitSimpleSelect(self) + + + class ParenthesisSelectContext(SelectStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def queryExpression(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionContext,0) + + def lockClause(self): + return self.getTypedRuleContext(MySqlParser.LockClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterParenthesisSelect" ): + listener.enterParenthesisSelect(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitParenthesisSelect" ): + listener.exitParenthesisSelect(self) + + + class WithLateralStatementContext(SelectStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def querySpecificationNointo(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationNointoContext,0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def lateralStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.LateralStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.LateralStatementContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWithLateralStatement" ): + listener.enterWithLateralStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWithLateralStatement" ): + listener.exitWithLateralStatement(self) + + + + def selectStatement(self): + + localctx = MySqlParser.SelectStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_selectStatement) + self._la = 0 # Token type + try: + self.state = 3457 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,473,self._ctx) + if la_ == 1: + localctx = MySqlParser.SimpleSelectContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 3395 + self.querySpecification() + self.state = 3397 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,457,self._ctx) + if la_ == 1: + self.state = 3396 + self.lockClause() + + + pass + + elif la_ == 2: + localctx = MySqlParser.ParenthesisSelectContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 3399 + self.queryExpression() + self.state = 3401 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,458,self._ctx) + if la_ == 1: + self.state = 3400 + self.lockClause() + + + pass + + elif la_ == 3: + localctx = MySqlParser.UnionSelectContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 3403 + self.querySpecificationNointo() + self.state = 3405 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 3404 + self.unionStatement() + + else: + raise NoViableAltException(self) + self.state = 3407 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,459,self._ctx) + + self.state = 3417 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==180: + self.state = 3409 + self.match(MySqlParser.UNION) + self.state = 3411 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==6 or _la==49: + self.state = 3410 + localctx.unionType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==49): + localctx.unionType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3415 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152]: + self.state = 3413 + self.querySpecification() + pass + elif token in [1133]: + self.state = 3414 + self.queryExpression() + pass + else: + raise NoViableAltException(self) + + + + self.state = 3420 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,463,self._ctx) + if la_ == 1: + self.state = 3419 + self.orderByClause() + + + self.state = 3423 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3422 + self.limitClause() + + + self.state = 3426 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,465,self._ctx) + if la_ == 1: + self.state = 3425 + self.lockClause() + + + pass + + elif la_ == 4: + localctx = MySqlParser.UnionParenthesisSelectContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 3428 + self.queryExpressionNointo() + self.state = 3430 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 3429 + self.unionParenthesis() + + else: + raise NoViableAltException(self) + self.state = 3432 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,466,self._ctx) + + self.state = 3439 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==180: + self.state = 3434 + self.match(MySqlParser.UNION) + self.state = 3436 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==6 or _la==49: + self.state = 3435 + localctx.unionType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==49): + localctx.unionType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3438 + self.queryExpression() + + + self.state = 3442 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,469,self._ctx) + if la_ == 1: + self.state = 3441 + self.orderByClause() + + + self.state = 3445 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3444 + self.limitClause() + + + self.state = 3448 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,471,self._ctx) + if la_ == 1: + self.state = 3447 + self.lockClause() + + + pass + + elif la_ == 5: + localctx = MySqlParser.WithLateralStatementContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 3450 + self.querySpecificationNointo() + self.state = 3453 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 3451 + self.match(MySqlParser.COMMA) + self.state = 3452 + self.lateralStatement() + self.state = 3455 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==1135): + break + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UpdateStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def singleUpdateStatement(self): + return self.getTypedRuleContext(MySqlParser.SingleUpdateStatementContext,0) + + + def multipleUpdateStatement(self): + return self.getTypedRuleContext(MySqlParser.MultipleUpdateStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_updateStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUpdateStatement" ): + listener.enterUpdateStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUpdateStatement" ): + listener.exitUpdateStatement(self) + + + + + def updateStatement(self): + + localctx = MySqlParser.UpdateStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_updateStatement) + try: + self.state = 3461 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,474,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3459 + self.singleUpdateStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3460 + self.multipleUpdateStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ValuesStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def expressionsWithDefaults(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionsWithDefaultsContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionsWithDefaultsContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_valuesStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterValuesStatement" ): + listener.enterValuesStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitValuesStatement" ): + listener.exitValuesStatement(self) + + + + + def valuesStatement(self): + + localctx = MySqlParser.ValuesStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_valuesStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3463 + self.match(MySqlParser.VALUES) + self.state = 3464 + self.match(MySqlParser.LR_BRACKET) + self.state = 3466 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,475,self._ctx) + if la_ == 1: + self.state = 3465 + self.expressionsWithDefaults() + + + self.state = 3468 + self.match(MySqlParser.RR_BRACKET) + self.state = 3477 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3469 + self.match(MySqlParser.COMMA) + self.state = 3470 + self.match(MySqlParser.LR_BRACKET) + self.state = 3472 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,476,self._ctx) + if la_ == 1: + self.state = 3471 + self.expressionsWithDefaults() + + + self.state = 3474 + self.match(MySqlParser.RR_BRACKET) + self.state = 3479 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class InsertStatementValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.insertFormat = None # Token + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def expressionsWithDefaults(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionsWithDefaultsContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionsWithDefaultsContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_insertStatementValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertStatementValue" ): + listener.enterInsertStatementValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertStatementValue" ): + listener.exitInsertStatementValue(self) + + + + + def insertStatementValue(self): + + localctx = MySqlParser.InsertStatementValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_insertStatementValue) + self._la = 0 # Token type + try: + self.state = 3498 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152, 1133]: + self.enterOuterAlt(localctx, 1) + self.state = 3480 + self.selectStatement() + pass + elif token in [188, 669]: + self.enterOuterAlt(localctx, 2) + self.state = 3481 + localctx.insertFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==188 or _la==669): + localctx.insertFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3482 + self.match(MySqlParser.LR_BRACKET) + self.state = 3484 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,478,self._ctx) + if la_ == 1: + self.state = 3483 + self.expressionsWithDefaults() + + + self.state = 3486 + self.match(MySqlParser.RR_BRACKET) + self.state = 3495 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3487 + self.match(MySqlParser.COMMA) + self.state = 3488 + self.match(MySqlParser.LR_BRACKET) + self.state = 3490 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,479,self._ctx) + if la_ == 1: + self.state = 3489 + self.expressionsWithDefaults() + + + self.state = 3492 + self.match(MySqlParser.RR_BRACKET) + self.state = 3497 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UpdatedElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_updatedElement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUpdatedElement" ): + listener.enterUpdatedElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUpdatedElement" ): + listener.exitUpdatedElement(self) + + + + + def updatedElement(self): + + localctx = MySqlParser.UpdatedElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_updatedElement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3500 + self.fullColumnName() + self.state = 3501 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 3504 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,482,self._ctx) + if la_ == 1: + self.state = 3502 + self.expression(0) + pass + + elif la_ == 2: + self.state = 3503 + self.match(MySqlParser.DEFAULT) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AssignmentFieldContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_assignmentField + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAssignmentField" ): + listener.enterAssignmentField(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAssignmentField" ): + listener.exitAssignmentField(self) + + + + + def assignmentField(self): + + localctx = MySqlParser.AssignmentFieldContext(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_assignmentField) + try: + self.state = 3508 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.enterOuterAlt(localctx, 1) + self.state = 3506 + self.uid() + pass + elif token in [1160]: + self.enterOuterAlt(localctx, 2) + self.state = 3507 + self.match(MySqlParser.LOCAL_ID) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LockClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + + def IN(self): + return self.getToken(MySqlParser.IN, 0) + + def SHARE(self): + return self.getToken(MySqlParser.SHARE, 0) + + def MODE(self): + return self.getToken(MySqlParser.MODE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lockClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLockClause" ): + listener.enterLockClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLockClause" ): + listener.exitLockClause(self) + + + + + def lockClause(self): + + localctx = MySqlParser.LockClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_lockClause) + try: + self.state = 3516 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [65]: + self.enterOuterAlt(localctx, 1) + self.state = 3510 + self.match(MySqlParser.FOR) + self.state = 3511 + self.match(MySqlParser.UPDATE) + pass + elif token in [103]: + self.enterOuterAlt(localctx, 2) + self.state = 3512 + self.match(MySqlParser.LOCK) + self.state = 3513 + self.match(MySqlParser.IN) + self.state = 3514 + self.match(MySqlParser.SHARE) + self.state = 3515 + self.match(MySqlParser.MODE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SingleDeleteStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + + def DELETE(self): + return self.getToken(MySqlParser.DELETE, 0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + + def limitClauseAtom(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseAtomContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_singleDeleteStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleDeleteStatement" ): + listener.enterSingleDeleteStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleDeleteStatement" ): + listener.exitSingleDeleteStatement(self) + + + + + def singleDeleteStatement(self): + + localctx = MySqlParser.SingleDeleteStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_singleDeleteStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3518 + self.match(MySqlParser.DELETE) + self.state = 3520 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106: + self.state = 3519 + localctx.priority = self.match(MySqlParser.LOW_PRIORITY) + + + self.state = 3523 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==568: + self.state = 3522 + self.match(MySqlParser.QUICK) + + + self.state = 3526 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3525 + self.match(MySqlParser.IGNORE) + + + self.state = 3528 + self.match(MySqlParser.FROM) + self.state = 3529 + self.tableName() + self.state = 3534 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,489,self._ctx) + if la_ == 1: + self.state = 3531 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3530 + self.match(MySqlParser.AS) + + + self.state = 3533 + self.uid() + + + self.state = 3541 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 3536 + self.match(MySqlParser.PARTITION) + self.state = 3537 + self.match(MySqlParser.LR_BRACKET) + self.state = 3538 + self.uidList() + self.state = 3539 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3545 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3543 + self.match(MySqlParser.WHERE) + self.state = 3544 + self.expression(0) + + + self.state = 3548 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==124: + self.state = 3547 + self.orderByClause() + + + self.state = 3552 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3550 + self.match(MySqlParser.LIMIT) + self.state = 3551 + self.limitClauseAtom() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MultipleDeleteStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + + def DELETE(self): + return self.getToken(MySqlParser.DELETE, 0) + + def tableName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableNameContext) + else: + return self.getTypedRuleContext(MySqlParser.TableNameContext,i) + + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def tableSources(self): + return self.getTypedRuleContext(MySqlParser.TableSourcesContext,0) + + + def USING(self): + return self.getToken(MySqlParser.USING, 0) + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def DOT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.DOT) + else: + return self.getToken(MySqlParser.DOT, i) + + def STAR(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STAR) + else: + return self.getToken(MySqlParser.STAR, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_multipleDeleteStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultipleDeleteStatement" ): + listener.enterMultipleDeleteStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultipleDeleteStatement" ): + listener.exitMultipleDeleteStatement(self) + + + + + def multipleDeleteStatement(self): + + localctx = MySqlParser.MultipleDeleteStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_multipleDeleteStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3554 + self.match(MySqlParser.DELETE) + self.state = 3556 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106: + self.state = 3555 + localctx.priority = self.match(MySqlParser.LOW_PRIORITY) + + + self.state = 3559 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,495,self._ctx) + if la_ == 1: + self.state = 3558 + self.match(MySqlParser.QUICK) + + + self.state = 3562 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3561 + self.match(MySqlParser.IGNORE) + + + self.state = 3603 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 3564 + self.tableName() + self.state = 3567 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1132: + self.state = 3565 + self.match(MySqlParser.DOT) + self.state = 3566 + self.match(MySqlParser.STAR) + + + self.state = 3577 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3569 + self.match(MySqlParser.COMMA) + self.state = 3570 + self.tableName() + self.state = 3573 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1132: + self.state = 3571 + self.match(MySqlParser.DOT) + self.state = 3572 + self.match(MySqlParser.STAR) + + + self.state = 3579 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3580 + self.match(MySqlParser.FROM) + self.state = 3581 + self.tableSources() + pass + elif token in [68]: + self.state = 3583 + self.match(MySqlParser.FROM) + self.state = 3584 + self.tableName() + self.state = 3587 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1132: + self.state = 3585 + self.match(MySqlParser.DOT) + self.state = 3586 + self.match(MySqlParser.STAR) + + + self.state = 3597 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3589 + self.match(MySqlParser.COMMA) + self.state = 3590 + self.tableName() + self.state = 3593 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1132: + self.state = 3591 + self.match(MySqlParser.DOT) + self.state = 3592 + self.match(MySqlParser.STAR) + + + self.state = 3599 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3600 + self.match(MySqlParser.USING) + self.state = 3601 + self.tableSources() + pass + else: + raise NoViableAltException(self) + + self.state = 3607 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3605 + self.match(MySqlParser.WHERE) + self.state = 3606 + self.expression(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerOpenStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def OPEN(self): + return self.getToken(MySqlParser.OPEN, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_handlerOpenStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerOpenStatement" ): + listener.enterHandlerOpenStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerOpenStatement" ): + listener.exitHandlerOpenStatement(self) + + + + + def handlerOpenStatement(self): + + localctx = MySqlParser.HandlerOpenStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_handlerOpenStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3609 + self.match(MySqlParser.HANDLER) + self.state = 3610 + self.tableName() + self.state = 3611 + self.match(MySqlParser.OPEN) + self.state = 3616 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,506,self._ctx) + if la_ == 1: + self.state = 3613 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3612 + self.match(MySqlParser.AS) + + + self.state = 3615 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerReadIndexStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.index = None # UidContext + self.moveOrder = None # Token + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def comparisonOperator(self): + return self.getTypedRuleContext(MySqlParser.ComparisonOperatorContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def constants(self): + return self.getTypedRuleContext(MySqlParser.ConstantsContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + + def limitClauseAtom(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseAtomContext,0) + + + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + + def NEXT(self): + return self.getToken(MySqlParser.NEXT, 0) + + def PREV(self): + return self.getToken(MySqlParser.PREV, 0) + + def LAST(self): + return self.getToken(MySqlParser.LAST, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_handlerReadIndexStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerReadIndexStatement" ): + listener.enterHandlerReadIndexStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerReadIndexStatement" ): + listener.exitHandlerReadIndexStatement(self) + + + + + def handlerReadIndexStatement(self): + + localctx = MySqlParser.HandlerReadIndexStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_handlerReadIndexStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3618 + self.match(MySqlParser.HANDLER) + self.state = 3619 + self.tableName() + self.state = 3620 + self.match(MySqlParser.READ) + self.state = 3621 + localctx.index = self.uid() + self.state = 3628 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1124, 1125, 1126, 1127]: + self.state = 3622 + self.comparisonOperator() + self.state = 3623 + self.match(MySqlParser.LR_BRACKET) + self.state = 3624 + self.constants() + self.state = 3625 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [430, 469, 520, 562]: + self.state = 3627 + localctx.moveOrder = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==430 or _la==469 or _la==520 or _la==562): + localctx.moveOrder = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + else: + raise NoViableAltException(self) + + self.state = 3632 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3630 + self.match(MySqlParser.WHERE) + self.state = 3631 + self.expression(0) + + + self.state = 3636 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3634 + self.match(MySqlParser.LIMIT) + self.state = 3635 + self.limitClauseAtom() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerReadStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.moveOrder = None # Token + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + + def NEXT(self): + return self.getToken(MySqlParser.NEXT, 0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + + def limitClauseAtom(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseAtomContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_handlerReadStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerReadStatement" ): + listener.enterHandlerReadStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerReadStatement" ): + listener.exitHandlerReadStatement(self) + + + + + def handlerReadStatement(self): + + localctx = MySqlParser.HandlerReadStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 220, self.RULE_handlerReadStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3638 + self.match(MySqlParser.HANDLER) + self.state = 3639 + self.tableName() + self.state = 3640 + self.match(MySqlParser.READ) + self.state = 3641 + localctx.moveOrder = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==430 or _la==520): + localctx.moveOrder = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3644 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3642 + self.match(MySqlParser.WHERE) + self.state = 3643 + self.expression(0) + + + self.state = 3648 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3646 + self.match(MySqlParser.LIMIT) + self.state = 3647 + self.limitClauseAtom() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerCloseStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def CLOSE(self): + return self.getToken(MySqlParser.CLOSE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_handlerCloseStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerCloseStatement" ): + listener.enterHandlerCloseStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerCloseStatement" ): + listener.exitHandlerCloseStatement(self) + + + + + def handlerCloseStatement(self): + + localctx = MySqlParser.HandlerCloseStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_handlerCloseStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3650 + self.match(MySqlParser.HANDLER) + self.state = 3651 + self.tableName() + self.state = 3652 + self.match(MySqlParser.CLOSE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SingleUpdateStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_singleUpdateStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleUpdateStatement" ): + listener.enterSingleUpdateStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleUpdateStatement" ): + listener.exitSingleUpdateStatement(self) + + + + + def singleUpdateStatement(self): + + localctx = MySqlParser.SingleUpdateStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_singleUpdateStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3654 + self.match(MySqlParser.UPDATE) + self.state = 3656 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106: + self.state = 3655 + localctx.priority = self.match(MySqlParser.LOW_PRIORITY) + + + self.state = 3659 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3658 + self.match(MySqlParser.IGNORE) + + + self.state = 3661 + self.tableName() + self.state = 3666 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513126400) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 3663 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3662 + self.match(MySqlParser.AS) + + + self.state = 3665 + self.uid() + + + self.state = 3668 + self.match(MySqlParser.SET) + self.state = 3669 + self.updatedElement() + self.state = 3674 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3670 + self.match(MySqlParser.COMMA) + self.state = 3671 + self.updatedElement() + self.state = 3676 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3679 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3677 + self.match(MySqlParser.WHERE) + self.state = 3678 + self.expression(0) + + + self.state = 3682 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==124: + self.state = 3681 + self.orderByClause() + + + self.state = 3685 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 3684 + self.limitClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MultipleUpdateStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.priority = None # Token + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def tableSources(self): + return self.getTypedRuleContext(MySqlParser.TableSourcesContext,0) + + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def updatedElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UpdatedElementContext) + else: + return self.getTypedRuleContext(MySqlParser.UpdatedElementContext,i) + + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_multipleUpdateStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultipleUpdateStatement" ): + listener.enterMultipleUpdateStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultipleUpdateStatement" ): + listener.exitMultipleUpdateStatement(self) + + + + + def multipleUpdateStatement(self): + + localctx = MySqlParser.MultipleUpdateStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_multipleUpdateStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3687 + self.match(MySqlParser.UPDATE) + self.state = 3689 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106: + self.state = 3688 + localctx.priority = self.match(MySqlParser.LOW_PRIORITY) + + + self.state = 3692 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 3691 + self.match(MySqlParser.IGNORE) + + + self.state = 3694 + self.tableSources() + self.state = 3695 + self.match(MySqlParser.SET) + self.state = 3696 + self.updatedElement() + self.state = 3701 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 3697 + self.match(MySqlParser.COMMA) + self.state = 3698 + self.updatedElement() + self.state = 3703 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3706 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 3704 + self.match(MySqlParser.WHERE) + self.state = 3705 + self.expression(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OrderByClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ORDER(self): + return self.getToken(MySqlParser.ORDER, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def orderByExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.OrderByExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.OrderByExpressionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_orderByClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrderByClause" ): + listener.enterOrderByClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrderByClause" ): + listener.exitOrderByClause(self) + + + + + def orderByClause(self): + + localctx = MySqlParser.OrderByClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_orderByClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3708 + self.match(MySqlParser.ORDER) + self.state = 3709 + self.match(MySqlParser.BY) + self.state = 3710 + self.orderByExpression() + self.state = 3715 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,524,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3711 + self.match(MySqlParser.COMMA) + self.state = 3712 + self.orderByExpression() + self.state = 3717 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,524,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OrderByExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.order = None # Token + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def ASC(self): + return self.getToken(MySqlParser.ASC, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_orderByExpression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrderByExpression" ): + listener.enterOrderByExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrderByExpression" ): + listener.exitOrderByExpression(self) + + + + + def orderByExpression(self): + + localctx = MySqlParser.OrderByExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 230, self.RULE_orderByExpression) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3718 + self.expression(0) + self.state = 3720 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,525,self._ctx) + if la_ == 1: + self.state = 3719 + localctx.order = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==13 or _la==45): + localctx.order = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableSourcesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableSource(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableSourceContext) + else: + return self.getTypedRuleContext(MySqlParser.TableSourceContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_tableSources + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableSources" ): + listener.enterTableSources(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableSources" ): + listener.exitTableSources(self) + + + + + def tableSources(self): + + localctx = MySqlParser.TableSourcesContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_tableSources) + try: + self.enterOuterAlt(localctx, 1) + self.state = 3722 + self.tableSource() + self.state = 3727 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,526,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3723 + self.match(MySqlParser.COMMA) + self.state = 3724 + self.tableSource() + self.state = 3729 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,526,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableSourceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_tableSource + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class TableJsonContext(TableSourceContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceContext + super().__init__(parser) + self.copyFrom(ctx) + + def jsonTable(self): + return self.getTypedRuleContext(MySqlParser.JsonTableContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableJson" ): + listener.enterTableJson(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableJson" ): + listener.exitTableJson(self) + + + class TableSourceNestedContext(TableSourceContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceContext + super().__init__(parser) + self.copyFrom(ctx) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def joinPart(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.JoinPartContext) + else: + return self.getTypedRuleContext(MySqlParser.JoinPartContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableSourceNested" ): + listener.enterTableSourceNested(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableSourceNested" ): + listener.exitTableSourceNested(self) + + + class TableSourceBaseContext(TableSourceContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceContext + super().__init__(parser) + self.copyFrom(ctx) + + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def joinPart(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.JoinPartContext) + else: + return self.getTypedRuleContext(MySqlParser.JoinPartContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableSourceBase" ): + listener.enterTableSourceBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableSourceBase" ): + listener.exitTableSourceBase(self) + + + + def tableSource(self): + + localctx = MySqlParser.TableSourceContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_tableSource) + self._la = 0 # Token type + try: + self.state = 3748 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,529,self._ctx) + if la_ == 1: + localctx = MySqlParser.TableSourceBaseContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 3730 + self.tableSourceItem() + self.state = 3734 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,527,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3731 + self.joinPart() + self.state = 3736 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,527,self._ctx) + + pass + + elif la_ == 2: + localctx = MySqlParser.TableSourceNestedContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 3737 + self.match(MySqlParser.LR_BRACKET) + self.state = 3738 + self.tableSourceItem() + self.state = 3742 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & -9150751492863426559) != 0) or ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 288230410511450113) != 0): + self.state = 3739 + self.joinPart() + self.state = 3744 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 3745 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 3: + localctx = MySqlParser.TableJsonContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 3747 + self.jsonTable() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableSourceItemContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_tableSourceItem + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SubqueryTableItemContext(TableSourceItemContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceItemContext + super().__init__(parser) + self.parenthesisSubquery = None # SelectStatementContext + self.alias = None # UidContext + self.copyFrom(ctx) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubqueryTableItem" ): + listener.enterSubqueryTableItem(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubqueryTableItem" ): + listener.exitSubqueryTableItem(self) + + + class AtomTableItemContext(TableSourceItemContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceItemContext + super().__init__(parser) + self.alias = None # UidContext + self.copyFrom(ctx) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def indexHint(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexHintContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexHintContext,i) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAtomTableItem" ): + listener.enterAtomTableItem(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAtomTableItem" ): + listener.exitAtomTableItem(self) + + + class TableSourcesItemContext(TableSourceItemContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.TableSourceItemContext + super().__init__(parser) + self.copyFrom(ctx) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tableSources(self): + return self.getTypedRuleContext(MySqlParser.TableSourcesContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableSourcesItem" ): + listener.enterTableSourcesItem(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableSourcesItem" ): + listener.exitTableSourcesItem(self) + + + + def tableSourceItem(self): + + localctx = MySqlParser.TableSourceItemContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_tableSourceItem) + self._la = 0 # Token type + try: + self.state = 3790 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,537,self._ctx) + if la_ == 1: + localctx = MySqlParser.AtomTableItemContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 3750 + self.tableName() + self.state = 3756 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 3751 + self.match(MySqlParser.PARTITION) + self.state = 3752 + self.match(MySqlParser.LR_BRACKET) + self.state = 3753 + self.uidList() + self.state = 3754 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 3762 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,532,self._ctx) + if la_ == 1: + self.state = 3759 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3758 + self.match(MySqlParser.AS) + + + self.state = 3761 + localctx.alias = self.uid() + + + self.state = 3772 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,534,self._ctx) + if la_ == 1: + self.state = 3764 + self.indexHint() + self.state = 3769 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,533,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3765 + self.match(MySqlParser.COMMA) + self.state = 3766 + self.indexHint() + self.state = 3771 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,533,self._ctx) + + + + pass + + elif la_ == 2: + localctx = MySqlParser.SubqueryTableItemContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 3779 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,535,self._ctx) + if la_ == 1: + self.state = 3774 + self.selectStatement() + pass + + elif la_ == 2: + self.state = 3775 + self.match(MySqlParser.LR_BRACKET) + self.state = 3776 + localctx.parenthesisSubquery = self.selectStatement() + self.state = 3777 + self.match(MySqlParser.RR_BRACKET) + pass + + + self.state = 3782 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3781 + self.match(MySqlParser.AS) + + + self.state = 3784 + localctx.alias = self.uid() + pass + + elif la_ == 3: + localctx = MySqlParser.TableSourcesItemContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 3786 + self.match(MySqlParser.LR_BRACKET) + self.state = 3787 + self.tableSources() + self.state = 3788 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexHintContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.indexHintAction = None # Token + self.keyFormat = None # Token + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def USE(self): + return self.getToken(MySqlParser.USE, 0) + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def FORCE(self): + return self.getToken(MySqlParser.FORCE, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def indexHintType(self): + return self.getTypedRuleContext(MySqlParser.IndexHintTypeContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_indexHint + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexHint" ): + listener.enterIndexHint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexHint" ): + listener.exitIndexHint(self) + + + + + def indexHint(self): + + localctx = MySqlParser.IndexHintContext(self, self._ctx, self.state) + self.enterRule(localctx, 238, self.RULE_indexHint) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3792 + localctx.indexHintAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==66 or _la==78 or _la==186): + localctx.indexHintAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3793 + localctx.keyFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.keyFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3796 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 3794 + self.match(MySqlParser.FOR) + self.state = 3795 + self.indexHintType() + + + self.state = 3798 + self.match(MySqlParser.LR_BRACKET) + self.state = 3799 + self.uidList() + self.state = 3800 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexHintTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def JOIN(self): + return self.getToken(MySqlParser.JOIN, 0) + + def ORDER(self): + return self.getToken(MySqlParser.ORDER, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_indexHintType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexHintType" ): + listener.enterIndexHintType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexHintType" ): + listener.exitIndexHintType(self) + + + + + def indexHintType(self): + + localctx = MySqlParser.IndexHintTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 240, self.RULE_indexHintType) + try: + self.state = 3807 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [90]: + self.enterOuterAlt(localctx, 1) + self.state = 3802 + self.match(MySqlParser.JOIN) + pass + elif token in [124]: + self.enterOuterAlt(localctx, 2) + self.state = 3803 + self.match(MySqlParser.ORDER) + self.state = 3804 + self.match(MySqlParser.BY) + pass + elif token in [73]: + self.enterOuterAlt(localctx, 3) + self.state = 3805 + self.match(MySqlParser.GROUP) + self.state = 3806 + self.match(MySqlParser.BY) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JoinPartContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_joinPart + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class InnerJoinContext(JoinPartContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.JoinPartContext + super().__init__(parser) + self.copyFrom(ctx) + + def JOIN(self): + return self.getToken(MySqlParser.JOIN, 0) + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def LATERAL(self): + return self.getToken(MySqlParser.LATERAL, 0) + def joinSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.JoinSpecContext) + else: + return self.getTypedRuleContext(MySqlParser.JoinSpecContext,i) + + def INNER(self): + return self.getToken(MySqlParser.INNER, 0) + def CROSS(self): + return self.getToken(MySqlParser.CROSS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInnerJoin" ): + listener.enterInnerJoin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInnerJoin" ): + listener.exitInnerJoin(self) + + + class NaturalJoinContext(JoinPartContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.JoinPartContext + super().__init__(parser) + self.copyFrom(ctx) + + def NATURAL(self): + return self.getToken(MySqlParser.NATURAL, 0) + def JOIN(self): + return self.getToken(MySqlParser.JOIN, 0) + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def LEFT(self): + return self.getToken(MySqlParser.LEFT, 0) + def RIGHT(self): + return self.getToken(MySqlParser.RIGHT, 0) + def OUTER(self): + return self.getToken(MySqlParser.OUTER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNaturalJoin" ): + listener.enterNaturalJoin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNaturalJoin" ): + listener.exitNaturalJoin(self) + + + class OuterJoinContext(JoinPartContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.JoinPartContext + super().__init__(parser) + self.copyFrom(ctx) + + def JOIN(self): + return self.getToken(MySqlParser.JOIN, 0) + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def LEFT(self): + return self.getToken(MySqlParser.LEFT, 0) + def RIGHT(self): + return self.getToken(MySqlParser.RIGHT, 0) + def OUTER(self): + return self.getToken(MySqlParser.OUTER, 0) + def LATERAL(self): + return self.getToken(MySqlParser.LATERAL, 0) + def joinSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.JoinSpecContext) + else: + return self.getTypedRuleContext(MySqlParser.JoinSpecContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOuterJoin" ): + listener.enterOuterJoin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOuterJoin" ): + listener.exitOuterJoin(self) + + + class StraightJoinContext(JoinPartContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.JoinPartContext + super().__init__(parser) + self.copyFrom(ctx) + + def STRAIGHT_JOIN(self): + return self.getToken(MySqlParser.STRAIGHT_JOIN, 0) + def tableSourceItem(self): + return self.getTypedRuleContext(MySqlParser.TableSourceItemContext,0) + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStraightJoin" ): + listener.enterStraightJoin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStraightJoin" ): + listener.exitStraightJoin(self) + + + + def joinPart(self): + + localctx = MySqlParser.JoinPartContext(self, self._ctx, self.state) + self.enterRule(localctx, 242, self.RULE_joinPart) + self._la = 0 # Token type + try: + self.state = 3856 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [34, 83, 90]: + localctx = MySqlParser.InnerJoinContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 3810 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==34 or _la==83: + self.state = 3809 + _la = self._input.LA(1) + if not(_la==34 or _la==83): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3812 + self.match(MySqlParser.JOIN) + self.state = 3814 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,541,self._ctx) + if la_ == 1: + self.state = 3813 + self.match(MySqlParser.LATERAL) + + + self.state = 3816 + self.tableSourceItem() + self.state = 3820 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,542,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3817 + self.joinSpec() + self.state = 3822 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,542,self._ctx) + + pass + elif token in [171]: + localctx = MySqlParser.StraightJoinContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 3823 + self.match(MySqlParser.STRAIGHT_JOIN) + self.state = 3824 + self.tableSourceItem() + self.state = 3829 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,543,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3825 + self.match(MySqlParser.ON) + self.state = 3826 + self.expression(0) + self.state = 3831 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,543,self._ctx) + + pass + elif token in [97, 148]: + localctx = MySqlParser.OuterJoinContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 3832 + _la = self._input.LA(1) + if not(_la==97 or _la==148): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3834 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==126: + self.state = 3833 + self.match(MySqlParser.OUTER) + + + self.state = 3836 + self.match(MySqlParser.JOIN) + self.state = 3838 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,545,self._ctx) + if la_ == 1: + self.state = 3837 + self.match(MySqlParser.LATERAL) + + + self.state = 3840 + self.tableSourceItem() + self.state = 3844 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,546,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3841 + self.joinSpec() + self.state = 3846 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,546,self._ctx) + + pass + elif token in [113]: + localctx = MySqlParser.NaturalJoinContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 3847 + self.match(MySqlParser.NATURAL) + self.state = 3852 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==97 or _la==148: + self.state = 3848 + _la = self._input.LA(1) + if not(_la==97 or _la==148): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3850 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==126: + self.state = 3849 + self.match(MySqlParser.OUTER) + + + + + self.state = 3854 + self.match(MySqlParser.JOIN) + self.state = 3855 + self.tableSourceItem() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JoinSpecContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def USING(self): + return self.getToken(MySqlParser.USING, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_joinSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJoinSpec" ): + listener.enterJoinSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJoinSpec" ): + listener.exitJoinSpec(self) + + + + + def joinSpec(self): + + localctx = MySqlParser.JoinSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 244, self.RULE_joinSpec) + try: + self.state = 3865 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [118]: + self.enterOuterAlt(localctx, 1) + self.state = 3858 + self.match(MySqlParser.ON) + self.state = 3859 + self.expression(0) + pass + elif token in [187]: + self.enterOuterAlt(localctx, 2) + self.state = 3860 + self.match(MySqlParser.USING) + self.state = 3861 + self.match(MySqlParser.LR_BRACKET) + self.state = 3862 + self.uidList() + self.state = 3863 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class QueryExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def querySpecification(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def queryExpression(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_queryExpression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryExpression" ): + listener.enterQueryExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryExpression" ): + listener.exitQueryExpression(self) + + + + + def queryExpression(self): + + localctx = MySqlParser.QueryExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 246, self.RULE_queryExpression) + try: + self.state = 3875 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,551,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3867 + self.match(MySqlParser.LR_BRACKET) + self.state = 3868 + self.querySpecification() + self.state = 3869 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3871 + self.match(MySqlParser.LR_BRACKET) + self.state = 3872 + self.queryExpression() + self.state = 3873 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class QueryExpressionNointoContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def querySpecificationNointo(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationNointoContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def queryExpressionNointo(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionNointoContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_queryExpressionNointo + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryExpressionNointo" ): + listener.enterQueryExpressionNointo(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryExpressionNointo" ): + listener.exitQueryExpressionNointo(self) + + + + + def queryExpressionNointo(self): + + localctx = MySqlParser.QueryExpressionNointoContext(self, self._ctx, self.state) + self.enterRule(localctx, 248, self.RULE_queryExpressionNointo) + try: + self.state = 3885 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,552,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3877 + self.match(MySqlParser.LR_BRACKET) + self.state = 3878 + self.querySpecificationNointo() + self.state = 3879 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3881 + self.match(MySqlParser.LR_BRACKET) + self.state = 3882 + self.queryExpressionNointo() + self.state = 3883 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class QuerySpecificationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SELECT(self): + return self.getToken(MySqlParser.SELECT, 0) + + def selectElements(self): + return self.getTypedRuleContext(MySqlParser.SelectElementsContext,0) + + + def fromClause(self): + return self.getTypedRuleContext(MySqlParser.FromClauseContext,0) + + + def selectSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectSpecContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectSpecContext,i) + + + def selectIntoExpression(self): + return self.getTypedRuleContext(MySqlParser.SelectIntoExpressionContext,0) + + + def groupByClause(self): + return self.getTypedRuleContext(MySqlParser.GroupByClauseContext,0) + + + def havingClause(self): + return self.getTypedRuleContext(MySqlParser.HavingClauseContext,0) + + + def windowClause(self): + return self.getTypedRuleContext(MySqlParser.WindowClauseContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_querySpecification + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQuerySpecification" ): + listener.enterQuerySpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQuerySpecification" ): + listener.exitQuerySpecification(self) + + + + + def querySpecification(self): + + localctx = MySqlParser.QuerySpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 250, self.RULE_querySpecification) + self._la = 0 # Token type + try: + self.state = 3941 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,567,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 3887 + self.match(MySqlParser.SELECT) + self.state = 3891 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,553,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3888 + self.selectSpec() + self.state = 3893 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,553,self._ctx) + + self.state = 3894 + self.selectElements() + self.state = 3896 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==87: + self.state = 3895 + self.selectIntoExpression() + + + self.state = 3898 + self.fromClause() + self.state = 3900 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,555,self._ctx) + if la_ == 1: + self.state = 3899 + self.groupByClause() + + + self.state = 3903 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==74: + self.state = 3902 + self.havingClause() + + + self.state = 3906 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==676: + self.state = 3905 + self.windowClause() + + + self.state = 3909 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,558,self._ctx) + if la_ == 1: + self.state = 3908 + self.orderByClause() + + + self.state = 3912 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,559,self._ctx) + if la_ == 1: + self.state = 3911 + self.limitClause() + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 3914 + self.match(MySqlParser.SELECT) + self.state = 3918 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,560,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3915 + self.selectSpec() + self.state = 3920 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,560,self._ctx) + + self.state = 3921 + self.selectElements() + self.state = 3922 + self.fromClause() + self.state = 3924 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,561,self._ctx) + if la_ == 1: + self.state = 3923 + self.groupByClause() + + + self.state = 3927 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==74: + self.state = 3926 + self.havingClause() + + + self.state = 3930 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==676: + self.state = 3929 + self.windowClause() + + + self.state = 3933 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,564,self._ctx) + if la_ == 1: + self.state = 3932 + self.orderByClause() + + + self.state = 3936 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,565,self._ctx) + if la_ == 1: + self.state = 3935 + self.limitClause() + + + self.state = 3939 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==87: + self.state = 3938 + self.selectIntoExpression() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class QuerySpecificationNointoContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SELECT(self): + return self.getToken(MySqlParser.SELECT, 0) + + def selectElements(self): + return self.getTypedRuleContext(MySqlParser.SelectElementsContext,0) + + + def fromClause(self): + return self.getTypedRuleContext(MySqlParser.FromClauseContext,0) + + + def selectSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectSpecContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectSpecContext,i) + + + def groupByClause(self): + return self.getTypedRuleContext(MySqlParser.GroupByClauseContext,0) + + + def havingClause(self): + return self.getTypedRuleContext(MySqlParser.HavingClauseContext,0) + + + def windowClause(self): + return self.getTypedRuleContext(MySqlParser.WindowClauseContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_querySpecificationNointo + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQuerySpecificationNointo" ): + listener.enterQuerySpecificationNointo(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQuerySpecificationNointo" ): + listener.exitQuerySpecificationNointo(self) + + + + + def querySpecificationNointo(self): + + localctx = MySqlParser.QuerySpecificationNointoContext(self, self._ctx, self.state) + self.enterRule(localctx, 252, self.RULE_querySpecificationNointo) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3943 + self.match(MySqlParser.SELECT) + self.state = 3947 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,568,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 3944 + self.selectSpec() + self.state = 3949 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,568,self._ctx) + + self.state = 3950 + self.selectElements() + self.state = 3951 + self.fromClause() + self.state = 3953 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,569,self._ctx) + if la_ == 1: + self.state = 3952 + self.groupByClause() + + + self.state = 3956 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==74: + self.state = 3955 + self.havingClause() + + + self.state = 3959 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==676: + self.state = 3958 + self.windowClause() + + + self.state = 3962 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,572,self._ctx) + if la_ == 1: + self.state = 3961 + self.orderByClause() + + + self.state = 3965 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,573,self._ctx) + if la_ == 1: + self.state = 3964 + self.limitClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnionParenthesisContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.unionType = None # Token + + def UNION(self): + return self.getToken(MySqlParser.UNION, 0) + + def queryExpressionNointo(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionNointoContext,0) + + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_unionParenthesis + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnionParenthesis" ): + listener.enterUnionParenthesis(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnionParenthesis" ): + listener.exitUnionParenthesis(self) + + + + + def unionParenthesis(self): + + localctx = MySqlParser.UnionParenthesisContext(self, self._ctx, self.state) + self.enterRule(localctx, 254, self.RULE_unionParenthesis) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3967 + self.match(MySqlParser.UNION) + self.state = 3969 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==6 or _la==49: + self.state = 3968 + localctx.unionType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==49): + localctx.unionType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3971 + self.queryExpressionNointo() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnionStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.unionType = None # Token + + def UNION(self): + return self.getToken(MySqlParser.UNION, 0) + + def querySpecificationNointo(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationNointoContext,0) + + + def queryExpressionNointo(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionNointoContext,0) + + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_unionStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnionStatement" ): + listener.enterUnionStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnionStatement" ): + listener.exitUnionStatement(self) + + + + + def unionStatement(self): + + localctx = MySqlParser.UnionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 256, self.RULE_unionStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3973 + self.match(MySqlParser.UNION) + self.state = 3975 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==6 or _la==49: + self.state = 3974 + localctx.unionType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==49): + localctx.unionType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 3979 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152]: + self.state = 3977 + self.querySpecificationNointo() + pass + elif token in [1133]: + self.state = 3978 + self.queryExpressionNointo() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LateralStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LATERAL(self): + return self.getToken(MySqlParser.LATERAL, 0) + + def querySpecificationNointo(self): + return self.getTypedRuleContext(MySqlParser.QuerySpecificationNointoContext,0) + + + def queryExpressionNointo(self): + return self.getTypedRuleContext(MySqlParser.QueryExpressionNointoContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lateralStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLateralStatement" ): + listener.enterLateralStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLateralStatement" ): + listener.exitLateralStatement(self) + + + + + def lateralStatement(self): + + localctx = MySqlParser.LateralStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 258, self.RULE_lateralStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3981 + self.match(MySqlParser.LATERAL) + self.state = 3996 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,580,self._ctx) + if la_ == 1: + self.state = 3982 + self.querySpecificationNointo() + pass + + elif la_ == 2: + self.state = 3983 + self.queryExpressionNointo() + pass + + elif la_ == 3: + self.state = 3984 + self.match(MySqlParser.LR_BRACKET) + self.state = 3987 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152]: + self.state = 3985 + self.querySpecificationNointo() + pass + elif token in [1133]: + self.state = 3986 + self.queryExpressionNointo() + pass + else: + raise NoViableAltException(self) + + self.state = 3989 + self.match(MySqlParser.RR_BRACKET) + self.state = 3994 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,579,self._ctx) + if la_ == 1: + self.state = 3991 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 3990 + self.match(MySqlParser.AS) + + + self.state = 3993 + self.uid() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def JSON_TABLE(self): + return self.getToken(MySqlParser.JSON_TABLE, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + + def jsonColumnList(self): + return self.getTypedRuleContext(MySqlParser.JsonColumnListContext,0) + + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_jsonTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonTable" ): + listener.enterJsonTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonTable" ): + listener.exitJsonTable(self) + + + + + def jsonTable(self): + + localctx = MySqlParser.JsonTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 260, self.RULE_jsonTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3998 + self.match(MySqlParser.JSON_TABLE) + self.state = 3999 + self.match(MySqlParser.LR_BRACKET) + self.state = 4000 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4001 + self.match(MySqlParser.COMMA) + self.state = 4002 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4003 + self.match(MySqlParser.COLUMNS) + self.state = 4004 + self.match(MySqlParser.LR_BRACKET) + self.state = 4005 + self.jsonColumnList() + self.state = 4006 + self.match(MySqlParser.RR_BRACKET) + self.state = 4007 + self.match(MySqlParser.RR_BRACKET) + self.state = 4012 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,582,self._ctx) + if la_ == 1: + self.state = 4009 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 4008 + self.match(MySqlParser.AS) + + + self.state = 4011 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonColumnListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def jsonColumn(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.JsonColumnContext) + else: + return self.getTypedRuleContext(MySqlParser.JsonColumnContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_jsonColumnList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonColumnList" ): + listener.enterJsonColumnList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonColumnList" ): + listener.exitJsonColumnList(self) + + + + + def jsonColumnList(self): + + localctx = MySqlParser.JsonColumnListContext(self, self._ctx, self.state) + self.enterRule(localctx, 262, self.RULE_jsonColumnList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4014 + self.jsonColumn() + self.state = 4019 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4015 + self.match(MySqlParser.COMMA) + self.state = 4016 + self.jsonColumn() + self.state = 4021 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonColumnContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def ORDINALITY(self): + return self.getToken(MySqlParser.ORDINALITY, 0) + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def PATH(self): + return self.getToken(MySqlParser.PATH, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def EXISTS(self): + return self.getToken(MySqlParser.EXISTS, 0) + + def jsonOnEmpty(self): + return self.getTypedRuleContext(MySqlParser.JsonOnEmptyContext,0) + + + def jsonOnError(self): + return self.getTypedRuleContext(MySqlParser.JsonOnErrorContext,0) + + + def NESTED(self): + return self.getToken(MySqlParser.NESTED, 0) + + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def jsonColumnList(self): + return self.getTypedRuleContext(MySqlParser.JsonColumnListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_jsonColumn + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonColumn" ): + listener.enterJsonColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonColumn" ): + listener.exitJsonColumn(self) + + + + + def jsonColumn(self): + + localctx = MySqlParser.JsonColumnContext(self, self._ctx, self.state) + self.enterRule(localctx, 264, self.RULE_jsonColumn) + self._la = 0 # Token type + try: + self.state = 4051 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,589,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 4022 + self.fullColumnName() + self.state = 4039 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [65]: + self.state = 4023 + self.match(MySqlParser.FOR) + self.state = 4024 + self.match(MySqlParser.ORDINALITY) + pass + elif token in [25, 153, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 239, 346, 348, 349, 431, 466, 518, 803, 804, 805, 806, 807, 808, 809, 810, 811]: + self.state = 4025 + self.dataType() + self.state = 4037 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [285]: + self.state = 4026 + self.match(MySqlParser.PATH) + self.state = 4027 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4029 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,584,self._ctx) + if la_ == 1: + self.state = 4028 + self.jsonOnEmpty() + + + self.state = 4032 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42 or _la==116 or _la==411: + self.state = 4031 + self.jsonOnError() + + + pass + elif token in [60]: + self.state = 4034 + self.match(MySqlParser.EXISTS) + self.state = 4035 + self.match(MySqlParser.PATH) + self.state = 4036 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 4041 + self.match(MySqlParser.NESTED) + self.state = 4043 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==285: + self.state = 4042 + self.match(MySqlParser.PATH) + + + self.state = 4045 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4046 + self.match(MySqlParser.COLUMNS) + self.state = 4047 + self.match(MySqlParser.LR_BRACKET) + self.state = 4048 + self.jsonColumnList() + self.state = 4049 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonOnEmptyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def EMPTY(self): + return self.getToken(MySqlParser.EMPTY, 0) + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def ERROR(self): + return self.getToken(MySqlParser.ERROR, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def defaultValue(self): + return self.getTypedRuleContext(MySqlParser.DefaultValueContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_jsonOnEmpty + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonOnEmpty" ): + listener.enterJsonOnEmpty(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonOnEmpty" ): + listener.exitJsonOnEmpty(self) + + + + + def jsonOnEmpty(self): + + localctx = MySqlParser.JsonOnEmptyContext(self, self._ctx, self.state) + self.enterRule(localctx, 266, self.RULE_jsonOnEmpty) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4057 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [116]: + self.state = 4053 + self.match(MySqlParser.NULL_LITERAL) + pass + elif token in [411]: + self.state = 4054 + self.match(MySqlParser.ERROR) + pass + elif token in [42]: + self.state = 4055 + self.match(MySqlParser.DEFAULT) + self.state = 4056 + self.defaultValue() + pass + else: + raise NoViableAltException(self) + + self.state = 4059 + self.match(MySqlParser.ON) + self.state = 4060 + self.match(MySqlParser.EMPTY) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonOnErrorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def ERROR(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ERROR) + else: + return self.getToken(MySqlParser.ERROR, i) + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def defaultValue(self): + return self.getTypedRuleContext(MySqlParser.DefaultValueContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_jsonOnError + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonOnError" ): + listener.enterJsonOnError(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonOnError" ): + listener.exitJsonOnError(self) + + + + + def jsonOnError(self): + + localctx = MySqlParser.JsonOnErrorContext(self, self._ctx, self.state) + self.enterRule(localctx, 268, self.RULE_jsonOnError) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4066 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [116]: + self.state = 4062 + self.match(MySqlParser.NULL_LITERAL) + pass + elif token in [411]: + self.state = 4063 + self.match(MySqlParser.ERROR) + pass + elif token in [42]: + self.state = 4064 + self.match(MySqlParser.DEFAULT) + self.state = 4065 + self.defaultValue() + pass + else: + raise NoViableAltException(self) + + self.state = 4068 + self.match(MySqlParser.ON) + self.state = 4069 + self.match(MySqlParser.ERROR) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectSpecContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def DISTINCTROW(self): + return self.getToken(MySqlParser.DISTINCTROW, 0) + + def HIGH_PRIORITY(self): + return self.getToken(MySqlParser.HIGH_PRIORITY, 0) + + def STRAIGHT_JOIN(self): + return self.getToken(MySqlParser.STRAIGHT_JOIN, 0) + + def SQL_SMALL_RESULT(self): + return self.getToken(MySqlParser.SQL_SMALL_RESULT, 0) + + def SQL_BIG_RESULT(self): + return self.getToken(MySqlParser.SQL_BIG_RESULT, 0) + + def SQL_BUFFER_RESULT(self): + return self.getToken(MySqlParser.SQL_BUFFER_RESULT, 0) + + def SQL_CACHE(self): + return self.getToken(MySqlParser.SQL_CACHE, 0) + + def SQL_NO_CACHE(self): + return self.getToken(MySqlParser.SQL_NO_CACHE, 0) + + def SQL_CALC_FOUND_ROWS(self): + return self.getToken(MySqlParser.SQL_CALC_FOUND_ROWS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_selectSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectSpec" ): + listener.enterSelectSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectSpec" ): + listener.exitSelectSpec(self) + + + + + def selectSpec(self): + + localctx = MySqlParser.SelectSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 270, self.RULE_selectSpec) + self._la = 0 # Token type + try: + self.state = 4079 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [6, 49, 50]: + self.enterOuterAlt(localctx, 1) + self.state = 4071 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1688849860264000) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [75]: + self.enterOuterAlt(localctx, 2) + self.state = 4072 + self.match(MySqlParser.HIGH_PRIORITY) + pass + elif token in [171]: + self.enterOuterAlt(localctx, 3) + self.state = 4073 + self.match(MySqlParser.STRAIGHT_JOIN) + pass + elif token in [166]: + self.enterOuterAlt(localctx, 4) + self.state = 4074 + self.match(MySqlParser.SQL_SMALL_RESULT) + pass + elif token in [164]: + self.enterOuterAlt(localctx, 5) + self.state = 4075 + self.match(MySqlParser.SQL_BIG_RESULT) + pass + elif token in [625]: + self.enterOuterAlt(localctx, 6) + self.state = 4076 + self.match(MySqlParser.SQL_BUFFER_RESULT) + pass + elif token in [626, 627]: + self.enterOuterAlt(localctx, 7) + self.state = 4077 + _la = self._input.LA(1) + if not(_la==626 or _la==627): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [165]: + self.enterOuterAlt(localctx, 8) + self.state = 4078 + self.match(MySqlParser.SQL_CALC_FOUND_ROWS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectElementsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.star = None # Token + + def selectElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectElementContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectElementContext,i) + + + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_selectElements + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectElements" ): + listener.enterSelectElements(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectElements" ): + listener.exitSelectElements(self) + + + + + def selectElements(self): + + localctx = MySqlParser.SelectElementsContext(self, self._ctx, self.state) + self.enterRule(localctx, 272, self.RULE_selectElements) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4083 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,593,self._ctx) + if la_ == 1: + self.state = 4081 + localctx.star = self.match(MySqlParser.STAR) + pass + + elif la_ == 2: + self.state = 4082 + self.selectElement() + pass + + + self.state = 4089 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,594,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4085 + self.match(MySqlParser.COMMA) + self.state = 4086 + self.selectElement() + self.state = 4091 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,594,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_selectElement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SelectExpressionElementContext(SelectElementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectElementContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + def VAR_ASSIGN(self): + return self.getToken(MySqlParser.VAR_ASSIGN, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectExpressionElement" ): + listener.enterSelectExpressionElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectExpressionElement" ): + listener.exitSelectExpressionElement(self) + + + class SelectFunctionElementContext(SelectElementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectElementContext + super().__init__(parser) + self.copyFrom(ctx) + + def functionCall(self): + return self.getTypedRuleContext(MySqlParser.FunctionCallContext,0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectFunctionElement" ): + listener.enterSelectFunctionElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectFunctionElement" ): + listener.exitSelectFunctionElement(self) + + + class SelectStarElementContext(SelectElementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectElementContext + super().__init__(parser) + self.copyFrom(ctx) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectStarElement" ): + listener.enterSelectStarElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectStarElement" ): + listener.exitSelectStarElement(self) + + + class SelectColumnElementContext(SelectElementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectElementContext + super().__init__(parser) + self.copyFrom(ctx) + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectColumnElement" ): + listener.enterSelectColumnElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectColumnElement" ): + listener.exitSelectColumnElement(self) + + + + def selectElement(self): + + localctx = MySqlParser.SelectElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 274, self.RULE_selectElement) + self._la = 0 # Token type + try: + self.state = 4121 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,602,self._ctx) + if la_ == 1: + localctx = MySqlParser.SelectStarElementContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4092 + self.fullId() + self.state = 4093 + self.match(MySqlParser.DOT) + self.state = 4094 + self.match(MySqlParser.STAR) + pass + + elif la_ == 2: + localctx = MySqlParser.SelectColumnElementContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4096 + self.fullColumnName() + self.state = 4101 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,596,self._ctx) + if la_ == 1: + self.state = 4098 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 4097 + self.match(MySqlParser.AS) + + + self.state = 4100 + self.uid() + + + pass + + elif la_ == 3: + localctx = MySqlParser.SelectFunctionElementContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4103 + self.functionCall() + self.state = 4108 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,598,self._ctx) + if la_ == 1: + self.state = 4105 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 4104 + self.match(MySqlParser.AS) + + + self.state = 4107 + self.uid() + + + pass + + elif la_ == 4: + localctx = MySqlParser.SelectExpressionElementContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4112 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,599,self._ctx) + if la_ == 1: + self.state = 4110 + self.match(MySqlParser.LOCAL_ID) + self.state = 4111 + self.match(MySqlParser.VAR_ASSIGN) + + + self.state = 4114 + self.expression(0) + self.state = 4119 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,601,self._ctx) + if la_ == 1: + self.state = 4116 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 4115 + self.match(MySqlParser.AS) + + + self.state = 4118 + self.uid() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectIntoExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_selectIntoExpression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SelectIntoVariablesContext(SelectIntoExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectIntoExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + def assignmentField(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.AssignmentFieldContext) + else: + return self.getTypedRuleContext(MySqlParser.AssignmentFieldContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectIntoVariables" ): + listener.enterSelectIntoVariables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectIntoVariables" ): + listener.exitSelectIntoVariables(self) + + + class SelectIntoTextFileContext(SelectIntoExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectIntoExpressionContext + super().__init__(parser) + self.filename = None # Token + self.charset = None # CharsetNameContext + self.fieldsFormat = None # Token + self.copyFrom(ctx) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + def OUTFILE(self): + return self.getToken(MySqlParser.OUTFILE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def LINES(self): + return self.getToken(MySqlParser.LINES, 0) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def FIELDS(self): + return self.getToken(MySqlParser.FIELDS, 0) + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + def selectFieldsInto(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectFieldsIntoContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectFieldsIntoContext,i) + + def selectLinesInto(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SelectLinesIntoContext) + else: + return self.getTypedRuleContext(MySqlParser.SelectLinesIntoContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectIntoTextFile" ): + listener.enterSelectIntoTextFile(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectIntoTextFile" ): + listener.exitSelectIntoTextFile(self) + + + class SelectIntoDumpFileContext(SelectIntoExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SelectIntoExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + def DUMPFILE(self): + return self.getToken(MySqlParser.DUMPFILE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectIntoDumpFile" ): + listener.enterSelectIntoDumpFile(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectIntoDumpFile" ): + listener.exitSelectIntoDumpFile(self) + + + + def selectIntoExpression(self): + + localctx = MySqlParser.SelectIntoExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 276, self.RULE_selectIntoExpression) + self._la = 0 # Token type + try: + self.state = 4159 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,609,self._ctx) + if la_ == 1: + localctx = MySqlParser.SelectIntoVariablesContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4123 + self.match(MySqlParser.INTO) + self.state = 4124 + self.assignmentField() + self.state = 4129 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4125 + self.match(MySqlParser.COMMA) + self.state = 4126 + self.assignmentField() + self.state = 4131 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.SelectIntoDumpFileContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4132 + self.match(MySqlParser.INTO) + self.state = 4133 + self.match(MySqlParser.DUMPFILE) + self.state = 4134 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 3: + localctx = MySqlParser.SelectIntoTextFileContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4135 + self.match(MySqlParser.INTO) + self.state = 4136 + self.match(MySqlParser.OUTFILE) + self.state = 4137 + localctx.filename = self.match(MySqlParser.STRING_LITERAL) + self.state = 4141 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==25: + self.state = 4138 + self.match(MySqlParser.CHARACTER) + self.state = 4139 + self.match(MySqlParser.SET) + self.state = 4140 + localctx.charset = self.charsetName() + + + self.state = 4149 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,606,self._ctx) + if la_ == 1: + self.state = 4143 + localctx.fieldsFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==365 or _la==427): + localctx.fieldsFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4145 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 4144 + self.selectFieldsInto() + self.state = 4147 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==56 or _la==58 or _la==122 or _la==173): + break + + + + self.state = 4157 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==101: + self.state = 4151 + self.match(MySqlParser.LINES) + self.state = 4153 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 4152 + self.selectLinesInto() + self.state = 4155 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==169 or _la==173): + break + + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectFieldsIntoContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.terminationField = None # Token + self.enclosion = None # Token + self.escaping = None # Token + + def TERMINATED(self): + return self.getToken(MySqlParser.TERMINATED, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def ENCLOSED(self): + return self.getToken(MySqlParser.ENCLOSED, 0) + + def OPTIONALLY(self): + return self.getToken(MySqlParser.OPTIONALLY, 0) + + def ESCAPED(self): + return self.getToken(MySqlParser.ESCAPED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_selectFieldsInto + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectFieldsInto" ): + listener.enterSelectFieldsInto(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectFieldsInto" ): + listener.exitSelectFieldsInto(self) + + + + + def selectFieldsInto(self): + + localctx = MySqlParser.SelectFieldsIntoContext(self, self._ctx, self.state) + self.enterRule(localctx, 278, self.RULE_selectFieldsInto) + self._la = 0 # Token type + try: + self.state = 4173 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [173]: + self.enterOuterAlt(localctx, 1) + self.state = 4161 + self.match(MySqlParser.TERMINATED) + self.state = 4162 + self.match(MySqlParser.BY) + self.state = 4163 + localctx.terminationField = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [56, 122]: + self.enterOuterAlt(localctx, 2) + self.state = 4165 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==122: + self.state = 4164 + self.match(MySqlParser.OPTIONALLY) + + + self.state = 4167 + self.match(MySqlParser.ENCLOSED) + self.state = 4168 + self.match(MySqlParser.BY) + self.state = 4169 + localctx.enclosion = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [58]: + self.enterOuterAlt(localctx, 3) + self.state = 4170 + self.match(MySqlParser.ESCAPED) + self.state = 4171 + self.match(MySqlParser.BY) + self.state = 4172 + localctx.escaping = self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SelectLinesIntoContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.starting = None # Token + self.terminationLine = None # Token + + def STARTING(self): + return self.getToken(MySqlParser.STARTING, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def TERMINATED(self): + return self.getToken(MySqlParser.TERMINATED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_selectLinesInto + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectLinesInto" ): + listener.enterSelectLinesInto(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectLinesInto" ): + listener.exitSelectLinesInto(self) + + + + + def selectLinesInto(self): + + localctx = MySqlParser.SelectLinesIntoContext(self, self._ctx, self.state) + self.enterRule(localctx, 280, self.RULE_selectLinesInto) + try: + self.state = 4181 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [169]: + self.enterOuterAlt(localctx, 1) + self.state = 4175 + self.match(MySqlParser.STARTING) + self.state = 4176 + self.match(MySqlParser.BY) + self.state = 4177 + localctx.starting = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [173]: + self.enterOuterAlt(localctx, 2) + self.state = 4178 + self.match(MySqlParser.TERMINATED) + self.state = 4179 + self.match(MySqlParser.BY) + self.state = 4180 + localctx.terminationLine = self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FromClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.whereExpr = None # ExpressionContext + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def tableSources(self): + return self.getTypedRuleContext(MySqlParser.TableSourcesContext,0) + + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_fromClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFromClause" ): + listener.enterFromClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFromClause" ): + listener.exitFromClause(self) + + + + + def fromClause(self): + + localctx = MySqlParser.FromClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 282, self.RULE_fromClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4185 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68: + self.state = 4183 + self.match(MySqlParser.FROM) + self.state = 4184 + self.tableSources() + + + self.state = 4189 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 4187 + self.match(MySqlParser.WHERE) + self.state = 4188 + localctx.whereExpr = self.expression(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GroupByClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def groupByItem(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.GroupByItemContext) + else: + return self.getTypedRuleContext(MySqlParser.GroupByItemContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def ROLLUP(self): + return self.getToken(MySqlParser.ROLLUP, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_groupByClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGroupByClause" ): + listener.enterGroupByClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGroupByClause" ): + listener.exitGroupByClause(self) + + + + + def groupByClause(self): + + localctx = MySqlParser.GroupByClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 284, self.RULE_groupByClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4191 + self.match(MySqlParser.GROUP) + self.state = 4192 + self.match(MySqlParser.BY) + self.state = 4193 + self.groupByItem() + self.state = 4198 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,615,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4194 + self.match(MySqlParser.COMMA) + self.state = 4195 + self.groupByItem() + self.state = 4200 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,615,self._ctx) + + self.state = 4203 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,616,self._ctx) + if la_ == 1: + self.state = 4201 + self.match(MySqlParser.WITH) + self.state = 4202 + self.match(MySqlParser.ROLLUP) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HavingClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.havingExpr = None # ExpressionContext + + def HAVING(self): + return self.getToken(MySqlParser.HAVING, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_havingClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHavingClause" ): + listener.enterHavingClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHavingClause" ): + listener.exitHavingClause(self) + + + + + def havingClause(self): + + localctx = MySqlParser.HavingClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 286, self.RULE_havingClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4205 + self.match(MySqlParser.HAVING) + self.state = 4206 + localctx.havingExpr = self.expression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WindowClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WINDOW(self): + return self.getToken(MySqlParser.WINDOW, 0) + + def windowName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.WindowNameContext) + else: + return self.getTypedRuleContext(MySqlParser.WindowNameContext,i) + + + def AS(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.AS) + else: + return self.getToken(MySqlParser.AS, i) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def windowSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.WindowSpecContext) + else: + return self.getTypedRuleContext(MySqlParser.WindowSpecContext,i) + + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_windowClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowClause" ): + listener.enterWindowClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowClause" ): + listener.exitWindowClause(self) + + + + + def windowClause(self): + + localctx = MySqlParser.WindowClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 288, self.RULE_windowClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4208 + self.match(MySqlParser.WINDOW) + self.state = 4209 + self.windowName() + self.state = 4210 + self.match(MySqlParser.AS) + self.state = 4211 + self.match(MySqlParser.LR_BRACKET) + self.state = 4212 + self.windowSpec() + self.state = 4213 + self.match(MySqlParser.RR_BRACKET) + self.state = 4223 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,617,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4214 + self.match(MySqlParser.COMMA) + self.state = 4215 + self.windowName() + self.state = 4216 + self.match(MySqlParser.AS) + self.state = 4217 + self.match(MySqlParser.LR_BRACKET) + self.state = 4218 + self.windowSpec() + self.state = 4219 + self.match(MySqlParser.RR_BRACKET) + self.state = 4225 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,617,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GroupByItemContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.order = None # Token + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def ASC(self): + return self.getToken(MySqlParser.ASC, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_groupByItem + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGroupByItem" ): + listener.enterGroupByItem(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGroupByItem" ): + listener.exitGroupByItem(self) + + + + + def groupByItem(self): + + localctx = MySqlParser.GroupByItemContext(self, self._ctx, self.state) + self.enterRule(localctx, 290, self.RULE_groupByItem) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4226 + self.expression(0) + self.state = 4228 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,618,self._ctx) + if la_ == 1: + self.state = 4227 + localctx.order = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==13 or _la==45): + localctx.order = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LimitClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.offset = None # LimitClauseAtomContext + self.limit = None # LimitClauseAtomContext + + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + + def OFFSET(self): + return self.getToken(MySqlParser.OFFSET, 0) + + def limitClauseAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.LimitClauseAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.LimitClauseAtomContext,i) + + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_limitClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLimitClause" ): + listener.enterLimitClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLimitClause" ): + listener.exitLimitClause(self) + + + + + def limitClause(self): + + localctx = MySqlParser.LimitClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 292, self.RULE_limitClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4230 + self.match(MySqlParser.LIMIT) + self.state = 4241 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,620,self._ctx) + if la_ == 1: + self.state = 4234 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,619,self._ctx) + if la_ == 1: + self.state = 4231 + localctx.offset = self.limitClauseAtom() + self.state = 4232 + self.match(MySqlParser.COMMA) + + + self.state = 4236 + localctx.limit = self.limitClauseAtom() + pass + + elif la_ == 2: + self.state = 4237 + localctx.limit = self.limitClauseAtom() + self.state = 4238 + self.match(MySqlParser.OFFSET) + self.state = 4239 + localctx.offset = self.limitClauseAtom() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LimitClauseAtomContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def mysqlVariable(self): + return self.getTypedRuleContext(MySqlParser.MysqlVariableContext,0) + + + def simpleId(self): + return self.getTypedRuleContext(MySqlParser.SimpleIdContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_limitClauseAtom + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLimitClauseAtom" ): + listener.enterLimitClauseAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLimitClauseAtom" ): + listener.exitLimitClauseAtom(self) + + + + + def limitClauseAtom(self): + + localctx = MySqlParser.LimitClauseAtomContext(self, self._ctx, self.state) + self.enterRule(localctx, 294, self.RULE_limitClauseAtom) + try: + self.state = 4246 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + self.enterOuterAlt(localctx, 1) + self.state = 4243 + self.decimalLiteral() + pass + elif token in [1160, 1161]: + self.enterOuterAlt(localctx, 2) + self.state = 4244 + self.mysqlVariable() + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1156]: + self.enterOuterAlt(localctx, 3) + self.state = 4245 + self.simpleId() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StartTransactionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def START(self): + return self.getToken(MySqlParser.START, 0) + + def TRANSACTION(self): + return self.getToken(MySqlParser.TRANSACTION, 0) + + def transactionMode(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TransactionModeContext) + else: + return self.getTypedRuleContext(MySqlParser.TransactionModeContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_startTransaction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStartTransaction" ): + listener.enterStartTransaction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStartTransaction" ): + listener.exitStartTransaction(self) + + + + + def startTransaction(self): + + localctx = MySqlParser.StartTransactionContext(self, self._ctx, self.state) + self.enterRule(localctx, 296, self.RULE_startTransaction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4248 + self.match(MySqlParser.START) + self.state = 4249 + self.match(MySqlParser.TRANSACTION) + self.state = 4258 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,623,self._ctx) + if la_ == 1: + self.state = 4250 + self.transactionMode() + self.state = 4255 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4251 + self.match(MySqlParser.COMMA) + self.state = 4252 + self.transactionMode() + self.state = 4257 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BeginWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEGIN(self): + return self.getToken(MySqlParser.BEGIN, 0) + + def WORK(self): + return self.getToken(MySqlParser.WORK, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_beginWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBeginWork" ): + listener.enterBeginWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBeginWork" ): + listener.exitBeginWork(self) + + + + + def beginWork(self): + + localctx = MySqlParser.BeginWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 298, self.RULE_beginWork) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4260 + self.match(MySqlParser.BEGIN) + self.state = 4262 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==678: + self.state = 4261 + self.match(MySqlParser.WORK) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CommitWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.nochain = None # Token + self.norelease = None # Token + + def COMMIT(self): + return self.getToken(MySqlParser.COMMIT, 0) + + def WORK(self): + return self.getToken(MySqlParser.WORK, 0) + + def AND(self): + return self.getToken(MySqlParser.AND, 0) + + def CHAIN(self): + return self.getToken(MySqlParser.CHAIN, 0) + + def RELEASE(self): + return self.getToken(MySqlParser.RELEASE, 0) + + def NO(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.NO) + else: + return self.getToken(MySqlParser.NO, i) + + def getRuleIndex(self): + return MySqlParser.RULE_commitWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommitWork" ): + listener.enterCommitWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommitWork" ): + listener.exitCommitWork(self) + + + + + def commitWork(self): + + localctx = MySqlParser.CommitWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 300, self.RULE_commitWork) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4264 + self.match(MySqlParser.COMMIT) + self.state = 4266 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==678: + self.state = 4265 + self.match(MySqlParser.WORK) + + + self.state = 4273 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10: + self.state = 4268 + self.match(MySqlParser.AND) + self.state = 4270 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==521: + self.state = 4269 + localctx.nochain = self.match(MySqlParser.NO) + + + self.state = 4272 + self.match(MySqlParser.CHAIN) + + + self.state = 4279 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,629,self._ctx) + if la_ == 1: + self.state = 4276 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==521: + self.state = 4275 + localctx.norelease = self.match(MySqlParser.NO) + + + self.state = 4278 + self.match(MySqlParser.RELEASE) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RollbackWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.nochain = None # Token + self.norelease = None # Token + + def ROLLBACK(self): + return self.getToken(MySqlParser.ROLLBACK, 0) + + def WORK(self): + return self.getToken(MySqlParser.WORK, 0) + + def AND(self): + return self.getToken(MySqlParser.AND, 0) + + def CHAIN(self): + return self.getToken(MySqlParser.CHAIN, 0) + + def RELEASE(self): + return self.getToken(MySqlParser.RELEASE, 0) + + def NO(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.NO) + else: + return self.getToken(MySqlParser.NO, i) + + def getRuleIndex(self): + return MySqlParser.RULE_rollbackWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRollbackWork" ): + listener.enterRollbackWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRollbackWork" ): + listener.exitRollbackWork(self) + + + + + def rollbackWork(self): + + localctx = MySqlParser.RollbackWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 302, self.RULE_rollbackWork) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4281 + self.match(MySqlParser.ROLLBACK) + self.state = 4283 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==678: + self.state = 4282 + self.match(MySqlParser.WORK) + + + self.state = 4290 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10: + self.state = 4285 + self.match(MySqlParser.AND) + self.state = 4287 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==521: + self.state = 4286 + localctx.nochain = self.match(MySqlParser.NO) + + + self.state = 4289 + self.match(MySqlParser.CHAIN) + + + self.state = 4296 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,634,self._ctx) + if la_ == 1: + self.state = 4293 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==521: + self.state = 4292 + localctx.norelease = self.match(MySqlParser.NO) + + + self.state = 4295 + self.match(MySqlParser.RELEASE) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SavepointStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SAVEPOINT(self): + return self.getToken(MySqlParser.SAVEPOINT, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_savepointStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSavepointStatement" ): + listener.enterSavepointStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSavepointStatement" ): + listener.exitSavepointStatement(self) + + + + + def savepointStatement(self): + + localctx = MySqlParser.SavepointStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 304, self.RULE_savepointStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4298 + self.match(MySqlParser.SAVEPOINT) + self.state = 4299 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RollbackStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ROLLBACK(self): + return self.getToken(MySqlParser.ROLLBACK, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def WORK(self): + return self.getToken(MySqlParser.WORK, 0) + + def SAVEPOINT(self): + return self.getToken(MySqlParser.SAVEPOINT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_rollbackStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRollbackStatement" ): + listener.enterRollbackStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRollbackStatement" ): + listener.exitRollbackStatement(self) + + + + + def rollbackStatement(self): + + localctx = MySqlParser.RollbackStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 306, self.RULE_rollbackStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4301 + self.match(MySqlParser.ROLLBACK) + self.state = 4303 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==678: + self.state = 4302 + self.match(MySqlParser.WORK) + + + self.state = 4305 + self.match(MySqlParser.TO) + self.state = 4307 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,636,self._ctx) + if la_ == 1: + self.state = 4306 + self.match(MySqlParser.SAVEPOINT) + + + self.state = 4309 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReleaseStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RELEASE(self): + return self.getToken(MySqlParser.RELEASE, 0) + + def SAVEPOINT(self): + return self.getToken(MySqlParser.SAVEPOINT, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_releaseStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReleaseStatement" ): + listener.enterReleaseStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReleaseStatement" ): + listener.exitReleaseStatement(self) + + + + + def releaseStatement(self): + + localctx = MySqlParser.ReleaseStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 308, self.RULE_releaseStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4311 + self.match(MySqlParser.RELEASE) + self.state = 4312 + self.match(MySqlParser.SAVEPOINT) + self.state = 4313 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LockTablesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + + def lockTableElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.LockTableElementContext) + else: + return self.getTypedRuleContext(MySqlParser.LockTableElementContext,i) + + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def waitNowaitClause(self): + return self.getTypedRuleContext(MySqlParser.WaitNowaitClauseContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_lockTables + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLockTables" ): + listener.enterLockTables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLockTables" ): + listener.exitLockTables(self) + + + + + def lockTables(self): + + localctx = MySqlParser.LockTablesContext(self, self._ctx, self.state) + self.enterRule(localctx, 310, self.RULE_lockTables) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4315 + self.match(MySqlParser.LOCK) + self.state = 4316 + _la = self._input.LA(1) + if not(_la==172 or _la==742): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4317 + self.lockTableElement() + self.state = 4322 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4318 + self.match(MySqlParser.COMMA) + self.state = 4319 + self.lockTableElement() + self.state = 4324 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4326 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==527 or _la==674: + self.state = 4325 + self.waitNowaitClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UnlockTablesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def UNLOCK(self): + return self.getToken(MySqlParser.UNLOCK, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_unlockTables + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnlockTables" ): + listener.enterUnlockTables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnlockTables" ): + listener.exitUnlockTables(self) + + + + + def unlockTables(self): + + localctx = MySqlParser.UnlockTablesContext(self, self._ctx, self.state) + self.enterRule(localctx, 312, self.RULE_unlockTables) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4328 + self.match(MySqlParser.UNLOCK) + self.state = 4329 + self.match(MySqlParser.TABLES) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetAutocommitStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.autocommitValue = None # Token + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def AUTOCOMMIT(self): + return self.getToken(MySqlParser.AUTOCOMMIT, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_setAutocommitStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetAutocommitStatement" ): + listener.enterSetAutocommitStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetAutocommitStatement" ): + listener.exitSetAutocommitStatement(self) + + + + + def setAutocommitStatement(self): + + localctx = MySqlParser.SetAutocommitStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 314, self.RULE_setAutocommitStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4331 + self.match(MySqlParser.SET) + self.state = 4332 + self.match(MySqlParser.AUTOCOMMIT) + self.state = 4333 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4334 + localctx.autocommitValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + localctx.autocommitValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetTransactionStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.transactionContext = None # Token + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def TRANSACTION(self): + return self.getToken(MySqlParser.TRANSACTION, 0) + + def transactionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TransactionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TransactionOptionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def GLOBAL(self): + return self.getToken(MySqlParser.GLOBAL, 0) + + def SESSION(self): + return self.getToken(MySqlParser.SESSION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_setTransactionStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetTransactionStatement" ): + listener.enterSetTransactionStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetTransactionStatement" ): + listener.exitSetTransactionStatement(self) + + + + + def setTransactionStatement(self): + + localctx = MySqlParser.SetTransactionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 316, self.RULE_setTransactionStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4336 + self.match(MySqlParser.SET) + self.state = 4338 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==439 or _la==609: + self.state = 4337 + localctx.transactionContext = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==439 or _la==609): + localctx.transactionContext = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 4340 + self.match(MySqlParser.TRANSACTION) + self.state = 4341 + self.transactionOption() + self.state = 4346 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4342 + self.match(MySqlParser.COMMA) + self.state = 4343 + self.transactionOption() + self.state = 4348 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TransactionModeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def CONSISTENT(self): + return self.getToken(MySqlParser.CONSISTENT, 0) + + def SNAPSHOT(self): + return self.getToken(MySqlParser.SNAPSHOT, 0) + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def WRITE(self): + return self.getToken(MySqlParser.WRITE, 0) + + def ONLY(self): + return self.getToken(MySqlParser.ONLY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_transactionMode + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransactionMode" ): + listener.enterTransactionMode(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransactionMode" ): + listener.exitTransactionMode(self) + + + + + def transactionMode(self): + + localctx = MySqlParser.TransactionModeContext(self, self._ctx, self.state) + self.enterRule(localctx, 318, self.RULE_transactionMode) + try: + self.state = 4356 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,641,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 4349 + self.match(MySqlParser.WITH) + self.state = 4350 + self.match(MySqlParser.CONSISTENT) + self.state = 4351 + self.match(MySqlParser.SNAPSHOT) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 4352 + self.match(MySqlParser.READ) + self.state = 4353 + self.match(MySqlParser.WRITE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 4354 + self.match(MySqlParser.READ) + self.state = 4355 + self.match(MySqlParser.ONLY) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LockTableElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def lockAction(self): + return self.getTypedRuleContext(MySqlParser.LockActionContext,0) + + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lockTableElement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLockTableElement" ): + listener.enterLockTableElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLockTableElement" ): + listener.exitLockTableElement(self) + + + + + def lockTableElement(self): + + localctx = MySqlParser.LockTableElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 320, self.RULE_lockTableElement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4358 + self.tableName() + self.state = 4363 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513126400) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4360 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 4359 + self.match(MySqlParser.AS) + + + self.state = 4362 + self.uid() + + + self.state = 4365 + self.lockAction() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LockActionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def WRITE(self): + return self.getToken(MySqlParser.WRITE, 0) + + def LOW_PRIORITY(self): + return self.getToken(MySqlParser.LOW_PRIORITY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lockAction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLockAction" ): + listener.enterLockAction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLockAction" ): + listener.exitLockAction(self) + + + + + def lockAction(self): + + localctx = MySqlParser.LockActionContext(self, self._ctx, self.state) + self.enterRule(localctx, 322, self.RULE_lockAction) + self._la = 0 # Token type + try: + self.state = 4375 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [134]: + self.enterOuterAlt(localctx, 1) + self.state = 4367 + self.match(MySqlParser.READ) + self.state = 4369 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==474: + self.state = 4368 + self.match(MySqlParser.LOCAL) + + + pass + elif token in [106, 193]: + self.enterOuterAlt(localctx, 2) + self.state = 4372 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==106: + self.state = 4371 + self.match(MySqlParser.LOW_PRIORITY) + + + self.state = 4374 + self.match(MySqlParser.WRITE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TransactionOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ISOLATION(self): + return self.getToken(MySqlParser.ISOLATION, 0) + + def LEVEL(self): + return self.getToken(MySqlParser.LEVEL, 0) + + def transactionLevel(self): + return self.getTypedRuleContext(MySqlParser.TransactionLevelContext,0) + + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def WRITE(self): + return self.getToken(MySqlParser.WRITE, 0) + + def ONLY(self): + return self.getToken(MySqlParser.ONLY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_transactionOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransactionOption" ): + listener.enterTransactionOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransactionOption" ): + listener.exitTransactionOption(self) + + + + + def transactionOption(self): + + localctx = MySqlParser.TransactionOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 324, self.RULE_transactionOption) + try: + self.state = 4384 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,647,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 4377 + self.match(MySqlParser.ISOLATION) + self.state = 4378 + self.match(MySqlParser.LEVEL) + self.state = 4379 + self.transactionLevel() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 4380 + self.match(MySqlParser.READ) + self.state = 4381 + self.match(MySqlParser.WRITE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 4382 + self.match(MySqlParser.READ) + self.state = 4383 + self.match(MySqlParser.ONLY) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TransactionLevelContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REPEATABLE(self): + return self.getToken(MySqlParser.REPEATABLE, 0) + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def COMMITTED(self): + return self.getToken(MySqlParser.COMMITTED, 0) + + def UNCOMMITTED(self): + return self.getToken(MySqlParser.UNCOMMITTED, 0) + + def SERIALIZABLE(self): + return self.getToken(MySqlParser.SERIALIZABLE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_transactionLevel + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransactionLevel" ): + listener.enterTransactionLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransactionLevel" ): + listener.exitTransactionLevel(self) + + + + + def transactionLevel(self): + + localctx = MySqlParser.TransactionLevelContext(self, self._ctx, self.state) + self.enterRule(localctx, 326, self.RULE_transactionLevel) + try: + self.state = 4393 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,648,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 4386 + self.match(MySqlParser.REPEATABLE) + self.state = 4387 + self.match(MySqlParser.READ) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 4388 + self.match(MySqlParser.READ) + self.state = 4389 + self.match(MySqlParser.COMMITTED) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 4390 + self.match(MySqlParser.READ) + self.state = 4391 + self.match(MySqlParser.UNCOMMITTED) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 4392 + self.match(MySqlParser.SERIALIZABLE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChangeMasterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHANGE(self): + return self.getToken(MySqlParser.CHANGE, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def masterOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.MasterOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.MasterOptionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def channelOption(self): + return self.getTypedRuleContext(MySqlParser.ChannelOptionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_changeMaster + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChangeMaster" ): + listener.enterChangeMaster(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChangeMaster" ): + listener.exitChangeMaster(self) + + + + + def changeMaster(self): + + localctx = MySqlParser.ChangeMasterContext(self, self._ctx, self.state) + self.enterRule(localctx, 328, self.RULE_changeMaster) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4395 + self.match(MySqlParser.CHANGE) + self.state = 4396 + self.match(MySqlParser.MASTER) + self.state = 4397 + self.match(MySqlParser.TO) + self.state = 4398 + self.masterOption() + self.state = 4403 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4399 + self.match(MySqlParser.COMMA) + self.state = 4400 + self.masterOption() + self.state = 4405 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4407 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 4406 + self.channelOption() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChangeReplicationFilterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHANGE(self): + return self.getToken(MySqlParser.CHANGE, 0) + + def REPLICATION(self): + return self.getToken(MySqlParser.REPLICATION, 0) + + def FILTER(self): + return self.getToken(MySqlParser.FILTER, 0) + + def replicationFilter(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ReplicationFilterContext) + else: + return self.getTypedRuleContext(MySqlParser.ReplicationFilterContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_changeReplicationFilter + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChangeReplicationFilter" ): + listener.enterChangeReplicationFilter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChangeReplicationFilter" ): + listener.exitChangeReplicationFilter(self) + + + + + def changeReplicationFilter(self): + + localctx = MySqlParser.ChangeReplicationFilterContext(self, self._ctx, self.state) + self.enterRule(localctx, 330, self.RULE_changeReplicationFilter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4409 + self.match(MySqlParser.CHANGE) + self.state = 4410 + self.match(MySqlParser.REPLICATION) + self.state = 4411 + self.match(MySqlParser.FILTER) + self.state = 4412 + self.replicationFilter() + self.state = 4417 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4413 + self.match(MySqlParser.COMMA) + self.state = 4414 + self.replicationFilter() + self.state = 4419 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PurgeBinaryLogsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.purgeFormat = None # Token + self.fileName = None # Token + self.timeValue = None # Token + + def PURGE(self): + return self.getToken(MySqlParser.PURGE, 0) + + def LOGS(self): + return self.getToken(MySqlParser.LOGS, 0) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def BEFORE(self): + return self.getToken(MySqlParser.BEFORE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_purgeBinaryLogs + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPurgeBinaryLogs" ): + listener.enterPurgeBinaryLogs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPurgeBinaryLogs" ): + listener.exitPurgeBinaryLogs(self) + + + + + def purgeBinaryLogs(self): + + localctx = MySqlParser.PurgeBinaryLogsContext(self, self._ctx, self.state) + self.enterRule(localctx, 332, self.RULE_purgeBinaryLogs) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4420 + self.match(MySqlParser.PURGE) + self.state = 4421 + localctx.purgeFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==226 or _la==477): + localctx.purgeFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4422 + self.match(MySqlParser.LOGS) + self.state = 4427 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [175]: + self.state = 4423 + self.match(MySqlParser.TO) + self.state = 4424 + localctx.fileName = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [15]: + self.state = 4425 + self.match(MySqlParser.BEFORE) + self.state = 4426 + localctx.timeValue = self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResetMasterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESET(self): + return self.getToken(MySqlParser.RESET, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_resetMaster + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResetMaster" ): + listener.enterResetMaster(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResetMaster" ): + listener.exitResetMaster(self) + + + + + def resetMaster(self): + + localctx = MySqlParser.ResetMasterContext(self, self._ctx, self.state) + self.enterRule(localctx, 334, self.RULE_resetMaster) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4429 + self.match(MySqlParser.RESET) + self.state = 4430 + self.match(MySqlParser.MASTER) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResetSlaveContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESET(self): + return self.getToken(MySqlParser.RESET, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def channelOption(self): + return self.getTypedRuleContext(MySqlParser.ChannelOptionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_resetSlave + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResetSlave" ): + listener.enterResetSlave(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResetSlave" ): + listener.exitResetSlave(self) + + + + + def resetSlave(self): + + localctx = MySqlParser.ResetSlaveContext(self, self._ctx, self.state) + self.enterRule(localctx, 336, self.RULE_resetSlave) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4432 + self.match(MySqlParser.RESET) + self.state = 4433 + self.match(MySqlParser.SLAVE) + self.state = 4435 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==6: + self.state = 4434 + self.match(MySqlParser.ALL) + + + self.state = 4438 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 4437 + self.channelOption() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StartSlaveContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def START(self): + return self.getToken(MySqlParser.START, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def threadType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ThreadTypeContext) + else: + return self.getTypedRuleContext(MySqlParser.ThreadTypeContext,i) + + + def UNTIL(self): + return self.getToken(MySqlParser.UNTIL, 0) + + def untilOption(self): + return self.getTypedRuleContext(MySqlParser.UntilOptionContext,0) + + + def connectionOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ConnectionOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.ConnectionOptionContext,i) + + + def channelOption(self): + return self.getTypedRuleContext(MySqlParser.ChannelOptionContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_startSlave + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStartSlave" ): + listener.enterStartSlave(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStartSlave" ): + listener.exitStartSlave(self) + + + + + def startSlave(self): + + localctx = MySqlParser.StartSlaveContext(self, self._ctx, self.state) + self.enterRule(localctx, 338, self.RULE_startSlave) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4440 + self.match(MySqlParser.START) + self.state = 4441 + self.match(MySqlParser.SLAVE) + self.state = 4450 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==462 or _la==628: + self.state = 4442 + self.threadType() + self.state = 4447 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4443 + self.match(MySqlParser.COMMA) + self.state = 4444 + self.threadType() + self.state = 4449 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 4454 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==663: + self.state = 4452 + self.match(MySqlParser.UNTIL) + self.state = 4453 + self.untilOption() + + + self.state = 4459 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==391 or _la==551 or _la==555 or _la==665: + self.state = 4456 + self.connectionOption() + self.state = 4461 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4463 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 4462 + self.channelOption() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StopSlaveContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STOP(self): + return self.getToken(MySqlParser.STOP, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def threadType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ThreadTypeContext) + else: + return self.getTypedRuleContext(MySqlParser.ThreadTypeContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_stopSlave + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStopSlave" ): + listener.enterStopSlave(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStopSlave" ): + listener.exitStopSlave(self) + + + + + def stopSlave(self): + + localctx = MySqlParser.StopSlaveContext(self, self._ctx, self.state) + self.enterRule(localctx, 340, self.RULE_stopSlave) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4465 + self.match(MySqlParser.STOP) + self.state = 4466 + self.match(MySqlParser.SLAVE) + self.state = 4475 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==462 or _la==628: + self.state = 4467 + self.threadType() + self.state = 4472 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4468 + self.match(MySqlParser.COMMA) + self.state = 4469 + self.threadType() + self.state = 4474 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StartGroupReplicationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def START(self): + return self.getToken(MySqlParser.START, 0) + + def GROUP_REPLICATION(self): + return self.getToken(MySqlParser.GROUP_REPLICATION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_startGroupReplication + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStartGroupReplication" ): + listener.enterStartGroupReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStartGroupReplication" ): + listener.exitStartGroupReplication(self) + + + + + def startGroupReplication(self): + + localctx = MySqlParser.StartGroupReplicationContext(self, self._ctx, self.state) + self.enterRule(localctx, 342, self.RULE_startGroupReplication) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4477 + self.match(MySqlParser.START) + self.state = 4478 + self.match(MySqlParser.GROUP_REPLICATION) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StopGroupReplicationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STOP(self): + return self.getToken(MySqlParser.STOP, 0) + + def GROUP_REPLICATION(self): + return self.getToken(MySqlParser.GROUP_REPLICATION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_stopGroupReplication + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStopGroupReplication" ): + listener.enterStopGroupReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStopGroupReplication" ): + listener.exitStopGroupReplication(self) + + + + + def stopGroupReplication(self): + + localctx = MySqlParser.StopGroupReplicationContext(self, self._ctx, self.state) + self.enterRule(localctx, 344, self.RULE_stopGroupReplication) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4480 + self.match(MySqlParser.STOP) + self.state = 4481 + self.match(MySqlParser.GROUP_REPLICATION) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MasterOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_masterOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class MasterStringOptionContext(MasterOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.MasterOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def stringMasterOption(self): + return self.getTypedRuleContext(MySqlParser.StringMasterOptionContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterStringOption" ): + listener.enterMasterStringOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterStringOption" ): + listener.exitMasterStringOption(self) + + + class MasterRealOptionContext(MasterOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.MasterOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MASTER_HEARTBEAT_PERIOD(self): + return self.getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def REAL_LITERAL(self): + return self.getToken(MySqlParser.REAL_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterRealOption" ): + listener.enterMasterRealOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterRealOption" ): + listener.exitMasterRealOption(self) + + + class MasterBoolOptionContext(MasterOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.MasterOptionContext + super().__init__(parser) + self.boolVal = None # Token + self.copyFrom(ctx) + + def boolMasterOption(self): + return self.getTypedRuleContext(MySqlParser.BoolMasterOptionContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterBoolOption" ): + listener.enterMasterBoolOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterBoolOption" ): + listener.exitMasterBoolOption(self) + + + class MasterUidListOptionContext(MasterOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.MasterOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def IGNORE_SERVER_IDS(self): + return self.getToken(MySqlParser.IGNORE_SERVER_IDS, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterUidListOption" ): + listener.enterMasterUidListOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterUidListOption" ): + listener.exitMasterUidListOption(self) + + + class MasterDecimalOptionContext(MasterOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.MasterOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def decimalMasterOption(self): + return self.getTypedRuleContext(MySqlParser.DecimalMasterOptionContext,0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterDecimalOption" ): + listener.enterMasterDecimalOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterDecimalOption" ): + listener.exitMasterDecimalOption(self) + + + + def masterOption(self): + + localctx = MySqlParser.MasterOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 346, self.RULE_masterOption) + self._la = 0 # Token type + try: + self.state = 4512 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [107, 482, 483, 485, 489, 490, 491, 492, 493, 494, 495, 496, 497, 575]: + localctx = MySqlParser.MasterStringOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4483 + self.stringMasterOption() + self.state = 4484 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4485 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [479, 480, 484, 486, 487, 576]: + localctx = MySqlParser.MasterDecimalOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4487 + self.decimalMasterOption() + self.state = 4488 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4489 + self.decimalLiteral() + pass + elif token in [108, 478, 488]: + localctx = MySqlParser.MasterBoolOptionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4491 + self.boolMasterOption() + self.state = 4492 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4493 + localctx.boolVal = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==1138 or _la==1139): + localctx.boolVal = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [481]: + localctx = MySqlParser.MasterRealOptionContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4495 + self.match(MySqlParser.MASTER_HEARTBEAT_PERIOD) + self.state = 4496 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4497 + self.match(MySqlParser.REAL_LITERAL) + pass + elif token in [449]: + localctx = MySqlParser.MasterUidListOptionContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 4498 + self.match(MySqlParser.IGNORE_SERVER_IDS) + self.state = 4499 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4500 + self.match(MySqlParser.LR_BRACKET) + self.state = 4509 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4501 + self.uid() + self.state = 4506 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4502 + self.match(MySqlParser.COMMA) + self.state = 4503 + self.uid() + self.state = 4508 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 4511 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StringMasterOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MASTER_BIND(self): + return self.getToken(MySqlParser.MASTER_BIND, 0) + + def MASTER_HOST(self): + return self.getToken(MySqlParser.MASTER_HOST, 0) + + def MASTER_USER(self): + return self.getToken(MySqlParser.MASTER_USER, 0) + + def MASTER_PASSWORD(self): + return self.getToken(MySqlParser.MASTER_PASSWORD, 0) + + def MASTER_LOG_FILE(self): + return self.getToken(MySqlParser.MASTER_LOG_FILE, 0) + + def RELAY_LOG_FILE(self): + return self.getToken(MySqlParser.RELAY_LOG_FILE, 0) + + def MASTER_SSL_CA(self): + return self.getToken(MySqlParser.MASTER_SSL_CA, 0) + + def MASTER_SSL_CAPATH(self): + return self.getToken(MySqlParser.MASTER_SSL_CAPATH, 0) + + def MASTER_SSL_CERT(self): + return self.getToken(MySqlParser.MASTER_SSL_CERT, 0) + + def MASTER_SSL_CRL(self): + return self.getToken(MySqlParser.MASTER_SSL_CRL, 0) + + def MASTER_SSL_CRLPATH(self): + return self.getToken(MySqlParser.MASTER_SSL_CRLPATH, 0) + + def MASTER_SSL_KEY(self): + return self.getToken(MySqlParser.MASTER_SSL_KEY, 0) + + def MASTER_SSL_CIPHER(self): + return self.getToken(MySqlParser.MASTER_SSL_CIPHER, 0) + + def MASTER_TLS_VERSION(self): + return self.getToken(MySqlParser.MASTER_TLS_VERSION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_stringMasterOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStringMasterOption" ): + listener.enterStringMasterOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStringMasterOption" ): + listener.exitStringMasterOption(self) + + + + + def stringMasterOption(self): + + localctx = MySqlParser.StringMasterOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 348, self.RULE_stringMasterOption) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4514 + _la = self._input.LA(1) + if not(_la==107 or ((((_la - 482)) & ~0x3f) == 0 and ((1 << (_la - 482)) & 65419) != 0) or _la==575): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DecimalMasterOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MASTER_PORT(self): + return self.getToken(MySqlParser.MASTER_PORT, 0) + + def MASTER_CONNECT_RETRY(self): + return self.getToken(MySqlParser.MASTER_CONNECT_RETRY, 0) + + def MASTER_RETRY_COUNT(self): + return self.getToken(MySqlParser.MASTER_RETRY_COUNT, 0) + + def MASTER_DELAY(self): + return self.getToken(MySqlParser.MASTER_DELAY, 0) + + def MASTER_LOG_POS(self): + return self.getToken(MySqlParser.MASTER_LOG_POS, 0) + + def RELAY_LOG_POS(self): + return self.getToken(MySqlParser.RELAY_LOG_POS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_decimalMasterOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDecimalMasterOption" ): + listener.enterDecimalMasterOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDecimalMasterOption" ): + listener.exitDecimalMasterOption(self) + + + + + def decimalMasterOption(self): + + localctx = MySqlParser.DecimalMasterOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 350, self.RULE_decimalMasterOption) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4516 + _la = self._input.LA(1) + if not(((((_la - 479)) & ~0x3f) == 0 and ((1 << (_la - 479)) & 419) != 0) or _la==576): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BoolMasterOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MASTER_AUTO_POSITION(self): + return self.getToken(MySqlParser.MASTER_AUTO_POSITION, 0) + + def MASTER_SSL(self): + return self.getToken(MySqlParser.MASTER_SSL, 0) + + def MASTER_SSL_VERIFY_SERVER_CERT(self): + return self.getToken(MySqlParser.MASTER_SSL_VERIFY_SERVER_CERT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_boolMasterOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBoolMasterOption" ): + listener.enterBoolMasterOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBoolMasterOption" ): + listener.exitBoolMasterOption(self) + + + + + def boolMasterOption(self): + + localctx = MySqlParser.BoolMasterOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 352, self.RULE_boolMasterOption) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4518 + _la = self._input.LA(1) + if not(_la==108 or _la==478 or _la==488): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChannelOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def CHANNEL(self): + return self.getToken(MySqlParser.CHANNEL, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_channelOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChannelOption" ): + listener.enterChannelOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChannelOption" ): + listener.exitChannelOption(self) + + + + + def channelOption(self): + + localctx = MySqlParser.ChannelOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 354, self.RULE_channelOption) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4520 + self.match(MySqlParser.FOR) + self.state = 4521 + self.match(MySqlParser.CHANNEL) + self.state = 4522 + self.match(MySqlParser.STRING_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReplicationFilterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_replicationFilter + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class WildIgnoreTableReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_WILD_IGNORE_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def simpleStrings(self): + return self.getTypedRuleContext(MySqlParser.SimpleStringsContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWildIgnoreTableReplication" ): + listener.enterWildIgnoreTableReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWildIgnoreTableReplication" ): + listener.exitWildIgnoreTableReplication(self) + + + class DoTableReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_DO_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_DO_TABLE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoTableReplication" ): + listener.enterDoTableReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoTableReplication" ): + listener.exitDoTableReplication(self) + + + class IgnoreTableReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_IGNORE_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIgnoreTableReplication" ): + listener.enterIgnoreTableReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIgnoreTableReplication" ): + listener.exitIgnoreTableReplication(self) + + + class RewriteDbReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_REWRITE_DB(self): + return self.getToken(MySqlParser.REPLICATE_REWRITE_DB, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def tablePair(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TablePairContext) + else: + return self.getTypedRuleContext(MySqlParser.TablePairContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRewriteDbReplication" ): + listener.enterRewriteDbReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRewriteDbReplication" ): + listener.exitRewriteDbReplication(self) + + + class DoDbReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_DO_DB(self): + return self.getToken(MySqlParser.REPLICATE_DO_DB, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoDbReplication" ): + listener.enterDoDbReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoDbReplication" ): + listener.exitDoDbReplication(self) + + + class IgnoreDbReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_IGNORE_DB(self): + return self.getToken(MySqlParser.REPLICATE_IGNORE_DB, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIgnoreDbReplication" ): + listener.enterIgnoreDbReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIgnoreDbReplication" ): + listener.exitIgnoreDbReplication(self) + + + class WildDoTableReplicationContext(ReplicationFilterContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ReplicationFilterContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPLICATE_WILD_DO_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def simpleStrings(self): + return self.getTypedRuleContext(MySqlParser.SimpleStringsContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWildDoTableReplication" ): + listener.enterWildDoTableReplication(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWildDoTableReplication" ): + listener.exitWildDoTableReplication(self) + + + + def replicationFilter(self): + + localctx = MySqlParser.ReplicationFilterContext(self, self._ctx, self.state) + self.enterRule(localctx, 356, self.RULE_replicationFilter) + self._la = 0 # Token type + try: + self.state = 4573 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [581]: + localctx = MySqlParser.DoDbReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4524 + self.match(MySqlParser.REPLICATE_DO_DB) + self.state = 4525 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4526 + self.match(MySqlParser.LR_BRACKET) + self.state = 4527 + self.uidList() + self.state = 4528 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [583]: + localctx = MySqlParser.IgnoreDbReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4530 + self.match(MySqlParser.REPLICATE_IGNORE_DB) + self.state = 4531 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4532 + self.match(MySqlParser.LR_BRACKET) + self.state = 4533 + self.uidList() + self.state = 4534 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [582]: + localctx = MySqlParser.DoTableReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4536 + self.match(MySqlParser.REPLICATE_DO_TABLE) + self.state = 4537 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4538 + self.match(MySqlParser.LR_BRACKET) + self.state = 4539 + self.tables() + self.state = 4540 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [584]: + localctx = MySqlParser.IgnoreTableReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4542 + self.match(MySqlParser.REPLICATE_IGNORE_TABLE) + self.state = 4543 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4544 + self.match(MySqlParser.LR_BRACKET) + self.state = 4545 + self.tables() + self.state = 4546 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [586]: + localctx = MySqlParser.WildDoTableReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 4548 + self.match(MySqlParser.REPLICATE_WILD_DO_TABLE) + self.state = 4549 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4550 + self.match(MySqlParser.LR_BRACKET) + self.state = 4551 + self.simpleStrings() + self.state = 4552 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [587]: + localctx = MySqlParser.WildIgnoreTableReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 4554 + self.match(MySqlParser.REPLICATE_WILD_IGNORE_TABLE) + self.state = 4555 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4556 + self.match(MySqlParser.LR_BRACKET) + self.state = 4557 + self.simpleStrings() + self.state = 4558 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [585]: + localctx = MySqlParser.RewriteDbReplicationContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 4560 + self.match(MySqlParser.REPLICATE_REWRITE_DB) + self.state = 4561 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4562 + self.match(MySqlParser.LR_BRACKET) + self.state = 4563 + self.tablePair() + self.state = 4568 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4564 + self.match(MySqlParser.COMMA) + self.state = 4565 + self.tablePair() + self.state = 4570 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4571 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TablePairContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.firstTable = None # TableNameContext + self.secondTable = None # TableNameContext + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def tableName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableNameContext) + else: + return self.getTypedRuleContext(MySqlParser.TableNameContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_tablePair + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTablePair" ): + listener.enterTablePair(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTablePair" ): + listener.exitTablePair(self) + + + + + def tablePair(self): + + localctx = MySqlParser.TablePairContext(self, self._ctx, self.state) + self.enterRule(localctx, 358, self.RULE_tablePair) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4575 + self.match(MySqlParser.LR_BRACKET) + self.state = 4576 + localctx.firstTable = self.tableName() + self.state = 4577 + self.match(MySqlParser.COMMA) + self.state = 4578 + localctx.secondTable = self.tableName() + self.state = 4579 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ThreadTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IO_THREAD(self): + return self.getToken(MySqlParser.IO_THREAD, 0) + + def SQL_THREAD(self): + return self.getToken(MySqlParser.SQL_THREAD, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_threadType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterThreadType" ): + listener.enterThreadType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitThreadType" ): + listener.exitThreadType(self) + + + + + def threadType(self): + + localctx = MySqlParser.ThreadTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 360, self.RULE_threadType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4581 + _la = self._input.LA(1) + if not(_la==462 or _la==628): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UntilOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_untilOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class GtidsUntilOptionContext(UntilOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UntilOptionContext + super().__init__(parser) + self.gtids = None # Token + self.copyFrom(ctx) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def gtuidSet(self): + return self.getTypedRuleContext(MySqlParser.GtuidSetContext,0) + + def SQL_BEFORE_GTIDS(self): + return self.getToken(MySqlParser.SQL_BEFORE_GTIDS, 0) + def SQL_AFTER_GTIDS(self): + return self.getToken(MySqlParser.SQL_AFTER_GTIDS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGtidsUntilOption" ): + listener.enterGtidsUntilOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGtidsUntilOption" ): + listener.exitGtidsUntilOption(self) + + + class SqlGapsUntilOptionContext(UntilOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UntilOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQL_AFTER_MTS_GAPS(self): + return self.getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSqlGapsUntilOption" ): + listener.enterSqlGapsUntilOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSqlGapsUntilOption" ): + listener.exitSqlGapsUntilOption(self) + + + class MasterLogUntilOptionContext(UntilOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UntilOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def MASTER_LOG_FILE(self): + return self.getToken(MySqlParser.MASTER_LOG_FILE, 0) + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + def MASTER_LOG_POS(self): + return self.getToken(MySqlParser.MASTER_LOG_POS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMasterLogUntilOption" ): + listener.enterMasterLogUntilOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMasterLogUntilOption" ): + listener.exitMasterLogUntilOption(self) + + + class RelayLogUntilOptionContext(UntilOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UntilOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def RELAY_LOG_FILE(self): + return self.getToken(MySqlParser.RELAY_LOG_FILE, 0) + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + def RELAY_LOG_POS(self): + return self.getToken(MySqlParser.RELAY_LOG_POS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRelayLogUntilOption" ): + listener.enterRelayLogUntilOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRelayLogUntilOption" ): + listener.exitRelayLogUntilOption(self) + + + + def untilOption(self): + + localctx = MySqlParser.UntilOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 362, self.RULE_untilOption) + self._la = 0 # Token type + try: + self.state = 4601 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [622, 624]: + localctx = MySqlParser.GtidsUntilOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4583 + localctx.gtids = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==622 or _la==624): + localctx.gtids = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4584 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4585 + self.gtuidSet() + pass + elif token in [483]: + localctx = MySqlParser.MasterLogUntilOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4586 + self.match(MySqlParser.MASTER_LOG_FILE) + self.state = 4587 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4588 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4589 + self.match(MySqlParser.COMMA) + self.state = 4590 + self.match(MySqlParser.MASTER_LOG_POS) + self.state = 4591 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4592 + self.decimalLiteral() + pass + elif token in [575]: + localctx = MySqlParser.RelayLogUntilOptionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4593 + self.match(MySqlParser.RELAY_LOG_FILE) + self.state = 4594 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4595 + self.match(MySqlParser.STRING_LITERAL) + self.state = 4596 + self.match(MySqlParser.COMMA) + self.state = 4597 + self.match(MySqlParser.RELAY_LOG_POS) + self.state = 4598 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4599 + self.decimalLiteral() + pass + elif token in [623]: + localctx = MySqlParser.SqlGapsUntilOptionContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4600 + self.match(MySqlParser.SQL_AFTER_MTS_GAPS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConnectionOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_connectionOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PluginDirConnectionOptionContext(ConnectionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ConnectionOptionContext + super().__init__(parser) + self.conOptPluginDir = None # Token + self.copyFrom(ctx) + + def PLUGIN_DIR(self): + return self.getToken(MySqlParser.PLUGIN_DIR, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPluginDirConnectionOption" ): + listener.enterPluginDirConnectionOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPluginDirConnectionOption" ): + listener.exitPluginDirConnectionOption(self) + + + class UserConnectionOptionContext(ConnectionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ConnectionOptionContext + super().__init__(parser) + self.conOptUser = None # Token + self.copyFrom(ctx) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserConnectionOption" ): + listener.enterUserConnectionOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserConnectionOption" ): + listener.exitUserConnectionOption(self) + + + class DefaultAuthConnectionOptionContext(ConnectionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ConnectionOptionContext + super().__init__(parser) + self.conOptDefAuth = None # Token + self.copyFrom(ctx) + + def DEFAULT_AUTH(self): + return self.getToken(MySqlParser.DEFAULT_AUTH, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefaultAuthConnectionOption" ): + listener.enterDefaultAuthConnectionOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefaultAuthConnectionOption" ): + listener.exitDefaultAuthConnectionOption(self) + + + class PasswordConnectionOptionContext(ConnectionOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ConnectionOptionContext + super().__init__(parser) + self.conOptPassword = None # Token + self.copyFrom(ctx) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPasswordConnectionOption" ): + listener.enterPasswordConnectionOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPasswordConnectionOption" ): + listener.exitPasswordConnectionOption(self) + + + + def connectionOption(self): + + localctx = MySqlParser.ConnectionOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 364, self.RULE_connectionOption) + try: + self.state = 4615 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [665]: + localctx = MySqlParser.UserConnectionOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4603 + self.match(MySqlParser.USER) + self.state = 4604 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4605 + localctx.conOptUser = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [551]: + localctx = MySqlParser.PasswordConnectionOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4606 + self.match(MySqlParser.PASSWORD) + self.state = 4607 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4608 + localctx.conOptPassword = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [391]: + localctx = MySqlParser.DefaultAuthConnectionOptionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4609 + self.match(MySqlParser.DEFAULT_AUTH) + self.state = 4610 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4611 + localctx.conOptDefAuth = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [555]: + localctx = MySqlParser.PluginDirConnectionOptionContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4612 + self.match(MySqlParser.PLUGIN_DIR) + self.state = 4613 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 4614 + localctx.conOptPluginDir = self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GtuidSetContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uuidSet(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UuidSetContext) + else: + return self.getTypedRuleContext(MySqlParser.UuidSetContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_gtuidSet + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGtuidSet" ): + listener.enterGtuidSet(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGtuidSet" ): + listener.exitGtuidSet(self) + + + + + def gtuidSet(self): + + localctx = MySqlParser.GtuidSetContext(self, self._ctx, self.state) + self.enterRule(localctx, 366, self.RULE_gtuidSet) + self._la = 0 # Token type + try: + self.state = 4626 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + self.enterOuterAlt(localctx, 1) + self.state = 4617 + self.uuidSet() + self.state = 4622 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4618 + self.match(MySqlParser.COMMA) + self.state = 4619 + self.uuidSet() + self.state = 4624 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + elif token in [1148]: + self.enterOuterAlt(localctx, 2) + self.state = 4625 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaStartTransactionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.xaStart = None # Token + self.xaAction = None # Token + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def START(self): + return self.getToken(MySqlParser.START, 0) + + def BEGIN(self): + return self.getToken(MySqlParser.BEGIN, 0) + + def JOIN(self): + return self.getToken(MySqlParser.JOIN, 0) + + def RESUME(self): + return self.getToken(MySqlParser.RESUME, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_xaStartTransaction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaStartTransaction" ): + listener.enterXaStartTransaction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaStartTransaction" ): + listener.exitXaStartTransaction(self) + + + + + def xaStartTransaction(self): + + localctx = MySqlParser.XaStartTransactionContext(self, self._ctx, self.state) + self.enterRule(localctx, 368, self.RULE_xaStartTransaction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4628 + self.match(MySqlParser.XA) + self.state = 4629 + localctx.xaStart = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==344 or _la==629): + localctx.xaStart = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4630 + self.xid() + self.state = 4632 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==90 or _la==591: + self.state = 4631 + localctx.xaAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==90 or _la==591): + localctx.xaAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaEndTransactionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def SUSPEND(self): + return self.getToken(MySqlParser.SUSPEND, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def MIGRATE(self): + return self.getToken(MySqlParser.MIGRATE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_xaEndTransaction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaEndTransaction" ): + listener.enterXaEndTransaction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaEndTransaction" ): + listener.exitXaEndTransaction(self) + + + + + def xaEndTransaction(self): + + localctx = MySqlParser.XaEndTransactionContext(self, self._ctx, self.state) + self.enterRule(localctx, 370, self.RULE_xaEndTransaction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4634 + self.match(MySqlParser.XA) + self.state = 4635 + self.match(MySqlParser.END) + self.state = 4636 + self.xid() + self.state = 4642 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==643: + self.state = 4637 + self.match(MySqlParser.SUSPEND) + self.state = 4640 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 4638 + self.match(MySqlParser.FOR) + self.state = 4639 + self.match(MySqlParser.MIGRATE) + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaPrepareStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def PREPARE(self): + return self.getToken(MySqlParser.PREPARE, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_xaPrepareStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaPrepareStatement" ): + listener.enterXaPrepareStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaPrepareStatement" ): + listener.exitXaPrepareStatement(self) + + + + + def xaPrepareStatement(self): + + localctx = MySqlParser.XaPrepareStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 372, self.RULE_xaPrepareStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4644 + self.match(MySqlParser.XA) + self.state = 4645 + self.match(MySqlParser.PREPARE) + self.state = 4646 + self.xid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaCommitWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def COMMIT(self): + return self.getToken(MySqlParser.COMMIT, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def ONE(self): + return self.getToken(MySqlParser.ONE, 0) + + def PHASE(self): + return self.getToken(MySqlParser.PHASE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_xaCommitWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaCommitWork" ): + listener.enterXaCommitWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaCommitWork" ): + listener.exitXaCommitWork(self) + + + + + def xaCommitWork(self): + + localctx = MySqlParser.XaCommitWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 374, self.RULE_xaCommitWork) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4648 + self.match(MySqlParser.XA) + self.state = 4649 + self.match(MySqlParser.COMMIT) + self.state = 4650 + self.xid() + self.state = 4653 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==536: + self.state = 4651 + self.match(MySqlParser.ONE) + self.state = 4652 + self.match(MySqlParser.PHASE) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaRollbackWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def ROLLBACK(self): + return self.getToken(MySqlParser.ROLLBACK, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_xaRollbackWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaRollbackWork" ): + listener.enterXaRollbackWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaRollbackWork" ): + listener.exitXaRollbackWork(self) + + + + + def xaRollbackWork(self): + + localctx = MySqlParser.XaRollbackWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 376, self.RULE_xaRollbackWork) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4655 + self.match(MySqlParser.XA) + self.state = 4656 + self.match(MySqlParser.ROLLBACK) + self.state = 4657 + self.xid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XaRecoverWorkContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def RECOVER(self): + return self.getToken(MySqlParser.RECOVER, 0) + + def CONVERT(self): + return self.getToken(MySqlParser.CONVERT, 0) + + def xid(self): + return self.getTypedRuleContext(MySqlParser.XidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_xaRecoverWork + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXaRecoverWork" ): + listener.enterXaRecoverWork(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXaRecoverWork" ): + listener.exitXaRecoverWork(self) + + + + + def xaRecoverWork(self): + + localctx = MySqlParser.XaRecoverWorkContext(self, self._ctx, self.state) + self.enterRule(localctx, 378, self.RULE_xaRecoverWork) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4659 + self.match(MySqlParser.XA) + self.state = 4660 + self.match(MySqlParser.RECOVER) + self.state = 4663 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==32: + self.state = 4661 + self.match(MySqlParser.CONVERT) + self.state = 4662 + self.xid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrepareStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.query = None # Token + self.variable = None # Token + + def PREPARE(self): + return self.getToken(MySqlParser.PREPARE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_prepareStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrepareStatement" ): + listener.enterPrepareStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrepareStatement" ): + listener.exitPrepareStatement(self) + + + + + def prepareStatement(self): + + localctx = MySqlParser.PrepareStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 380, self.RULE_prepareStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4665 + self.match(MySqlParser.PREPARE) + self.state = 4666 + self.uid() + self.state = 4667 + self.match(MySqlParser.FROM) + self.state = 4670 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1148]: + self.state = 4668 + localctx.query = self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [1160]: + self.state = 4669 + localctx.variable = self.match(MySqlParser.LOCAL_ID) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExecuteStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXECUTE(self): + return self.getToken(MySqlParser.EXECUTE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def USING(self): + return self.getToken(MySqlParser.USING, 0) + + def userVariables(self): + return self.getTypedRuleContext(MySqlParser.UserVariablesContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_executeStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExecuteStatement" ): + listener.enterExecuteStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExecuteStatement" ): + listener.exitExecuteStatement(self) + + + + + def executeStatement(self): + + localctx = MySqlParser.ExecuteStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 382, self.RULE_executeStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4672 + self.match(MySqlParser.EXECUTE) + self.state = 4673 + self.uid() + self.state = 4676 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 4674 + self.match(MySqlParser.USING) + self.state = 4675 + self.userVariables() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeallocatePrepareContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.dropFormat = None # Token + + def PREPARE(self): + return self.getToken(MySqlParser.PREPARE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def DEALLOCATE(self): + return self.getToken(MySqlParser.DEALLOCATE, 0) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_deallocatePrepare + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeallocatePrepare" ): + listener.enterDeallocatePrepare(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeallocatePrepare" ): + listener.exitDeallocatePrepare(self) + + + + + def deallocatePrepare(self): + + localctx = MySqlParser.DeallocatePrepareContext(self, self._ctx, self.state) + self.enterRule(localctx, 384, self.RULE_deallocatePrepare) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4678 + localctx.dropFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==51 or _la==390): + localctx.dropFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4679 + self.match(MySqlParser.PREPARE) + self.state = 4680 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RoutineBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def blockStatement(self): + return self.getTypedRuleContext(MySqlParser.BlockStatementContext,0) + + + def sqlStatement(self): + return self.getTypedRuleContext(MySqlParser.SqlStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_routineBody + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoutineBody" ): + listener.enterRoutineBody(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoutineBody" ): + listener.exitRoutineBody(self) + + + + + def routineBody(self): + + localctx = MySqlParser.RoutineBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 386, self.RULE_routineBody) + try: + self.state = 4684 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,678,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 4682 + self.blockStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 4683 + self.sqlStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BlockStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BEGIN(self): + return self.getToken(MySqlParser.BEGIN, 0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COLON_SYMB(self): + return self.getToken(MySqlParser.COLON_SYMB, 0) + + def declareVariable(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DeclareVariableContext) + else: + return self.getTypedRuleContext(MySqlParser.DeclareVariableContext,i) + + + def SEMI(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SEMI) + else: + return self.getToken(MySqlParser.SEMI, i) + + def declareCondition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DeclareConditionContext) + else: + return self.getTypedRuleContext(MySqlParser.DeclareConditionContext,i) + + + def declareCursor(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DeclareCursorContext) + else: + return self.getTypedRuleContext(MySqlParser.DeclareCursorContext,i) + + + def declareHandler(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DeclareHandlerContext) + else: + return self.getTypedRuleContext(MySqlParser.DeclareHandlerContext,i) + + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_blockStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBlockStatement" ): + listener.enterBlockStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBlockStatement" ): + listener.exitBlockStatement(self) + + + + + def blockStatement(self): + + localctx = MySqlParser.BlockStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 388, self.RULE_blockStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4689 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,679,self._ctx) + if la_ == 1: + self.state = 4686 + self.uid() + self.state = 4687 + self.match(MySqlParser.COLON_SYMB) + + + self.state = 4691 + self.match(MySqlParser.BEGIN) + self.state = 4697 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,680,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4692 + self.declareVariable() + self.state = 4693 + self.match(MySqlParser.SEMI) + self.state = 4699 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,680,self._ctx) + + self.state = 4705 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,681,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4700 + self.declareCondition() + self.state = 4701 + self.match(MySqlParser.SEMI) + self.state = 4707 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,681,self._ctx) + + self.state = 4713 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,682,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4708 + self.declareCursor() + self.state = 4709 + self.match(MySqlParser.SEMI) + self.state = 4715 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,682,self._ctx) + + self.state = 4721 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==41: + self.state = 4716 + self.declareHandler() + self.state = 4717 + self.match(MySqlParser.SEMI) + self.state = 4723 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4727 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,684,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 4724 + self.procedureSqlStatement() + self.state = 4729 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,684,self._ctx) + + self.state = 4730 + self.match(MySqlParser.END) + self.state = 4732 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,685,self._ctx) + if la_ == 1: + self.state = 4731 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CaseStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CASE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.CASE) + else: + return self.getToken(MySqlParser.CASE, i) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def caseAlternative(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CaseAlternativeContext) + else: + return self.getTypedRuleContext(MySqlParser.CaseAlternativeContext,i) + + + def ELSE(self): + return self.getToken(MySqlParser.ELSE, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_caseStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseStatement" ): + listener.enterCaseStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseStatement" ): + listener.exitCaseStatement(self) + + + + + def caseStatement(self): + + localctx = MySqlParser.CaseStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 390, self.RULE_caseStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4734 + self.match(MySqlParser.CASE) + self.state = 4737 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,686,self._ctx) + if la_ == 1: + self.state = 4735 + self.uid() + + elif la_ == 2: + self.state = 4736 + self.expression(0) + + + self.state = 4740 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 4739 + self.caseAlternative() + self.state = 4742 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==189): + break + + self.state = 4750 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==53: + self.state = 4744 + self.match(MySqlParser.ELSE) + self.state = 4746 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4745 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4748 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,688,self._ctx) + + + + self.state = 4752 + self.match(MySqlParser.END) + self.state = 4753 + self.match(MySqlParser.CASE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._procedureSqlStatement = None # ProcedureSqlStatementContext + self.thenStatements = list() # of ProcedureSqlStatementContexts + self.elseStatements = list() # of ProcedureSqlStatementContexts + + def IF(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.IF) + else: + return self.getToken(MySqlParser.IF, i) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def THEN(self): + return self.getToken(MySqlParser.THEN, 0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def elifAlternative(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ElifAlternativeContext) + else: + return self.getTypedRuleContext(MySqlParser.ElifAlternativeContext,i) + + + def ELSE(self): + return self.getToken(MySqlParser.ELSE, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_ifStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfStatement" ): + listener.enterIfStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfStatement" ): + listener.exitIfStatement(self) + + + + + def ifStatement(self): + + localctx = MySqlParser.IfStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 392, self.RULE_ifStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4755 + self.match(MySqlParser.IF) + self.state = 4756 + self.expression(0) + self.state = 4757 + self.match(MySqlParser.THEN) + self.state = 4759 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4758 + localctx._procedureSqlStatement = self.procedureSqlStatement() + localctx.thenStatements.append(localctx._procedureSqlStatement) + + else: + raise NoViableAltException(self) + self.state = 4761 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,690,self._ctx) + + self.state = 4766 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==54: + self.state = 4763 + self.elifAlternative() + self.state = 4768 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4775 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==53: + self.state = 4769 + self.match(MySqlParser.ELSE) + self.state = 4771 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4770 + localctx._procedureSqlStatement = self.procedureSqlStatement() + localctx.elseStatements.append(localctx._procedureSqlStatement) + + else: + raise NoViableAltException(self) + self.state = 4773 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,692,self._ctx) + + + + self.state = 4777 + self.match(MySqlParser.END) + self.state = 4778 + self.match(MySqlParser.IF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IterateStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ITERATE(self): + return self.getToken(MySqlParser.ITERATE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_iterateStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIterateStatement" ): + listener.enterIterateStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIterateStatement" ): + listener.exitIterateStatement(self) + + + + + def iterateStatement(self): + + localctx = MySqlParser.IterateStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 394, self.RULE_iterateStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4780 + self.match(MySqlParser.ITERATE) + self.state = 4781 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LeaveStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LEAVE(self): + return self.getToken(MySqlParser.LEAVE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_leaveStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLeaveStatement" ): + listener.enterLeaveStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLeaveStatement" ): + listener.exitLeaveStatement(self) + + + + + def leaveStatement(self): + + localctx = MySqlParser.LeaveStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 396, self.RULE_leaveStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4783 + self.match(MySqlParser.LEAVE) + self.state = 4784 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoopStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOOP(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LOOP) + else: + return self.getToken(MySqlParser.LOOP, i) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COLON_SYMB(self): + return self.getToken(MySqlParser.COLON_SYMB, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_loopStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoopStatement" ): + listener.enterLoopStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoopStatement" ): + listener.exitLoopStatement(self) + + + + + def loopStatement(self): + + localctx = MySqlParser.LoopStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 398, self.RULE_loopStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4789 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4786 + self.uid() + self.state = 4787 + self.match(MySqlParser.COLON_SYMB) + + + self.state = 4791 + self.match(MySqlParser.LOOP) + self.state = 4793 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4792 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4795 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,695,self._ctx) + + self.state = 4797 + self.match(MySqlParser.END) + self.state = 4798 + self.match(MySqlParser.LOOP) + self.state = 4800 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4799 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RepeatStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REPEAT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.REPEAT) + else: + return self.getToken(MySqlParser.REPEAT, i) + + def UNTIL(self): + return self.getToken(MySqlParser.UNTIL, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COLON_SYMB(self): + return self.getToken(MySqlParser.COLON_SYMB, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_repeatStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRepeatStatement" ): + listener.enterRepeatStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRepeatStatement" ): + listener.exitRepeatStatement(self) + + + + + def repeatStatement(self): + + localctx = MySqlParser.RepeatStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 400, self.RULE_repeatStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4805 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,697,self._ctx) + if la_ == 1: + self.state = 4802 + self.uid() + self.state = 4803 + self.match(MySqlParser.COLON_SYMB) + + + self.state = 4807 + self.match(MySqlParser.REPEAT) + self.state = 4809 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4808 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4811 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,698,self._ctx) + + self.state = 4813 + self.match(MySqlParser.UNTIL) + self.state = 4814 + self.expression(0) + self.state = 4815 + self.match(MySqlParser.END) + self.state = 4816 + self.match(MySqlParser.REPEAT) + self.state = 4818 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4817 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ReturnStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RETURN(self): + return self.getToken(MySqlParser.RETURN, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_returnStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReturnStatement" ): + listener.enterReturnStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReturnStatement" ): + listener.exitReturnStatement(self) + + + + + def returnStatement(self): + + localctx = MySqlParser.ReturnStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 402, self.RULE_returnStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4820 + self.match(MySqlParser.RETURN) + self.state = 4821 + self.expression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WhileStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHILE(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.WHILE) + else: + return self.getToken(MySqlParser.WHILE, i) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def DO(self): + return self.getToken(MySqlParser.DO, 0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COLON_SYMB(self): + return self.getToken(MySqlParser.COLON_SYMB, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_whileStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWhileStatement" ): + listener.enterWhileStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWhileStatement" ): + listener.exitWhileStatement(self) + + + + + def whileStatement(self): + + localctx = MySqlParser.WhileStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 404, self.RULE_whileStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4826 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4823 + self.uid() + self.state = 4824 + self.match(MySqlParser.COLON_SYMB) + + + self.state = 4828 + self.match(MySqlParser.WHILE) + self.state = 4829 + self.expression(0) + self.state = 4830 + self.match(MySqlParser.DO) + self.state = 4832 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4831 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4834 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,701,self._ctx) + + self.state = 4836 + self.match(MySqlParser.END) + self.state = 4837 + self.match(MySqlParser.WHILE) + self.state = 4839 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 756891332513122304) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055071174737) != 0) or ((((_la - 140)) & ~0x3f) == 0 and ((1 << (_la - 140)) & 268698883) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17174494689) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & -1099511627777) != 0) or ((((_la - 345)) & ~0x3f) == 0 and ((1 << (_la - 345)) & -2882305960540372993) != 0) or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & -4398063288321) != 0) or ((((_la - 473)) & ~0x3f) == 0 and ((1 << (_la - 473)) & -16325548649218049) != 0) or ((((_la - 537)) & ~0x3f) == 0 and ((1 << (_la - 537)) & -81064793296864001) != 0) or ((((_la - 601)) & ~0x3f) == 0 and ((1 << (_la - 601)) & -68719476801) != 0) or ((((_la - 665)) & ~0x3f) == 0 and ((1 << (_la - 665)) & -22236531750340609) != 0) or ((((_la - 729)) & ~0x3f) == 0 and ((1 << (_la - 729)) & -65) != 0) or ((((_la - 793)) & ~0x3f) == 0 and ((1 << (_la - 793)) & -6145) != 0) or ((((_la - 857)) & ~0x3f) == 0 and ((1 << (_la - 857)) & -1) != 0) or ((((_la - 921)) & ~0x3f) == 0 and ((1 << (_la - 921)) & -1) != 0) or ((((_la - 985)) & ~0x3f) == 0 and ((1 << (_la - 985)) & -1) != 0) or ((((_la - 1049)) & ~0x3f) == 0 and ((1 << (_la - 1049)) & 576460752303423487) != 0) or ((((_la - 1123)) & ~0x3f) == 0 and ((1 << (_la - 1123)) & 8627683329) != 0): + self.state = 4838 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CursorStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_cursorStatement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class CloseCursorContext(CursorStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CursorStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def CLOSE(self): + return self.getToken(MySqlParser.CLOSE, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCloseCursor" ): + listener.enterCloseCursor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCloseCursor" ): + listener.exitCloseCursor(self) + + + class OpenCursorContext(CursorStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CursorStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def OPEN(self): + return self.getToken(MySqlParser.OPEN, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOpenCursor" ): + listener.enterOpenCursor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOpenCursor" ): + listener.exitOpenCursor(self) + + + class FetchCursorContext(CursorStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CursorStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def FETCH(self): + return self.getToken(MySqlParser.FETCH, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def NEXT(self): + return self.getToken(MySqlParser.NEXT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFetchCursor" ): + listener.enterFetchCursor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFetchCursor" ): + listener.exitFetchCursor(self) + + + + def cursorStatement(self): + + localctx = MySqlParser.CursorStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 406, self.RULE_cursorStatement) + self._la = 0 # Token type + try: + self.state = 4856 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [361]: + localctx = MySqlParser.CloseCursorContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4841 + self.match(MySqlParser.CLOSE) + self.state = 4842 + self.uid() + pass + elif token in [64]: + localctx = MySqlParser.FetchCursorContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4843 + self.match(MySqlParser.FETCH) + self.state = 4848 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,704,self._ctx) + if la_ == 1: + self.state = 4845 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==520: + self.state = 4844 + self.match(MySqlParser.NEXT) + + + self.state = 4847 + self.match(MySqlParser.FROM) + + + self.state = 4850 + self.uid() + self.state = 4851 + self.match(MySqlParser.INTO) + self.state = 4852 + self.uidList() + pass + elif token in [539]: + localctx = MySqlParser.OpenCursorContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4854 + self.match(MySqlParser.OPEN) + self.state = 4855 + self.uid() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclareVariableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DECLARE(self): + return self.getToken(MySqlParser.DECLARE, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def dataType(self): + return self.getTypedRuleContext(MySqlParser.DataTypeContext,0) + + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_declareVariable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclareVariable" ): + listener.enterDeclareVariable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclareVariable" ): + listener.exitDeclareVariable(self) + + + + + def declareVariable(self): + + localctx = MySqlParser.DeclareVariableContext(self, self._ctx, self.state) + self.enterRule(localctx, 408, self.RULE_declareVariable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4858 + self.match(MySqlParser.DECLARE) + self.state = 4859 + self.uidList() + self.state = 4860 + self.dataType() + self.state = 4863 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 4861 + self.match(MySqlParser.DEFAULT) + self.state = 4862 + self.expression(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclareConditionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DECLARE(self): + return self.getToken(MySqlParser.DECLARE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def CONDITION(self): + return self.getToken(MySqlParser.CONDITION, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def SQLSTATE(self): + return self.getToken(MySqlParser.SQLSTATE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_declareCondition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclareCondition" ): + listener.enterDeclareCondition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclareCondition" ): + listener.exitDeclareCondition(self) + + + + + def declareCondition(self): + + localctx = MySqlParser.DeclareConditionContext(self, self._ctx, self.state) + self.enterRule(localctx, 410, self.RULE_declareCondition) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4865 + self.match(MySqlParser.DECLARE) + self.state = 4866 + self.uid() + self.state = 4867 + self.match(MySqlParser.CONDITION) + self.state = 4868 + self.match(MySqlParser.FOR) + self.state = 4875 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + self.state = 4869 + self.decimalLiteral() + pass + elif token in [162]: + self.state = 4870 + self.match(MySqlParser.SQLSTATE) + self.state = 4872 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==669: + self.state = 4871 + self.match(MySqlParser.VALUE) + + + self.state = 4874 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclareCursorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DECLARE(self): + return self.getToken(MySqlParser.DECLARE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def CURSOR(self): + return self.getToken(MySqlParser.CURSOR, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_declareCursor + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclareCursor" ): + listener.enterDeclareCursor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclareCursor" ): + listener.exitDeclareCursor(self) + + + + + def declareCursor(self): + + localctx = MySqlParser.DeclareCursorContext(self, self._ctx, self.state) + self.enterRule(localctx, 412, self.RULE_declareCursor) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4877 + self.match(MySqlParser.DECLARE) + self.state = 4878 + self.uid() + self.state = 4879 + self.match(MySqlParser.CURSOR) + self.state = 4880 + self.match(MySqlParser.FOR) + self.state = 4881 + self.selectStatement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DeclareHandlerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.handlerAction = None # Token + + def DECLARE(self): + return self.getToken(MySqlParser.DECLARE, 0) + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def handlerConditionValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.HandlerConditionValueContext) + else: + return self.getTypedRuleContext(MySqlParser.HandlerConditionValueContext,i) + + + def routineBody(self): + return self.getTypedRuleContext(MySqlParser.RoutineBodyContext,0) + + + def CONTINUE(self): + return self.getToken(MySqlParser.CONTINUE, 0) + + def EXIT(self): + return self.getToken(MySqlParser.EXIT, 0) + + def UNDO(self): + return self.getToken(MySqlParser.UNDO, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_declareHandler + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeclareHandler" ): + listener.enterDeclareHandler(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeclareHandler" ): + listener.exitDeclareHandler(self) + + + + + def declareHandler(self): + + localctx = MySqlParser.DeclareHandlerContext(self, self._ctx, self.state) + self.enterRule(localctx, 414, self.RULE_declareHandler) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 4883 + self.match(MySqlParser.DECLARE) + self.state = 4884 + localctx.handlerAction = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==31 or _la==61 or _la==179): + localctx.handlerAction = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 4885 + self.match(MySqlParser.HANDLER) + self.state = 4886 + self.match(MySqlParser.FOR) + self.state = 4887 + self.handlerConditionValue() + self.state = 4892 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4888 + self.match(MySqlParser.COMMA) + self.state = 4889 + self.handlerConditionValue() + self.state = 4894 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4895 + self.routineBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HandlerConditionValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_handlerConditionValue + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class HandlerConditionWarningContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQLWARNING(self): + return self.getToken(MySqlParser.SQLWARNING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionWarning" ): + listener.enterHandlerConditionWarning(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionWarning" ): + listener.exitHandlerConditionWarning(self) + + + class HandlerConditionCodeContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionCode" ): + listener.enterHandlerConditionCode(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionCode" ): + listener.exitHandlerConditionCode(self) + + + class HandlerConditionNotfoundContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def FOUND(self): + return self.getToken(MySqlParser.FOUND, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionNotfound" ): + listener.enterHandlerConditionNotfound(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionNotfound" ): + listener.exitHandlerConditionNotfound(self) + + + class HandlerConditionStateContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQLSTATE(self): + return self.getToken(MySqlParser.SQLSTATE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionState" ): + listener.enterHandlerConditionState(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionState" ): + listener.exitHandlerConditionState(self) + + + class HandlerConditionExceptionContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def SQLEXCEPTION(self): + return self.getToken(MySqlParser.SQLEXCEPTION, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionException" ): + listener.enterHandlerConditionException(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionException" ): + listener.exitHandlerConditionException(self) + + + class HandlerConditionNameContext(HandlerConditionValueContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.HandlerConditionValueContext + super().__init__(parser) + self.copyFrom(ctx) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHandlerConditionName" ): + listener.enterHandlerConditionName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHandlerConditionName" ): + listener.exitHandlerConditionName(self) + + + + def handlerConditionValue(self): + + localctx = MySqlParser.HandlerConditionValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 416, self.RULE_handlerConditionValue) + self._la = 0 # Token type + try: + self.state = 4908 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + localctx = MySqlParser.HandlerConditionCodeContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4897 + self.decimalLiteral() + pass + elif token in [162]: + localctx = MySqlParser.HandlerConditionStateContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4898 + self.match(MySqlParser.SQLSTATE) + self.state = 4900 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==669: + self.state = 4899 + self.match(MySqlParser.VALUE) + + + self.state = 4902 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + localctx = MySqlParser.HandlerConditionNameContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4903 + self.uid() + pass + elif token in [163]: + localctx = MySqlParser.HandlerConditionWarningContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 4904 + self.match(MySqlParser.SQLWARNING) + pass + elif token in [114]: + localctx = MySqlParser.HandlerConditionNotfoundContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 4905 + self.match(MySqlParser.NOT) + self.state = 4906 + self.match(MySqlParser.FOUND) + pass + elif token in [161]: + localctx = MySqlParser.HandlerConditionExceptionContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 4907 + self.match(MySqlParser.SQLEXCEPTION) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ProcedureSqlStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEMI(self): + return self.getToken(MySqlParser.SEMI, 0) + + def compoundStatement(self): + return self.getTypedRuleContext(MySqlParser.CompoundStatementContext,0) + + + def sqlStatement(self): + return self.getTypedRuleContext(MySqlParser.SqlStatementContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_procedureSqlStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProcedureSqlStatement" ): + listener.enterProcedureSqlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProcedureSqlStatement" ): + listener.exitProcedureSqlStatement(self) + + + + + def procedureSqlStatement(self): + + localctx = MySqlParser.ProcedureSqlStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 418, self.RULE_procedureSqlStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4912 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,712,self._ctx) + if la_ == 1: + self.state = 4910 + self.compoundStatement() + pass + + elif la_ == 2: + self.state = 4911 + self.sqlStatement() + pass + + + self.state = 4914 + self.match(MySqlParser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CaseAlternativeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHEN(self): + return self.getToken(MySqlParser.WHEN, 0) + + def THEN(self): + return self.getToken(MySqlParser.THEN, 0) + + def constant(self): + return self.getTypedRuleContext(MySqlParser.ConstantContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_caseAlternative + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseAlternative" ): + listener.enterCaseAlternative(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseAlternative" ): + listener.exitCaseAlternative(self) + + + + + def caseAlternative(self): + + localctx = MySqlParser.CaseAlternativeContext(self, self._ctx, self.state) + self.enterRule(localctx, 420, self.RULE_caseAlternative) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4916 + self.match(MySqlParser.WHEN) + self.state = 4919 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,713,self._ctx) + if la_ == 1: + self.state = 4917 + self.constant() + pass + + elif la_ == 2: + self.state = 4918 + self.expression(0) + pass + + + self.state = 4921 + self.match(MySqlParser.THEN) + self.state = 4923 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4922 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4925 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,714,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ElifAlternativeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ELSEIF(self): + return self.getToken(MySqlParser.ELSEIF, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def THEN(self): + return self.getToken(MySqlParser.THEN, 0) + + def procedureSqlStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ProcedureSqlStatementContext) + else: + return self.getTypedRuleContext(MySqlParser.ProcedureSqlStatementContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_elifAlternative + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterElifAlternative" ): + listener.enterElifAlternative(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitElifAlternative" ): + listener.exitElifAlternative(self) + + + + + def elifAlternative(self): + + localctx = MySqlParser.ElifAlternativeContext(self, self._ctx, self.state) + self.enterRule(localctx, 422, self.RULE_elifAlternative) + try: + self.enterOuterAlt(localctx, 1) + self.state = 4927 + self.match(MySqlParser.ELSEIF) + self.state = 4928 + self.expression(0) + self.state = 4929 + self.match(MySqlParser.THEN) + self.state = 4931 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 4930 + self.procedureSqlStatement() + + else: + raise NoViableAltException(self) + self.state = 4933 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,715,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AlterUserContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_alterUser + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class AlterUserMysqlV80Context(AlterUserContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterUserContext + super().__init__(parser) + self.tlsNone = None # Token + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def userAuthOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserAuthOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserAuthOptionContext,i) + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def REQUIRE(self): + return self.getToken(MySqlParser.REQUIRE, 0) + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + def userPasswordOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserPasswordOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserPasswordOptionContext,i) + + def userLockOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserLockOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserLockOptionContext,i) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def ATTRIBUTE(self): + return self.getToken(MySqlParser.ATTRIBUTE, 0) + def tlsOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TlsOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TlsOptionContext,i) + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + def userResourceOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserResourceOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserResourceOptionContext,i) + + def AND(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.AND) + else: + return self.getToken(MySqlParser.AND, i) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + def roleOption(self): + return self.getTypedRuleContext(MySqlParser.RoleOptionContext,0) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterUserMysqlV80" ): + listener.enterAlterUserMysqlV80(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterUserMysqlV80" ): + listener.exitAlterUserMysqlV80(self) + + + class AlterUserMysqlV56Context(AlterUserContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AlterUserContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def userSpecification(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserSpecificationContext) + else: + return self.getTypedRuleContext(MySqlParser.UserSpecificationContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterUserMysqlV56" ): + listener.enterAlterUserMysqlV56(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterUserMysqlV56" ): + listener.exitAlterUserMysqlV56(self) + + + + def alterUser(self): + + localctx = MySqlParser.AlterUserContext(self, self._ctx, self.state) + self.enterRule(localctx, 424, self.RULE_alterUser) + self._la = 0 # Token type + try: + self.state = 5008 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,730,self._ctx) + if la_ == 1: + localctx = MySqlParser.AlterUserMysqlV56Context(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 4935 + self.match(MySqlParser.ALTER) + self.state = 4936 + self.match(MySqlParser.USER) + self.state = 4937 + self.userSpecification() + self.state = 4942 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4938 + self.match(MySqlParser.COMMA) + self.state = 4939 + self.userSpecification() + self.state = 4944 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.AlterUserMysqlV80Context(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 4945 + self.match(MySqlParser.ALTER) + self.state = 4946 + self.match(MySqlParser.USER) + self.state = 4948 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==77: + self.state = 4947 + self.ifExists() + + + self.state = 4950 + self.userAuthOption() + self.state = 4955 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 4951 + self.match(MySqlParser.COMMA) + self.state = 4952 + self.userAuthOption() + self.state = 4957 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4972 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==142: + self.state = 4958 + self.match(MySqlParser.REQUIRE) + self.state = 4970 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [529]: + self.state = 4959 + localctx.tlsNone = self.match(MySqlParser.NONE) + pass + elif token in [167, 358, 465, 640, 680]: + self.state = 4960 + self.tlsOption() + self.state = 4967 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==10 or _la==167 or _la==358 or _la==465 or _la==640 or _la==680: + self.state = 4962 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10: + self.state = 4961 + self.match(MySqlParser.AND) + + + self.state = 4964 + self.tlsOption() + self.state = 4969 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + + + self.state = 4980 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,724,self._ctx) + if la_ == 1: + self.state = 4974 + self.match(MySqlParser.WITH) + self.state = 4976 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 4975 + self.userResourceOption() + self.state = 4978 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (((((_la - 498)) & ~0x3f) == 0 and ((1 << (_la - 498)) & 51) != 0)): + break + + + + self.state = 4986 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==332 or _la==424 or _la==551 or _la==552: + self.state = 4984 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [424, 551, 552]: + self.state = 4982 + self.userPasswordOption() + pass + elif token in [332]: + self.state = 4983 + self.userLockOption() + pass + else: + raise NoViableAltException(self) + + self.state = 4988 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 4993 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [368]: + self.state = 4989 + self.match(MySqlParser.COMMENT) + self.state = 4990 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [14]: + self.state = 4991 + self.match(MySqlParser.ATTRIBUTE) + self.state = 4992 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1136]: + pass + else: + pass + pass + + elif la_ == 3: + localctx = MySqlParser.AlterUserMysqlV80Context(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 4995 + self.match(MySqlParser.ALTER) + self.state = 4996 + self.match(MySqlParser.USER) + self.state = 4998 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,728,self._ctx) + if la_ == 1: + self.state = 4997 + self.ifExists() + + + self.state = 5002 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,729,self._ctx) + if la_ == 1: + self.state = 5000 + self.userName() + pass + + elif la_ == 2: + self.state = 5001 + self.uid() + pass + + + self.state = 5004 + self.match(MySqlParser.DEFAULT) + self.state = 5005 + self.match(MySqlParser.ROLE) + self.state = 5006 + self.roleOption() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateUserContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_createUser + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class CreateUserMysqlV56Context(CreateUserContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateUserContext + super().__init__(parser) + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def userAuthOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserAuthOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserAuthOptionContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateUserMysqlV56" ): + listener.enterCreateUserMysqlV56(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateUserMysqlV56" ): + listener.exitCreateUserMysqlV56(self) + + + class CreateUserMysqlV80Context(CreateUserContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.CreateUserContext + super().__init__(parser) + self.tlsNone = None # Token + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def userAuthOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserAuthOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserAuthOptionContext,i) + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + def roleOption(self): + return self.getTypedRuleContext(MySqlParser.RoleOptionContext,0) + + def REQUIRE(self): + return self.getToken(MySqlParser.REQUIRE, 0) + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + def userPasswordOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserPasswordOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserPasswordOptionContext,i) + + def userLockOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserLockOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserLockOptionContext,i) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def ATTRIBUTE(self): + return self.getToken(MySqlParser.ATTRIBUTE, 0) + def tlsOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TlsOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TlsOptionContext,i) + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + def userResourceOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserResourceOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserResourceOptionContext,i) + + def AND(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.AND) + else: + return self.getToken(MySqlParser.AND, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateUserMysqlV80" ): + listener.enterCreateUserMysqlV80(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateUserMysqlV80" ): + listener.exitCreateUserMysqlV80(self) + + + + def createUser(self): + + localctx = MySqlParser.CreateUserContext(self, self._ctx, self.state) + self.enterRule(localctx, 426, self.RULE_createUser) + self._la = 0 # Token type + try: + self.state = 5075 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,744,self._ctx) + if la_ == 1: + localctx = MySqlParser.CreateUserMysqlV56Context(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5010 + self.match(MySqlParser.CREATE) + self.state = 5011 + self.match(MySqlParser.USER) + self.state = 5012 + self.userAuthOption() + self.state = 5017 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5013 + self.match(MySqlParser.COMMA) + self.state = 5014 + self.userAuthOption() + self.state = 5019 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.CreateUserMysqlV80Context(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5020 + self.match(MySqlParser.CREATE) + self.state = 5021 + self.match(MySqlParser.USER) + self.state = 5023 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==77: + self.state = 5022 + self.ifNotExists() + + + self.state = 5025 + self.userAuthOption() + self.state = 5030 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5026 + self.match(MySqlParser.COMMA) + self.state = 5027 + self.userAuthOption() + self.state = 5032 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5036 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42: + self.state = 5033 + self.match(MySqlParser.DEFAULT) + self.state = 5034 + self.match(MySqlParser.ROLE) + self.state = 5035 + self.roleOption() + + + self.state = 5052 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==142: + self.state = 5038 + self.match(MySqlParser.REQUIRE) + self.state = 5050 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [529]: + self.state = 5039 + localctx.tlsNone = self.match(MySqlParser.NONE) + pass + elif token in [167, 358, 465, 640, 680]: + self.state = 5040 + self.tlsOption() + self.state = 5047 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==10 or _la==167 or _la==358 or _la==465 or _la==640 or _la==680: + self.state = 5042 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10: + self.state = 5041 + self.match(MySqlParser.AND) + + + self.state = 5044 + self.tlsOption() + self.state = 5049 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + + + self.state = 5060 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,740,self._ctx) + if la_ == 1: + self.state = 5054 + self.match(MySqlParser.WITH) + self.state = 5056 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 5055 + self.userResourceOption() + self.state = 5058 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (((((_la - 498)) & ~0x3f) == 0 and ((1 << (_la - 498)) & 51) != 0)): + break + + + + self.state = 5066 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==332 or _la==424 or _la==551 or _la==552: + self.state = 5064 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [424, 551, 552]: + self.state = 5062 + self.userPasswordOption() + pass + elif token in [332]: + self.state = 5063 + self.userLockOption() + pass + else: + raise NoViableAltException(self) + + self.state = 5068 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5073 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [368]: + self.state = 5069 + self.match(MySqlParser.COMMENT) + self.state = 5070 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [14]: + self.state = 5071 + self.match(MySqlParser.ATTRIBUTE) + self.state = 5072 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1136]: + pass + else: + pass + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DropUserContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def ifExists(self): + return self.getTypedRuleContext(MySqlParser.IfExistsContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_dropUser + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropUser" ): + listener.enterDropUser(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropUser" ): + listener.exitDropUser(self) + + + + + def dropUser(self): + + localctx = MySqlParser.DropUserContext(self, self._ctx, self.state) + self.enterRule(localctx, 428, self.RULE_dropUser) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5077 + self.match(MySqlParser.DROP) + self.state = 5078 + self.match(MySqlParser.USER) + self.state = 5080 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==77: + self.state = 5079 + self.ifExists() + + + self.state = 5082 + self.userName() + self.state = 5087 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5083 + self.match(MySqlParser.COMMA) + self.state = 5084 + self.userName() + self.state = 5089 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GrantStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.privilegeObject = None # Token + self.tlsNone = None # Token + + def GRANT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.GRANT) + else: + return self.getToken(MySqlParser.GRANT, i) + + def privelegeClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PrivelegeClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.PrivelegeClauseContext,i) + + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def privilegeLevel(self): + return self.getTypedRuleContext(MySqlParser.PrivilegeLevelContext,0) + + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def userAuthOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserAuthOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserAuthOptionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def REQUIRE(self): + return self.getToken(MySqlParser.REQUIRE, 0) + + def WITH(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.WITH) + else: + return self.getToken(MySqlParser.WITH, i) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def roleOption(self): + return self.getTypedRuleContext(MySqlParser.RoleOptionContext,0) + + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def tlsOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TlsOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.TlsOptionContext,i) + + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + + def OPTION(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.OPTION) + else: + return self.getToken(MySqlParser.OPTION, i) + + def userResourceOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserResourceOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.UserResourceOptionContext,i) + + + def AND(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.AND) + else: + return self.getToken(MySqlParser.AND, i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def ADMIN(self): + return self.getToken(MySqlParser.ADMIN, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_grantStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGrantStatement" ): + listener.enterGrantStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGrantStatement" ): + listener.exitGrantStatement(self) + + + + + def grantStatement(self): + + localctx = MySqlParser.GrantStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 430, self.RULE_grantStatement) + self._la = 0 # Token type + try: + self.state = 5183 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,765,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 5090 + self.match(MySqlParser.GRANT) + self.state = 5091 + self.privelegeClause() + self.state = 5096 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5092 + self.match(MySqlParser.COMMA) + self.state = 5093 + self.privelegeClause() + self.state = 5098 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5099 + self.match(MySqlParser.ON) + self.state = 5101 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,748,self._ctx) + if la_ == 1: + self.state = 5100 + localctx.privilegeObject = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==131 or _la==172 or _la==437): + localctx.privilegeObject = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5103 + self.privilegeLevel() + self.state = 5104 + self.match(MySqlParser.TO) + self.state = 5105 + self.userAuthOption() + self.state = 5110 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5106 + self.match(MySqlParser.COMMA) + self.state = 5107 + self.userAuthOption() + self.state = 5112 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5127 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==142: + self.state = 5113 + self.match(MySqlParser.REQUIRE) + self.state = 5125 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [529]: + self.state = 5114 + localctx.tlsNone = self.match(MySqlParser.NONE) + pass + elif token in [167, 358, 465, 640, 680]: + self.state = 5115 + self.tlsOption() + self.state = 5122 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==10 or _la==167 or _la==358 or _la==465 or _la==640 or _la==680: + self.state = 5117 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10: + self.state = 5116 + self.match(MySqlParser.AND) + + + self.state = 5119 + self.tlsOption() + self.state = 5124 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + + + self.state = 5138 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,756,self._ctx) + if la_ == 1: + self.state = 5129 + self.match(MySqlParser.WITH) + self.state = 5135 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,755,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 5133 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [72]: + self.state = 5130 + self.match(MySqlParser.GRANT) + self.state = 5131 + self.match(MySqlParser.OPTION) + pass + elif token in [498, 499, 502, 503]: + self.state = 5132 + self.userResourceOption() + pass + else: + raise NoViableAltException(self) + + self.state = 5137 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,755,self._ctx) + + + + self.state = 5146 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 5140 + self.match(MySqlParser.AS) + self.state = 5141 + self.userName() + self.state = 5142 + self.match(MySqlParser.WITH) + self.state = 5143 + self.match(MySqlParser.ROLE) + self.state = 5144 + self.roleOption() + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 5148 + self.match(MySqlParser.GRANT) + self.state = 5151 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,758,self._ctx) + if la_ == 1: + self.state = 5149 + self.userName() + pass + + elif la_ == 2: + self.state = 5150 + self.uid() + pass + + + self.state = 5160 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5153 + self.match(MySqlParser.COMMA) + self.state = 5156 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,759,self._ctx) + if la_ == 1: + self.state = 5154 + self.userName() + pass + + elif la_ == 2: + self.state = 5155 + self.uid() + pass + + + self.state = 5162 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5163 + self.match(MySqlParser.TO) + self.state = 5166 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,761,self._ctx) + if la_ == 1: + self.state = 5164 + self.userName() + pass + + elif la_ == 2: + self.state = 5165 + self.uid() + pass + + + self.state = 5175 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5168 + self.match(MySqlParser.COMMA) + self.state = 5171 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,762,self._ctx) + if la_ == 1: + self.state = 5169 + self.userName() + pass + + elif la_ == 2: + self.state = 5170 + self.uid() + pass + + + self.state = 5177 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5181 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,764,self._ctx) + if la_ == 1: + self.state = 5178 + self.match(MySqlParser.WITH) + self.state = 5179 + self.match(MySqlParser.ADMIN) + self.state = 5180 + self.match(MySqlParser.OPTION) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RoleOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def EXCEPT(self): + return self.getToken(MySqlParser.EXCEPT, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_roleOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoleOption" ): + listener.enterRoleOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoleOption" ): + listener.exitRoleOption(self) + + + + + def roleOption(self): + + localctx = MySqlParser.RoleOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 432, self.RULE_roleOption) + self._la = 0 # Token type + try: + self.state = 5207 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,769,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 5185 + self.match(MySqlParser.DEFAULT) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 5186 + self.match(MySqlParser.NONE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 5187 + self.match(MySqlParser.ALL) + self.state = 5197 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==59: + self.state = 5188 + self.match(MySqlParser.EXCEPT) + self.state = 5189 + self.userName() + self.state = 5194 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5190 + self.match(MySqlParser.COMMA) + self.state = 5191 + self.userName() + self.state = 5196 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 5199 + self.userName() + self.state = 5204 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5200 + self.match(MySqlParser.COMMA) + self.state = 5201 + self.userName() + self.state = 5206 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class GrantProxyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.fromFirst = None # UserNameContext + self.toFirst = None # UserNameContext + self._userName = None # UserNameContext + self.toOther = list() # of UserNameContexts + + def GRANT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.GRANT) + else: + return self.getToken(MySqlParser.GRANT, i) + + def PROXY(self): + return self.getToken(MySqlParser.PROXY, 0) + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def OPTION(self): + return self.getToken(MySqlParser.OPTION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_grantProxy + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGrantProxy" ): + listener.enterGrantProxy(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGrantProxy" ): + listener.exitGrantProxy(self) + + + + + def grantProxy(self): + + localctx = MySqlParser.GrantProxyContext(self, self._ctx, self.state) + self.enterRule(localctx, 434, self.RULE_grantProxy) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5209 + self.match(MySqlParser.GRANT) + self.state = 5210 + self.match(MySqlParser.PROXY) + self.state = 5211 + self.match(MySqlParser.ON) + self.state = 5212 + localctx.fromFirst = self.userName() + self.state = 5213 + self.match(MySqlParser.TO) + self.state = 5214 + localctx.toFirst = self.userName() + self.state = 5219 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5215 + self.match(MySqlParser.COMMA) + self.state = 5216 + localctx._userName = self.userName() + localctx.toOther.append(localctx._userName) + self.state = 5221 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5225 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,771,self._ctx) + if la_ == 1: + self.state = 5222 + self.match(MySqlParser.WITH) + self.state = 5223 + self.match(MySqlParser.GRANT) + self.state = 5224 + self.match(MySqlParser.OPTION) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RenameUserContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RENAME(self): + return self.getToken(MySqlParser.RENAME, 0) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + + def renameUserClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.RenameUserClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.RenameUserClauseContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_renameUser + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameUser" ): + listener.enterRenameUser(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameUser" ): + listener.exitRenameUser(self) + + + + + def renameUser(self): + + localctx = MySqlParser.RenameUserContext(self, self._ctx, self.state) + self.enterRule(localctx, 436, self.RULE_renameUser) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5227 + self.match(MySqlParser.RENAME) + self.state = 5228 + self.match(MySqlParser.USER) + self.state = 5229 + self.renameUserClause() + self.state = 5234 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5230 + self.match(MySqlParser.COMMA) + self.state = 5231 + self.renameUserClause() + self.state = 5236 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RevokeStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_revokeStatement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DetailRevokeContext(RevokeStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RevokeStatementContext + super().__init__(parser) + self.privilegeObject = None # Token + self.copyFrom(ctx) + + def REVOKE(self): + return self.getToken(MySqlParser.REVOKE, 0) + def privelegeClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PrivelegeClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.PrivelegeClauseContext,i) + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + def privilegeLevel(self): + return self.getTypedRuleContext(MySqlParser.PrivilegeLevelContext,0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDetailRevoke" ): + listener.enterDetailRevoke(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDetailRevoke" ): + listener.exitDetailRevoke(self) + + + class RoleRevokeContext(RevokeStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RevokeStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def REVOKE(self): + return self.getToken(MySqlParser.REVOKE, 0) + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoleRevoke" ): + listener.enterRoleRevoke(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoleRevoke" ): + listener.exitRoleRevoke(self) + + + class ShortRevokeContext(RevokeStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.RevokeStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def REVOKE(self): + return self.getToken(MySqlParser.REVOKE, 0) + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def GRANT(self): + return self.getToken(MySqlParser.GRANT, 0) + def OPTION(self): + return self.getToken(MySqlParser.OPTION, 0) + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + def PRIVILEGES(self): + return self.getToken(MySqlParser.PRIVILEGES, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShortRevoke" ): + listener.enterShortRevoke(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShortRevoke" ): + listener.exitShortRevoke(self) + + + + def revokeStatement(self): + + localctx = MySqlParser.RevokeStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 438, self.RULE_revokeStatement) + self._la = 0 # Token type + try: + self.state = 5307 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,784,self._ctx) + if la_ == 1: + localctx = MySqlParser.DetailRevokeContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5237 + self.match(MySqlParser.REVOKE) + self.state = 5238 + self.privelegeClause() + self.state = 5243 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5239 + self.match(MySqlParser.COMMA) + self.state = 5240 + self.privelegeClause() + self.state = 5245 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5246 + self.match(MySqlParser.ON) + self.state = 5248 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,774,self._ctx) + if la_ == 1: + self.state = 5247 + localctx.privilegeObject = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==131 or _la==172 or _la==437): + localctx.privilegeObject = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5250 + self.privilegeLevel() + self.state = 5251 + self.match(MySqlParser.FROM) + self.state = 5252 + self.userName() + self.state = 5257 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5253 + self.match(MySqlParser.COMMA) + self.state = 5254 + self.userName() + self.state = 5259 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.ShortRevokeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5260 + self.match(MySqlParser.REVOKE) + self.state = 5261 + self.match(MySqlParser.ALL) + self.state = 5263 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==725: + self.state = 5262 + self.match(MySqlParser.PRIVILEGES) + + + self.state = 5265 + self.match(MySqlParser.COMMA) + self.state = 5266 + self.match(MySqlParser.GRANT) + self.state = 5267 + self.match(MySqlParser.OPTION) + self.state = 5268 + self.match(MySqlParser.FROM) + self.state = 5269 + self.userName() + self.state = 5274 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5270 + self.match(MySqlParser.COMMA) + self.state = 5271 + self.userName() + self.state = 5276 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 3: + localctx = MySqlParser.RoleRevokeContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 5277 + self.match(MySqlParser.REVOKE) + self.state = 5280 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,778,self._ctx) + if la_ == 1: + self.state = 5278 + self.userName() + pass + + elif la_ == 2: + self.state = 5279 + self.uid() + pass + + + self.state = 5289 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5282 + self.match(MySqlParser.COMMA) + self.state = 5285 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,779,self._ctx) + if la_ == 1: + self.state = 5283 + self.userName() + pass + + elif la_ == 2: + self.state = 5284 + self.uid() + pass + + + self.state = 5291 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5292 + self.match(MySqlParser.FROM) + self.state = 5295 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,781,self._ctx) + if la_ == 1: + self.state = 5293 + self.userName() + pass + + elif la_ == 2: + self.state = 5294 + self.uid() + pass + + + self.state = 5304 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5297 + self.match(MySqlParser.COMMA) + self.state = 5300 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,782,self._ctx) + if la_ == 1: + self.state = 5298 + self.userName() + pass + + elif la_ == 2: + self.state = 5299 + self.uid() + pass + + + self.state = 5306 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RevokeProxyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.onUser = None # UserNameContext + self.fromFirst = None # UserNameContext + self._userName = None # UserNameContext + self.fromOther = list() # of UserNameContexts + + def REVOKE(self): + return self.getToken(MySqlParser.REVOKE, 0) + + def PROXY(self): + return self.getToken(MySqlParser.PROXY, 0) + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_revokeProxy + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRevokeProxy" ): + listener.enterRevokeProxy(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRevokeProxy" ): + listener.exitRevokeProxy(self) + + + + + def revokeProxy(self): + + localctx = MySqlParser.RevokeProxyContext(self, self._ctx, self.state) + self.enterRule(localctx, 440, self.RULE_revokeProxy) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5309 + self.match(MySqlParser.REVOKE) + self.state = 5310 + self.match(MySqlParser.PROXY) + self.state = 5311 + self.match(MySqlParser.ON) + self.state = 5312 + localctx.onUser = self.userName() + self.state = 5313 + self.match(MySqlParser.FROM) + self.state = 5314 + localctx.fromFirst = self.userName() + self.state = 5319 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5315 + self.match(MySqlParser.COMMA) + self.state = 5316 + localctx._userName = self.userName() + localctx.fromOther.append(localctx._userName) + self.state = 5321 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetPasswordStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def passwordFunctionClause(self): + return self.getTypedRuleContext(MySqlParser.PasswordFunctionClauseContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_setPasswordStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetPasswordStatement" ): + listener.enterSetPasswordStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetPasswordStatement" ): + listener.exitSetPasswordStatement(self) + + + + + def setPasswordStatement(self): + + localctx = MySqlParser.SetPasswordStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 442, self.RULE_setPasswordStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5322 + self.match(MySqlParser.SET) + self.state = 5323 + self.match(MySqlParser.PASSWORD) + self.state = 5326 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 5324 + self.match(MySqlParser.FOR) + self.state = 5325 + self.userName() + + + self.state = 5328 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 5331 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [535, 551]: + self.state = 5329 + self.passwordFunctionClause() + pass + elif token in [1148]: + self.state = 5330 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserSpecificationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def userPasswordOption(self): + return self.getTypedRuleContext(MySqlParser.UserPasswordOptionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_userSpecification + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserSpecification" ): + listener.enterUserSpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserSpecification" ): + listener.exitUserSpecification(self) + + + + + def userSpecification(self): + + localctx = MySqlParser.UserSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 444, self.RULE_userSpecification) + try: + self.enterOuterAlt(localctx, 1) + self.state = 5333 + self.userName() + self.state = 5334 + self.userPasswordOption() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserAuthOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_userAuthOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SimpleAuthOptionContext(UserAuthOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UserAuthOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleAuthOption" ): + listener.enterSimpleAuthOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleAuthOption" ): + listener.exitSimpleAuthOption(self) + + + class ModuleAuthOptionContext(UserAuthOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UserAuthOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + def authenticationRule(self): + return self.getTypedRuleContext(MySqlParser.AuthenticationRuleContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModuleAuthOption" ): + listener.enterModuleAuthOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModuleAuthOption" ): + listener.exitModuleAuthOption(self) + + + class RandomAuthOptionContext(UserAuthOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UserAuthOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + def BY(self): + return self.getToken(MySqlParser.BY, 0) + def RANDOM(self): + return self.getToken(MySqlParser.RANDOM, 0) + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + def authOptionClause(self): + return self.getTypedRuleContext(MySqlParser.AuthOptionClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRandomAuthOption" ): + listener.enterRandomAuthOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRandomAuthOption" ): + listener.exitRandomAuthOption(self) + + + class StringAuthOptionContext(UserAuthOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UserAuthOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + def BY(self): + return self.getToken(MySqlParser.BY, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def authOptionClause(self): + return self.getTypedRuleContext(MySqlParser.AuthOptionClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStringAuthOption" ): + listener.enterStringAuthOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStringAuthOption" ): + listener.exitStringAuthOption(self) + + + class HashAuthOptionContext(UserAuthOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.UserAuthOptionContext + super().__init__(parser) + self.hashed = None # Token + self.copyFrom(ctx) + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + def BY(self): + return self.getToken(MySqlParser.BY, 0) + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHashAuthOption" ): + listener.enterHashAuthOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHashAuthOption" ): + listener.exitHashAuthOption(self) + + + + def userAuthOption(self): + + localctx = MySqlParser.UserAuthOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 446, self.RULE_userAuthOption) + try: + self.state = 5361 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,788,self._ctx) + if la_ == 1: + localctx = MySqlParser.HashAuthOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5336 + self.userName() + self.state = 5337 + self.match(MySqlParser.IDENTIFIED) + self.state = 5338 + self.match(MySqlParser.BY) + self.state = 5339 + self.match(MySqlParser.PASSWORD) + self.state = 5340 + localctx.hashed = self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 2: + localctx = MySqlParser.RandomAuthOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5342 + self.userName() + self.state = 5343 + self.match(MySqlParser.IDENTIFIED) + self.state = 5344 + self.match(MySqlParser.BY) + self.state = 5345 + self.match(MySqlParser.RANDOM) + self.state = 5346 + self.match(MySqlParser.PASSWORD) + self.state = 5347 + self.authOptionClause() + pass + + elif la_ == 3: + localctx = MySqlParser.StringAuthOptionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 5349 + self.userName() + self.state = 5350 + self.match(MySqlParser.IDENTIFIED) + self.state = 5351 + self.match(MySqlParser.BY) + self.state = 5352 + self.match(MySqlParser.STRING_LITERAL) + self.state = 5353 + self.authOptionClause() + pass + + elif la_ == 4: + localctx = MySqlParser.ModuleAuthOptionContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 5355 + self.userName() + self.state = 5356 + self.match(MySqlParser.IDENTIFIED) + self.state = 5357 + self.match(MySqlParser.WITH) + self.state = 5358 + self.authenticationRule() + pass + + elif la_ == 5: + localctx = MySqlParser.SimpleAuthOptionContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 5360 + self.userName() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AuthOptionClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def RETAIN(self): + return self.getToken(MySqlParser.RETAIN, 0) + + def CURRENT(self): + return self.getToken(MySqlParser.CURRENT, 0) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_authOptionClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAuthOptionClause" ): + listener.enterAuthOptionClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAuthOptionClause" ): + listener.exitAuthOptionClause(self) + + + + + def authOptionClause(self): + + localctx = MySqlParser.AuthOptionClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 448, self.RULE_authOptionClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5365 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,789,self._ctx) + if la_ == 1: + self.state = 5363 + self.match(MySqlParser.REPLACE) + self.state = 5364 + self.match(MySqlParser.STRING_LITERAL) + + + self.state = 5370 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==145: + self.state = 5367 + self.match(MySqlParser.RETAIN) + self.state = 5368 + self.match(MySqlParser.CURRENT) + self.state = 5369 + self.match(MySqlParser.PASSWORD) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AuthenticationRuleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_authenticationRule + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PasswordModuleOptionContext(AuthenticationRuleContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AuthenticationRuleContext + super().__init__(parser) + self.copyFrom(ctx) + + def authPlugin(self): + return self.getTypedRuleContext(MySqlParser.AuthPluginContext,0) + + def USING(self): + return self.getToken(MySqlParser.USING, 0) + def passwordFunctionClause(self): + return self.getTypedRuleContext(MySqlParser.PasswordFunctionClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPasswordModuleOption" ): + listener.enterPasswordModuleOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPasswordModuleOption" ): + listener.exitPasswordModuleOption(self) + + + class ModuleContext(AuthenticationRuleContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.AuthenticationRuleContext + super().__init__(parser) + self.copyFrom(ctx) + + def authPlugin(self): + return self.getTypedRuleContext(MySqlParser.AuthPluginContext,0) + + def authOptionClause(self): + return self.getTypedRuleContext(MySqlParser.AuthOptionClauseContext,0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + def USING(self): + return self.getToken(MySqlParser.USING, 0) + def AS(self): + return self.getToken(MySqlParser.AS, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def RANDOM(self): + return self.getToken(MySqlParser.RANDOM, 0) + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModule" ): + listener.enterModule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModule" ): + listener.exitModule(self) + + + + def authenticationRule(self): + + localctx = MySqlParser.AuthenticationRuleContext(self, self._ctx, self.state) + self.enterRule(localctx, 450, self.RULE_authenticationRule) + self._la = 0 # Token type + try: + self.state = 5386 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,793,self._ctx) + if la_ == 1: + localctx = MySqlParser.ModuleContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5372 + self.authPlugin() + self.state = 5380 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,792,self._ctx) + if la_ == 1: + self.state = 5373 + _la = self._input.LA(1) + if not(_la==12 or _la==19 or _la==187): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5377 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1148]: + self.state = 5374 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [991]: + self.state = 5375 + self.match(MySqlParser.RANDOM) + self.state = 5376 + self.match(MySqlParser.PASSWORD) + pass + else: + raise NoViableAltException(self) + + self.state = 5379 + self.authOptionClause() + + + pass + + elif la_ == 2: + localctx = MySqlParser.PasswordModuleOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5382 + self.authPlugin() + self.state = 5383 + self.match(MySqlParser.USING) + self.state = 5384 + self.passwordFunctionClause() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TlsOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SSL(self): + return self.getToken(MySqlParser.SSL, 0) + + def X509(self): + return self.getToken(MySqlParser.X509, 0) + + def CIPHER(self): + return self.getToken(MySqlParser.CIPHER, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def ISSUER(self): + return self.getToken(MySqlParser.ISSUER, 0) + + def SUBJECT(self): + return self.getToken(MySqlParser.SUBJECT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_tlsOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTlsOption" ): + listener.enterTlsOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTlsOption" ): + listener.exitTlsOption(self) + + + + + def tlsOption(self): + + localctx = MySqlParser.TlsOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 452, self.RULE_tlsOption) + try: + self.state = 5396 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [167]: + self.enterOuterAlt(localctx, 1) + self.state = 5388 + self.match(MySqlParser.SSL) + pass + elif token in [680]: + self.enterOuterAlt(localctx, 2) + self.state = 5389 + self.match(MySqlParser.X509) + pass + elif token in [358]: + self.enterOuterAlt(localctx, 3) + self.state = 5390 + self.match(MySqlParser.CIPHER) + self.state = 5391 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [465]: + self.enterOuterAlt(localctx, 4) + self.state = 5392 + self.match(MySqlParser.ISSUER) + self.state = 5393 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [640]: + self.enterOuterAlt(localctx, 5) + self.state = 5394 + self.match(MySqlParser.SUBJECT) + self.state = 5395 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserResourceOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MAX_QUERIES_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def MAX_UPDATES_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0) + + def MAX_CONNECTIONS_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0) + + def MAX_USER_CONNECTIONS(self): + return self.getToken(MySqlParser.MAX_USER_CONNECTIONS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_userResourceOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserResourceOption" ): + listener.enterUserResourceOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserResourceOption" ): + listener.exitUserResourceOption(self) + + + + + def userResourceOption(self): + + localctx = MySqlParser.UserResourceOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 454, self.RULE_userResourceOption) + try: + self.state = 5406 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [499]: + self.enterOuterAlt(localctx, 1) + self.state = 5398 + self.match(MySqlParser.MAX_QUERIES_PER_HOUR) + self.state = 5399 + self.decimalLiteral() + pass + elif token in [502]: + self.enterOuterAlt(localctx, 2) + self.state = 5400 + self.match(MySqlParser.MAX_UPDATES_PER_HOUR) + self.state = 5401 + self.decimalLiteral() + pass + elif token in [498]: + self.enterOuterAlt(localctx, 3) + self.state = 5402 + self.match(MySqlParser.MAX_CONNECTIONS_PER_HOUR) + self.state = 5403 + self.decimalLiteral() + pass + elif token in [503]: + self.enterOuterAlt(localctx, 4) + self.state = 5404 + self.match(MySqlParser.MAX_USER_CONNECTIONS) + self.state = 5405 + self.decimalLiteral() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserPasswordOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.expireType = None # Token + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def EXPIRE(self): + return self.getToken(MySqlParser.EXPIRE, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def DAY(self): + return self.getToken(MySqlParser.DAY, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def NEVER(self): + return self.getToken(MySqlParser.NEVER, 0) + + def INTERVAL(self): + return self.getToken(MySqlParser.INTERVAL, 0) + + def HISTORY(self): + return self.getToken(MySqlParser.HISTORY, 0) + + def REUSE(self): + return self.getToken(MySqlParser.REUSE, 0) + + def REQUIRE(self): + return self.getToken(MySqlParser.REQUIRE, 0) + + def CURRENT(self): + return self.getToken(MySqlParser.CURRENT, 0) + + def OPTIONAL(self): + return self.getToken(MySqlParser.OPTIONAL, 0) + + def FAILED_LOGIN_ATTEMPTS(self): + return self.getToken(MySqlParser.FAILED_LOGIN_ATTEMPTS, 0) + + def PASSWORD_LOCK_TIME(self): + return self.getToken(MySqlParser.PASSWORD_LOCK_TIME, 0) + + def UNBOUNDED(self): + return self.getToken(MySqlParser.UNBOUNDED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_userPasswordOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserPasswordOption" ): + listener.enterUserPasswordOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserPasswordOption" ): + listener.exitUserPasswordOption(self) + + + + + def userPasswordOption(self): + + localctx = MySqlParser.UserPasswordOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 456, self.RULE_userPasswordOption) + self._la = 0 # Token type + try: + self.state = 5446 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,801,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 5408 + self.match(MySqlParser.PASSWORD) + self.state = 5409 + self.match(MySqlParser.EXPIRE) + self.state = 5416 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [42]: + self.state = 5410 + localctx.expireType = self.match(MySqlParser.DEFAULT) + pass + elif token in [519]: + self.state = 5411 + localctx.expireType = self.match(MySqlParser.NEVER) + pass + elif token in [86]: + self.state = 5412 + localctx.expireType = self.match(MySqlParser.INTERVAL) + self.state = 5413 + self.decimalLiteral() + self.state = 5414 + self.match(MySqlParser.DAY) + pass + elif token in [-1, 7, 9, 14, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 332, 344, 345, 351, 356, 368, 369, 390, 399, 424, 432, 442, 444, 456, 551, 552, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1135, 1136]: + pass + else: + pass + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 5418 + self.match(MySqlParser.PASSWORD) + self.state = 5419 + self.match(MySqlParser.HISTORY) + self.state = 5422 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [42]: + self.state = 5420 + self.match(MySqlParser.DEFAULT) + pass + elif token in [1138, 1139, 1140, 1149, 1151]: + self.state = 5421 + self.decimalLiteral() + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 5424 + self.match(MySqlParser.PASSWORD) + self.state = 5425 + self.match(MySqlParser.REUSE) + self.state = 5426 + self.match(MySqlParser.INTERVAL) + self.state = 5431 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [42]: + self.state = 5427 + self.match(MySqlParser.DEFAULT) + pass + elif token in [1138, 1139, 1140, 1149, 1151]: + self.state = 5428 + self.decimalLiteral() + self.state = 5429 + self.match(MySqlParser.DAY) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 5433 + self.match(MySqlParser.PASSWORD) + self.state = 5434 + self.match(MySqlParser.REQUIRE) + self.state = 5435 + self.match(MySqlParser.CURRENT) + self.state = 5437 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42 or _la==121: + self.state = 5436 + _la = self._input.LA(1) + if not(_la==42 or _la==121): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 5439 + self.match(MySqlParser.FAILED_LOGIN_ATTEMPTS) + self.state = 5440 + self.decimalLiteral() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 5441 + self.match(MySqlParser.PASSWORD_LOCK_TIME) + self.state = 5444 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + self.state = 5442 + self.decimalLiteral() + pass + elif token in [657]: + self.state = 5443 + self.match(MySqlParser.UNBOUNDED) + pass + else: + raise NoViableAltException(self) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserLockOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.lockType = None # Token + + def ACCOUNT(self): + return self.getToken(MySqlParser.ACCOUNT, 0) + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + + def UNLOCK(self): + return self.getToken(MySqlParser.UNLOCK, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_userLockOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserLockOption" ): + listener.enterUserLockOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserLockOption" ): + listener.exitUserLockOption(self) + + + + + def userLockOption(self): + + localctx = MySqlParser.UserLockOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 458, self.RULE_userLockOption) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5448 + self.match(MySqlParser.ACCOUNT) + self.state = 5449 + localctx.lockType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==103 or _la==182): + localctx.lockType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrivelegeClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def privilege(self): + return self.getTypedRuleContext(MySqlParser.PrivilegeContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_privelegeClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrivelegeClause" ): + listener.enterPrivelegeClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrivelegeClause" ): + listener.exitPrivelegeClause(self) + + + + + def privelegeClause(self): + + localctx = MySqlParser.PrivelegeClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 460, self.RULE_privelegeClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5451 + self.privilege() + self.state = 5456 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 5452 + self.match(MySqlParser.LR_BRACKET) + self.state = 5453 + self.uidList() + self.state = 5454 + self.match(MySqlParser.RR_BRACKET) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrivilegeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def PRIVILEGES(self): + return self.getToken(MySqlParser.PRIVILEGES, 0) + + def ALTER(self): + return self.getToken(MySqlParser.ALTER, 0) + + def ROUTINE(self): + return self.getToken(MySqlParser.ROUTINE, 0) + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def DELETE(self): + return self.getToken(MySqlParser.DELETE, 0) + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + + def EXECUTE(self): + return self.getToken(MySqlParser.EXECUTE, 0) + + def FILE(self): + return self.getToken(MySqlParser.FILE, 0) + + def GRANT(self): + return self.getToken(MySqlParser.GRANT, 0) + + def OPTION(self): + return self.getToken(MySqlParser.OPTION, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def INSERT(self): + return self.getToken(MySqlParser.INSERT, 0) + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + + def PROCESS(self): + return self.getToken(MySqlParser.PROCESS, 0) + + def PROXY(self): + return self.getToken(MySqlParser.PROXY, 0) + + def REFERENCES(self): + return self.getToken(MySqlParser.REFERENCES, 0) + + def RELOAD(self): + return self.getToken(MySqlParser.RELOAD, 0) + + def REPLICATION(self): + return self.getToken(MySqlParser.REPLICATION, 0) + + def CLIENT(self): + return self.getToken(MySqlParser.CLIENT, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def SELECT(self): + return self.getToken(MySqlParser.SELECT, 0) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + + def DATABASES(self): + return self.getToken(MySqlParser.DATABASES, 0) + + def SHUTDOWN(self): + return self.getToken(MySqlParser.SHUTDOWN, 0) + + def SUPER(self): + return self.getToken(MySqlParser.SUPER, 0) + + def TRIGGER(self): + return self.getToken(MySqlParser.TRIGGER, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def USAGE(self): + return self.getToken(MySqlParser.USAGE, 0) + + def APPLICATION_PASSWORD_ADMIN(self): + return self.getToken(MySqlParser.APPLICATION_PASSWORD_ADMIN, 0) + + def AUDIT_ABORT_EXEMPT(self): + return self.getToken(MySqlParser.AUDIT_ABORT_EXEMPT, 0) + + def AUDIT_ADMIN(self): + return self.getToken(MySqlParser.AUDIT_ADMIN, 0) + + def AUTHENTICATION_POLICY_ADMIN(self): + return self.getToken(MySqlParser.AUTHENTICATION_POLICY_ADMIN, 0) + + def BACKUP_ADMIN(self): + return self.getToken(MySqlParser.BACKUP_ADMIN, 0) + + def BINLOG_ADMIN(self): + return self.getToken(MySqlParser.BINLOG_ADMIN, 0) + + def BINLOG_ENCRYPTION_ADMIN(self): + return self.getToken(MySqlParser.BINLOG_ENCRYPTION_ADMIN, 0) + + def CLONE_ADMIN(self): + return self.getToken(MySqlParser.CLONE_ADMIN, 0) + + def CONNECTION_ADMIN(self): + return self.getToken(MySqlParser.CONNECTION_ADMIN, 0) + + def ENCRYPTION_KEY_ADMIN(self): + return self.getToken(MySqlParser.ENCRYPTION_KEY_ADMIN, 0) + + def FIREWALL_ADMIN(self): + return self.getToken(MySqlParser.FIREWALL_ADMIN, 0) + + def FIREWALL_EXEMPT(self): + return self.getToken(MySqlParser.FIREWALL_EXEMPT, 0) + + def FIREWALL_USER(self): + return self.getToken(MySqlParser.FIREWALL_USER, 0) + + def FLUSH_OPTIMIZER_COSTS(self): + return self.getToken(MySqlParser.FLUSH_OPTIMIZER_COSTS, 0) + + def FLUSH_STATUS(self): + return self.getToken(MySqlParser.FLUSH_STATUS, 0) + + def FLUSH_TABLES(self): + return self.getToken(MySqlParser.FLUSH_TABLES, 0) + + def FLUSH_USER_RESOURCES(self): + return self.getToken(MySqlParser.FLUSH_USER_RESOURCES, 0) + + def GROUP_REPLICATION_ADMIN(self): + return self.getToken(MySqlParser.GROUP_REPLICATION_ADMIN, 0) + + def INNODB_REDO_LOG_ARCHIVE(self): + return self.getToken(MySqlParser.INNODB_REDO_LOG_ARCHIVE, 0) + + def INNODB_REDO_LOG_ENABLE(self): + return self.getToken(MySqlParser.INNODB_REDO_LOG_ENABLE, 0) + + def NDB_STORED_USER(self): + return self.getToken(MySqlParser.NDB_STORED_USER, 0) + + def PASSWORDLESS_USER_ADMIN(self): + return self.getToken(MySqlParser.PASSWORDLESS_USER_ADMIN, 0) + + def PERSIST_RO_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.PERSIST_RO_VARIABLES_ADMIN, 0) + + def REPLICATION_APPLIER(self): + return self.getToken(MySqlParser.REPLICATION_APPLIER, 0) + + def REPLICATION_SLAVE_ADMIN(self): + return self.getToken(MySqlParser.REPLICATION_SLAVE_ADMIN, 0) + + def RESOURCE_GROUP_ADMIN(self): + return self.getToken(MySqlParser.RESOURCE_GROUP_ADMIN, 0) + + def RESOURCE_GROUP_USER(self): + return self.getToken(MySqlParser.RESOURCE_GROUP_USER, 0) + + def ROLE_ADMIN(self): + return self.getToken(MySqlParser.ROLE_ADMIN, 0) + + def SERVICE_CONNECTION_ADMIN(self): + return self.getToken(MySqlParser.SERVICE_CONNECTION_ADMIN, 0) + + def SESSION_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0) + + def SET_USER_ID(self): + return self.getToken(MySqlParser.SET_USER_ID, 0) + + def SKIP_QUERY_REWRITE(self): + return self.getToken(MySqlParser.SKIP_QUERY_REWRITE, 0) + + def SHOW_ROUTINE(self): + return self.getToken(MySqlParser.SHOW_ROUTINE, 0) + + def SYSTEM_USER(self): + return self.getToken(MySqlParser.SYSTEM_USER, 0) + + def SYSTEM_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.SYSTEM_VARIABLES_ADMIN, 0) + + def TABLE_ENCRYPTION_ADMIN(self): + return self.getToken(MySqlParser.TABLE_ENCRYPTION_ADMIN, 0) + + def TP_CONNECTION_ADMIN(self): + return self.getToken(MySqlParser.TP_CONNECTION_ADMIN, 0) + + def VERSION_TOKEN_ADMIN(self): + return self.getToken(MySqlParser.VERSION_TOKEN_ADMIN, 0) + + def XA_RECOVER_ADMIN(self): + return self.getToken(MySqlParser.XA_RECOVER_ADMIN, 0) + + def LOAD(self): + return self.getToken(MySqlParser.LOAD, 0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + + def S3(self): + return self.getToken(MySqlParser.S3, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def INVOKE(self): + return self.getToken(MySqlParser.INVOKE, 0) + + def LAMBDA(self): + return self.getToken(MySqlParser.LAMBDA, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_privilege + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrivilege" ): + listener.enterPrivilege(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrivilege" ): + listener.exitPrivilege(self) + + + + + def privilege(self): + + localctx = MySqlParser.PrivilegeContext(self, self._ctx, self.state) + self.enterRule(localctx, 462, self.RULE_privilege) + self._la = 0 # Token type + try: + self.state = 5551 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,807,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 5458 + self.match(MySqlParser.ALL) + self.state = 5460 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==725: + self.state = 5459 + self.match(MySqlParser.PRIVILEGES) + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 5462 + self.match(MySqlParser.ALTER) + self.state = 5464 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==733: + self.state = 5463 + self.match(MySqlParser.ROUTINE) + + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 5466 + self.match(MySqlParser.CREATE) + self.state = 5474 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [649]: + self.state = 5467 + self.match(MySqlParser.TEMPORARY) + self.state = 5468 + self.match(MySqlParser.TABLES) + pass + elif token in [733]: + self.state = 5469 + self.match(MySqlParser.ROUTINE) + pass + elif token in [671]: + self.state = 5470 + self.match(MySqlParser.VIEW) + pass + elif token in [665]: + self.state = 5471 + self.match(MySqlParser.USER) + pass + elif token in [647]: + self.state = 5472 + self.match(MySqlParser.TABLESPACE) + pass + elif token in [596]: + self.state = 5473 + self.match(MySqlParser.ROLE) + pass + elif token in [118, 1133, 1135]: + pass + else: + pass + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 5476 + self.match(MySqlParser.DELETE) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 5477 + self.match(MySqlParser.DROP) + self.state = 5479 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==596: + self.state = 5478 + self.match(MySqlParser.ROLE) + + + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 5481 + self.match(MySqlParser.EVENT) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 5482 + self.match(MySqlParser.EXECUTE) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 5483 + self.match(MySqlParser.FILE) + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 5484 + self.match(MySqlParser.GRANT) + self.state = 5485 + self.match(MySqlParser.OPTION) + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 5486 + self.match(MySqlParser.INDEX) + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 5487 + self.match(MySqlParser.INSERT) + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 5488 + self.match(MySqlParser.LOCK) + self.state = 5489 + self.match(MySqlParser.TABLES) + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 5490 + self.match(MySqlParser.PROCESS) + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 5491 + self.match(MySqlParser.PROXY) + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 5492 + self.match(MySqlParser.REFERENCES) + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 5493 + self.match(MySqlParser.RELOAD) + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 5494 + self.match(MySqlParser.REPLICATION) + self.state = 5495 + _la = self._input.LA(1) + if not(_la==360 or _la==614): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 5496 + self.match(MySqlParser.SELECT) + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 5497 + self.match(MySqlParser.SHOW) + self.state = 5498 + _la = self._input.LA(1) + if not(_la==40 or _la==671): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 5499 + self.match(MySqlParser.SHUTDOWN) + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 5500 + self.match(MySqlParser.SUPER) + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 5501 + self.match(MySqlParser.TRIGGER) + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 5502 + self.match(MySqlParser.UPDATE) + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 5503 + self.match(MySqlParser.USAGE) + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 5504 + self.match(MySqlParser.APPLICATION_PASSWORD_ADMIN) + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 5505 + self.match(MySqlParser.AUDIT_ABORT_EXEMPT) + pass + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 5506 + self.match(MySqlParser.AUDIT_ADMIN) + pass + + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 5507 + self.match(MySqlParser.AUTHENTICATION_POLICY_ADMIN) + pass + + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 5508 + self.match(MySqlParser.BACKUP_ADMIN) + pass + + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 5509 + self.match(MySqlParser.BINLOG_ADMIN) + pass + + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 5510 + self.match(MySqlParser.BINLOG_ENCRYPTION_ADMIN) + pass + + elif la_ == 32: + self.enterOuterAlt(localctx, 32) + self.state = 5511 + self.match(MySqlParser.CLONE_ADMIN) + pass + + elif la_ == 33: + self.enterOuterAlt(localctx, 33) + self.state = 5512 + self.match(MySqlParser.CONNECTION_ADMIN) + pass + + elif la_ == 34: + self.enterOuterAlt(localctx, 34) + self.state = 5513 + self.match(MySqlParser.ENCRYPTION_KEY_ADMIN) + pass + + elif la_ == 35: + self.enterOuterAlt(localctx, 35) + self.state = 5514 + self.match(MySqlParser.FIREWALL_ADMIN) + pass + + elif la_ == 36: + self.enterOuterAlt(localctx, 36) + self.state = 5515 + self.match(MySqlParser.FIREWALL_EXEMPT) + pass + + elif la_ == 37: + self.enterOuterAlt(localctx, 37) + self.state = 5516 + self.match(MySqlParser.FIREWALL_USER) + pass + + elif la_ == 38: + self.enterOuterAlt(localctx, 38) + self.state = 5517 + self.match(MySqlParser.FLUSH_OPTIMIZER_COSTS) + pass + + elif la_ == 39: + self.enterOuterAlt(localctx, 39) + self.state = 5518 + self.match(MySqlParser.FLUSH_STATUS) + pass + + elif la_ == 40: + self.enterOuterAlt(localctx, 40) + self.state = 5519 + self.match(MySqlParser.FLUSH_TABLES) + pass + + elif la_ == 41: + self.enterOuterAlt(localctx, 41) + self.state = 5520 + self.match(MySqlParser.FLUSH_USER_RESOURCES) + pass + + elif la_ == 42: + self.enterOuterAlt(localctx, 42) + self.state = 5521 + self.match(MySqlParser.GROUP_REPLICATION_ADMIN) + pass + + elif la_ == 43: + self.enterOuterAlt(localctx, 43) + self.state = 5522 + self.match(MySqlParser.INNODB_REDO_LOG_ARCHIVE) + pass + + elif la_ == 44: + self.enterOuterAlt(localctx, 44) + self.state = 5523 + self.match(MySqlParser.INNODB_REDO_LOG_ENABLE) + pass + + elif la_ == 45: + self.enterOuterAlt(localctx, 45) + self.state = 5524 + self.match(MySqlParser.NDB_STORED_USER) + pass + + elif la_ == 46: + self.enterOuterAlt(localctx, 46) + self.state = 5525 + self.match(MySqlParser.PASSWORDLESS_USER_ADMIN) + pass + + elif la_ == 47: + self.enterOuterAlt(localctx, 47) + self.state = 5526 + self.match(MySqlParser.PERSIST_RO_VARIABLES_ADMIN) + pass + + elif la_ == 48: + self.enterOuterAlt(localctx, 48) + self.state = 5527 + self.match(MySqlParser.REPLICATION_APPLIER) + pass + + elif la_ == 49: + self.enterOuterAlt(localctx, 49) + self.state = 5528 + self.match(MySqlParser.REPLICATION_SLAVE_ADMIN) + pass + + elif la_ == 50: + self.enterOuterAlt(localctx, 50) + self.state = 5529 + self.match(MySqlParser.RESOURCE_GROUP_ADMIN) + pass + + elif la_ == 51: + self.enterOuterAlt(localctx, 51) + self.state = 5530 + self.match(MySqlParser.RESOURCE_GROUP_USER) + pass + + elif la_ == 52: + self.enterOuterAlt(localctx, 52) + self.state = 5531 + self.match(MySqlParser.ROLE_ADMIN) + pass + + elif la_ == 53: + self.enterOuterAlt(localctx, 53) + self.state = 5532 + self.match(MySqlParser.SERVICE_CONNECTION_ADMIN) + pass + + elif la_ == 54: + self.enterOuterAlt(localctx, 54) + self.state = 5533 + self.match(MySqlParser.SESSION_VARIABLES_ADMIN) + pass + + elif la_ == 55: + self.enterOuterAlt(localctx, 55) + self.state = 5534 + self.match(MySqlParser.SET_USER_ID) + pass + + elif la_ == 56: + self.enterOuterAlt(localctx, 56) + self.state = 5535 + self.match(MySqlParser.SKIP_QUERY_REWRITE) + pass + + elif la_ == 57: + self.enterOuterAlt(localctx, 57) + self.state = 5536 + self.match(MySqlParser.SHOW_ROUTINE) + pass + + elif la_ == 58: + self.enterOuterAlt(localctx, 58) + self.state = 5537 + self.match(MySqlParser.SYSTEM_USER) + pass + + elif la_ == 59: + self.enterOuterAlt(localctx, 59) + self.state = 5538 + self.match(MySqlParser.SYSTEM_VARIABLES_ADMIN) + pass + + elif la_ == 60: + self.enterOuterAlt(localctx, 60) + self.state = 5539 + self.match(MySqlParser.TABLE_ENCRYPTION_ADMIN) + pass + + elif la_ == 61: + self.enterOuterAlt(localctx, 61) + self.state = 5540 + self.match(MySqlParser.TP_CONNECTION_ADMIN) + pass + + elif la_ == 62: + self.enterOuterAlt(localctx, 62) + self.state = 5541 + self.match(MySqlParser.VERSION_TOKEN_ADMIN) + pass + + elif la_ == 63: + self.enterOuterAlt(localctx, 63) + self.state = 5542 + self.match(MySqlParser.XA_RECOVER_ADMIN) + pass + + elif la_ == 64: + self.enterOuterAlt(localctx, 64) + self.state = 5543 + self.match(MySqlParser.LOAD) + self.state = 5544 + self.match(MySqlParser.FROM) + self.state = 5545 + self.match(MySqlParser.S3) + pass + + elif la_ == 65: + self.enterOuterAlt(localctx, 65) + self.state = 5546 + self.match(MySqlParser.SELECT) + self.state = 5547 + self.match(MySqlParser.INTO) + self.state = 5548 + self.match(MySqlParser.S3) + pass + + elif la_ == 66: + self.enterOuterAlt(localctx, 66) + self.state = 5549 + self.match(MySqlParser.INVOKE) + self.state = 5550 + self.match(MySqlParser.LAMBDA) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrivilegeLevelContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_privilegeLevel + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DefiniteSchemaPrivLevelContext(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefiniteSchemaPrivLevel" ): + listener.enterDefiniteSchemaPrivLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefiniteSchemaPrivLevel" ): + listener.exitDefiniteSchemaPrivLevel(self) + + + class DefiniteFullTablePrivLevel2Context(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def dottedId(self): + return self.getTypedRuleContext(MySqlParser.DottedIdContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefiniteFullTablePrivLevel2" ): + listener.enterDefiniteFullTablePrivLevel2(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefiniteFullTablePrivLevel2" ): + listener.exitDefiniteFullTablePrivLevel2(self) + + + class DefiniteFullTablePrivLevelContext(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefiniteFullTablePrivLevel" ): + listener.enterDefiniteFullTablePrivLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefiniteFullTablePrivLevel" ): + listener.exitDefiniteFullTablePrivLevel(self) + + + class GlobalPrivLevelContext(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def STAR(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STAR) + else: + return self.getToken(MySqlParser.STAR, i) + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGlobalPrivLevel" ): + listener.enterGlobalPrivLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGlobalPrivLevel" ): + listener.exitGlobalPrivLevel(self) + + + class DefiniteTablePrivLevelContext(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefiniteTablePrivLevel" ): + listener.enterDefiniteTablePrivLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefiniteTablePrivLevel" ): + listener.exitDefiniteTablePrivLevel(self) + + + class CurrentSchemaPriviLevelContext(PrivilegeLevelContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PrivilegeLevelContext + super().__init__(parser) + self.copyFrom(ctx) + + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCurrentSchemaPriviLevel" ): + listener.enterCurrentSchemaPriviLevel(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCurrentSchemaPriviLevel" ): + listener.exitCurrentSchemaPriviLevel(self) + + + + def privilegeLevel(self): + + localctx = MySqlParser.PrivilegeLevelContext(self, self._ctx, self.state) + self.enterRule(localctx, 464, self.RULE_privilegeLevel) + try: + self.state = 5569 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,808,self._ctx) + if la_ == 1: + localctx = MySqlParser.CurrentSchemaPriviLevelContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5553 + self.match(MySqlParser.STAR) + pass + + elif la_ == 2: + localctx = MySqlParser.GlobalPrivLevelContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5554 + self.match(MySqlParser.STAR) + self.state = 5555 + self.match(MySqlParser.DOT) + self.state = 5556 + self.match(MySqlParser.STAR) + pass + + elif la_ == 3: + localctx = MySqlParser.DefiniteSchemaPrivLevelContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 5557 + self.uid() + self.state = 5558 + self.match(MySqlParser.DOT) + self.state = 5559 + self.match(MySqlParser.STAR) + pass + + elif la_ == 4: + localctx = MySqlParser.DefiniteFullTablePrivLevelContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 5561 + self.uid() + self.state = 5562 + self.match(MySqlParser.DOT) + self.state = 5563 + self.uid() + pass + + elif la_ == 5: + localctx = MySqlParser.DefiniteFullTablePrivLevel2Context(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 5565 + self.uid() + self.state = 5566 + self.dottedId() + pass + + elif la_ == 6: + localctx = MySqlParser.DefiniteTablePrivLevelContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 5568 + self.uid() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RenameUserClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.fromFirst = None # UserNameContext + self.toFirst = None # UserNameContext + + def TO(self): + return self.getToken(MySqlParser.TO, 0) + + def userName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UserNameContext) + else: + return self.getTypedRuleContext(MySqlParser.UserNameContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_renameUserClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameUserClause" ): + listener.enterRenameUserClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameUserClause" ): + listener.exitRenameUserClause(self) + + + + + def renameUserClause(self): + + localctx = MySqlParser.RenameUserClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 466, self.RULE_renameUserClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 5571 + localctx.fromFirst = self.userName() + self.state = 5572 + self.match(MySqlParser.TO) + self.state = 5573 + localctx.toFirst = self.userName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AnalyzeTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.actionOption = None # Token + + def ANALYZE(self): + return self.getToken(MySqlParser.ANALYZE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def HISTOGRAM(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.HISTOGRAM) + else: + return self.getToken(MySqlParser.HISTOGRAM, i) + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + + def fullColumnName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullColumnNameContext) + else: + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,i) + + + def DROP(self): + return self.getToken(MySqlParser.DROP, 0) + + def NO_WRITE_TO_BINLOG(self): + return self.getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def BUCKETS(self): + return self.getToken(MySqlParser.BUCKETS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_analyzeTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnalyzeTable" ): + listener.enterAnalyzeTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnalyzeTable" ): + listener.exitAnalyzeTable(self) + + + + + def analyzeTable(self): + + localctx = MySqlParser.AnalyzeTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 468, self.RULE_analyzeTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5575 + self.match(MySqlParser.ANALYZE) + self.state = 5577 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==115 or _la==474: + self.state = 5576 + localctx.actionOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==115 or _la==474): + localctx.actionOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5579 + _la = self._input.LA(1) + if not(_la==172 or _la==742): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5580 + self.tables() + self.state = 5598 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,812,self._ctx) + if la_ == 1: + self.state = 5581 + self.match(MySqlParser.UPDATE) + self.state = 5582 + self.match(MySqlParser.HISTOGRAM) + self.state = 5583 + self.match(MySqlParser.ON) + self.state = 5584 + self.fullColumnName() + self.state = 5589 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5585 + self.match(MySqlParser.COMMA) + self.state = 5586 + self.fullColumnName() + self.state = 5591 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5596 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,811,self._ctx) + if la_ == 1: + self.state = 5592 + self.match(MySqlParser.WITH) + self.state = 5593 + self.decimalLiteral() + self.state = 5594 + self.match(MySqlParser.BUCKETS) + + + + + self.state = 5611 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,814,self._ctx) + if la_ == 1: + self.state = 5600 + self.match(MySqlParser.DROP) + self.state = 5601 + self.match(MySqlParser.HISTOGRAM) + self.state = 5602 + self.match(MySqlParser.ON) + self.state = 5603 + self.fullColumnName() + self.state = 5608 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5604 + self.match(MySqlParser.COMMA) + self.state = 5605 + self.fullColumnName() + self.state = 5610 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CheckTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHECK(self): + return self.getToken(MySqlParser.CHECK, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def checkTableOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CheckTableOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.CheckTableOptionContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_checkTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCheckTable" ): + listener.enterCheckTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCheckTable" ): + listener.exitCheckTable(self) + + + + + def checkTable(self): + + localctx = MySqlParser.CheckTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 470, self.RULE_checkTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5613 + self.match(MySqlParser.CHECK) + self.state = 5614 + self.match(MySqlParser.TABLE) + self.state = 5615 + self.tables() + self.state = 5619 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==65 or _la==354 or _la==422 or _la==425 or _la==504 or _la==568: + self.state = 5616 + self.checkTableOption() + self.state = 5621 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ChecksumTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.actionOption = None # Token + + def CHECKSUM(self): + return self.getToken(MySqlParser.CHECKSUM, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def EXTENDED(self): + return self.getToken(MySqlParser.EXTENDED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_checksumTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChecksumTable" ): + listener.enterChecksumTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChecksumTable" ): + listener.exitChecksumTable(self) + + + + + def checksumTable(self): + + localctx = MySqlParser.ChecksumTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 472, self.RULE_checksumTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5622 + self.match(MySqlParser.CHECKSUM) + self.state = 5623 + self.match(MySqlParser.TABLE) + self.state = 5624 + self.tables() + self.state = 5626 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==422 or _la==568: + self.state = 5625 + localctx.actionOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==422 or _la==568): + localctx.actionOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OptimizeTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.actionOption = None # Token + + def OPTIMIZE(self): + return self.getToken(MySqlParser.OPTIMIZE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def NO_WRITE_TO_BINLOG(self): + return self.getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_optimizeTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOptimizeTable" ): + listener.enterOptimizeTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOptimizeTable" ): + listener.exitOptimizeTable(self) + + + + + def optimizeTable(self): + + localctx = MySqlParser.OptimizeTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 474, self.RULE_optimizeTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5628 + self.match(MySqlParser.OPTIMIZE) + self.state = 5630 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==115 or _la==474: + self.state = 5629 + localctx.actionOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==115 or _la==474): + localctx.actionOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5632 + _la = self._input.LA(1) + if not(_la==172 or _la==742): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5633 + self.tables() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RepairTableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.actionOption = None # Token + + def REPAIR(self): + return self.getToken(MySqlParser.REPAIR, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def EXTENDED(self): + return self.getToken(MySqlParser.EXTENDED, 0) + + def USE_FRM(self): + return self.getToken(MySqlParser.USE_FRM, 0) + + def NO_WRITE_TO_BINLOG(self): + return self.getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_repairTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRepairTable" ): + listener.enterRepairTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRepairTable" ): + listener.exitRepairTable(self) + + + + + def repairTable(self): + + localctx = MySqlParser.RepairTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 476, self.RULE_repairTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5635 + self.match(MySqlParser.REPAIR) + self.state = 5637 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==115 or _la==474: + self.state = 5636 + localctx.actionOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==115 or _la==474): + localctx.actionOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5639 + self.match(MySqlParser.TABLE) + self.state = 5640 + self.tables() + self.state = 5642 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==568: + self.state = 5641 + self.match(MySqlParser.QUICK) + + + self.state = 5645 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==422: + self.state = 5644 + self.match(MySqlParser.EXTENDED) + + + self.state = 5648 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==666: + self.state = 5647 + self.match(MySqlParser.USE_FRM) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CheckTableOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def UPGRADE(self): + return self.getToken(MySqlParser.UPGRADE, 0) + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def FAST(self): + return self.getToken(MySqlParser.FAST, 0) + + def MEDIUM(self): + return self.getToken(MySqlParser.MEDIUM, 0) + + def EXTENDED(self): + return self.getToken(MySqlParser.EXTENDED, 0) + + def CHANGED(self): + return self.getToken(MySqlParser.CHANGED, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_checkTableOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCheckTableOption" ): + listener.enterCheckTableOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCheckTableOption" ): + listener.exitCheckTableOption(self) + + + + + def checkTableOption(self): + + localctx = MySqlParser.CheckTableOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 478, self.RULE_checkTableOption) + try: + self.state = 5657 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [65]: + self.enterOuterAlt(localctx, 1) + self.state = 5650 + self.match(MySqlParser.FOR) + self.state = 5651 + self.match(MySqlParser.UPGRADE) + pass + elif token in [568]: + self.enterOuterAlt(localctx, 2) + self.state = 5652 + self.match(MySqlParser.QUICK) + pass + elif token in [425]: + self.enterOuterAlt(localctx, 3) + self.state = 5653 + self.match(MySqlParser.FAST) + pass + elif token in [504]: + self.enterOuterAlt(localctx, 4) + self.state = 5654 + self.match(MySqlParser.MEDIUM) + pass + elif token in [422]: + self.enterOuterAlt(localctx, 5) + self.state = 5655 + self.match(MySqlParser.EXTENDED) + pass + elif token in [354]: + self.enterOuterAlt(localctx, 6) + self.state = 5656 + self.match(MySqlParser.CHANGED) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CreateUdfunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.returnType = None # Token + + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def RETURNS(self): + return self.getToken(MySqlParser.RETURNS, 0) + + def SONAME(self): + return self.getToken(MySqlParser.SONAME, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def STRING(self): + return self.getToken(MySqlParser.STRING, 0) + + def INTEGER(self): + return self.getToken(MySqlParser.INTEGER, 0) + + def REAL(self): + return self.getToken(MySqlParser.REAL, 0) + + def DECIMAL(self): + return self.getToken(MySqlParser.DECIMAL, 0) + + def AGGREGATE(self): + return self.getToken(MySqlParser.AGGREGATE, 0) + + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_createUdfunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateUdfunction" ): + listener.enterCreateUdfunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateUdfunction" ): + listener.exitCreateUdfunction(self) + + + + + def createUdfunction(self): + + localctx = MySqlParser.CreateUdfunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 480, self.RULE_createUdfunction) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5659 + self.match(MySqlParser.CREATE) + self.state = 5661 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==335: + self.state = 5660 + self.match(MySqlParser.AGGREGATE) + + + self.state = 5663 + self.match(MySqlParser.FUNCTION) + self.state = 5665 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,824,self._ctx) + if la_ == 1: + self.state = 5664 + self.ifNotExists() + + + self.state = 5667 + self.uid() + self.state = 5668 + self.match(MySqlParser.RETURNS) + self.state = 5669 + localctx.returnType = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 206)) & ~0x3f) == 0 and ((1 << (_la - 206)) & 261) != 0) or _la==638): + localctx.returnType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5670 + self.match(MySqlParser.SONAME) + self.state = 5671 + self.match(MySqlParser.STRING_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class InstallPluginContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INSTALL(self): + return self.getToken(MySqlParser.INSTALL, 0) + + def PLUGIN(self): + return self.getToken(MySqlParser.PLUGIN, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def SONAME(self): + return self.getToken(MySqlParser.SONAME, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_installPlugin + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInstallPlugin" ): + listener.enterInstallPlugin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInstallPlugin" ): + listener.exitInstallPlugin(self) + + + + + def installPlugin(self): + + localctx = MySqlParser.InstallPluginContext(self, self._ctx, self.state) + self.enterRule(localctx, 482, self.RULE_installPlugin) + try: + self.enterOuterAlt(localctx, 1) + self.state = 5673 + self.match(MySqlParser.INSTALL) + self.state = 5674 + self.match(MySqlParser.PLUGIN) + self.state = 5675 + self.uid() + self.state = 5676 + self.match(MySqlParser.SONAME) + self.state = 5677 + self.match(MySqlParser.STRING_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UninstallPluginContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def UNINSTALL(self): + return self.getToken(MySqlParser.UNINSTALL, 0) + + def PLUGIN(self): + return self.getToken(MySqlParser.PLUGIN, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_uninstallPlugin + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUninstallPlugin" ): + listener.enterUninstallPlugin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUninstallPlugin" ): + listener.exitUninstallPlugin(self) + + + + + def uninstallPlugin(self): + + localctx = MySqlParser.UninstallPluginContext(self, self._ctx, self.state) + self.enterRule(localctx, 484, self.RULE_uninstallPlugin) + try: + self.enterOuterAlt(localctx, 1) + self.state = 5679 + self.match(MySqlParser.UNINSTALL) + self.state = 5680 + self.match(MySqlParser.PLUGIN) + self.state = 5681 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SetStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_setStatement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SetTransactionContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def setTransactionStatement(self): + return self.getTypedRuleContext(MySqlParser.SetTransactionStatementContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetTransaction" ): + listener.enterSetTransaction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetTransaction" ): + listener.exitSetTransaction(self) + + + class SetCharsetContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetCharset" ): + listener.enterSetCharset(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetCharset" ): + listener.exitSetCharset(self) + + + class SetNamesContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def NAMES(self): + return self.getToken(MySqlParser.NAMES, 0) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetNames" ): + listener.enterSetNames(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetNames" ): + listener.exitSetNames(self) + + + class SetPasswordContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def setPasswordStatement(self): + return self.getTypedRuleContext(MySqlParser.SetPasswordStatementContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetPassword" ): + listener.enterSetPassword(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetPassword" ): + listener.exitSetPassword(self) + + + class SetAutocommitContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def setAutocommitStatement(self): + return self.getTypedRuleContext(MySqlParser.SetAutocommitStatementContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetAutocommit" ): + listener.enterSetAutocommit(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetAutocommit" ): + listener.exitSetAutocommit(self) + + + class SetNewValueInsideTriggerContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def fullId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullIdContext) + else: + return self.getTypedRuleContext(MySqlParser.FullIdContext,i) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + def VAR_ASSIGN(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.VAR_ASSIGN) + else: + return self.getToken(MySqlParser.VAR_ASSIGN, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetNewValueInsideTrigger" ): + listener.enterSetNewValueInsideTrigger(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetNewValueInsideTrigger" ): + listener.exitSetNewValueInsideTrigger(self) + + + class SetVariableContext(SetStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SetStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def variableClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.VariableClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.VariableClauseContext,i) + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + def VAR_ASSIGN(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.VAR_ASSIGN) + else: + return self.getToken(MySqlParser.VAR_ASSIGN, i) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def ON(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ON) + else: + return self.getToken(MySqlParser.ON, i) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetVariable" ): + listener.enterSetVariable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetVariable" ): + listener.exitSetVariable(self) + + + + def setStatement(self): + + localctx = MySqlParser.SetStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 486, self.RULE_setStatement) + self._la = 0 # Token type + try: + self.state = 5735 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,832,self._ctx) + if la_ == 1: + localctx = MySqlParser.SetVariableContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5683 + self.match(MySqlParser.SET) + self.state = 5684 + self.variableClause() + self.state = 5685 + _la = self._input.LA(1) + if not(_la==1108 or _la==1124): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5688 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,825,self._ctx) + if la_ == 1: + self.state = 5686 + self.expression(0) + pass + + elif la_ == 2: + self.state = 5687 + self.match(MySqlParser.ON) + pass + + + self.state = 5699 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5690 + self.match(MySqlParser.COMMA) + self.state = 5691 + self.variableClause() + self.state = 5692 + _la = self._input.LA(1) + if not(_la==1108 or _la==1124): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5695 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,826,self._ctx) + if la_ == 1: + self.state = 5693 + self.expression(0) + pass + + elif la_ == 2: + self.state = 5694 + self.match(MySqlParser.ON) + pass + + + self.state = 5701 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.SetCharsetContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5702 + self.match(MySqlParser.SET) + self.state = 5703 + self.charSet() + self.state = 5706 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [226, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 1145, 1148]: + self.state = 5704 + self.charsetName() + pass + elif token in [42]: + self.state = 5705 + self.match(MySqlParser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 3: + localctx = MySqlParser.SetNamesContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 5708 + self.match(MySqlParser.SET) + self.state = 5709 + self.match(MySqlParser.NAMES) + self.state = 5716 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [226, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 1145, 1148]: + self.state = 5710 + self.charsetName() + self.state = 5713 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==27: + self.state = 5711 + self.match(MySqlParser.COLLATE) + self.state = 5712 + self.collationName() + + + pass + elif token in [42]: + self.state = 5715 + self.match(MySqlParser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 4: + localctx = MySqlParser.SetPasswordContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 5718 + self.setPasswordStatement() + pass + + elif la_ == 5: + localctx = MySqlParser.SetTransactionContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 5719 + self.setTransactionStatement() + pass + + elif la_ == 6: + localctx = MySqlParser.SetAutocommitContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 5720 + self.setAutocommitStatement() + pass + + elif la_ == 7: + localctx = MySqlParser.SetNewValueInsideTriggerContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 5721 + self.match(MySqlParser.SET) + self.state = 5722 + self.fullId() + self.state = 5723 + _la = self._input.LA(1) + if not(_la==1108 or _la==1124): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5724 + self.expression(0) + self.state = 5732 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5725 + self.match(MySqlParser.COMMA) + self.state = 5726 + self.fullId() + self.state = 5727 + _la = self._input.LA(1) + if not(_la==1108 or _la==1124): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5728 + self.expression(0) + self.state = 5734 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_showStatement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ShowOpenTablesContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.schemaFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def OPEN(self): + return self.getToken(MySqlParser.OPEN, 0) + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def showFilter(self): + return self.getTypedRuleContext(MySqlParser.ShowFilterContext,0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowOpenTables" ): + listener.enterShowOpenTables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowOpenTables" ): + listener.exitShowOpenTables(self) + + + class ShowGlobalInfoContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def showGlobalInfoClause(self): + return self.getTypedRuleContext(MySqlParser.ShowGlobalInfoClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowGlobalInfo" ): + listener.enterShowGlobalInfo(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowGlobalInfo" ): + listener.exitShowGlobalInfo(self) + + + class ShowCreateFullIdObjectContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.namedEntity = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def TRIGGER(self): + return self.getToken(MySqlParser.TRIGGER, 0) + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCreateFullIdObject" ): + listener.enterShowCreateFullIdObject(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCreateFullIdObject" ): + listener.exitShowCreateFullIdObject(self) + + + class ShowCreateUserContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def USER(self): + return self.getToken(MySqlParser.USER, 0) + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCreateUser" ): + listener.enterShowCreateUser(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCreateUser" ): + listener.exitShowCreateUser(self) + + + class ShowErrorsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.errorFormat = None # Token + self.offset = None # DecimalLiteralContext + self.rowCount = None # DecimalLiteralContext + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def ERRORS(self): + return self.getToken(MySqlParser.ERRORS, 0) + def WARNINGS(self): + return self.getToken(MySqlParser.WARNINGS, 0) + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowErrors" ): + listener.enterShowErrors(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowErrors" ): + listener.exitShowErrors(self) + + + class ShowCountErrorsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.errorFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def COUNT(self): + return self.getToken(MySqlParser.COUNT, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def ERRORS(self): + return self.getToken(MySqlParser.ERRORS, 0) + def WARNINGS(self): + return self.getToken(MySqlParser.WARNINGS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCountErrors" ): + listener.enterShowCountErrors(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCountErrors" ): + listener.exitShowCountErrors(self) + + + class ShowObjectFilterContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def showCommonEntity(self): + return self.getTypedRuleContext(MySqlParser.ShowCommonEntityContext,0) + + def showFilter(self): + return self.getTypedRuleContext(MySqlParser.ShowFilterContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowObjectFilter" ): + listener.enterShowObjectFilter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowObjectFilter" ): + listener.exitShowObjectFilter(self) + + + class ShowCreateDbContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.schemaFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def CREATE(self): + return self.getToken(MySqlParser.CREATE, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + def ifNotExists(self): + return self.getTypedRuleContext(MySqlParser.IfNotExistsContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCreateDb" ): + listener.enterShowCreateDb(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCreateDb" ): + listener.exitShowCreateDb(self) + + + class ShowEngineContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.engineOption = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + def engineName(self): + return self.getTypedRuleContext(MySqlParser.EngineNameContext,0) + + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + def MUTEX(self): + return self.getToken(MySqlParser.MUTEX, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowEngine" ): + listener.enterShowEngine(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowEngine" ): + listener.exitShowEngine(self) + + + class ShowSchemaFilterContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.schemaFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def showSchemaEntity(self): + return self.getTypedRuleContext(MySqlParser.ShowSchemaEntityContext,0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def showFilter(self): + return self.getTypedRuleContext(MySqlParser.ShowFilterContext,0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowSchemaFilter" ): + listener.enterShowSchemaFilter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowSchemaFilter" ): + listener.exitShowSchemaFilter(self) + + + class ShowIndexesContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.indexFormat = None # Token + self.tableFormat = None # Token + self.schemaFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + def INDEXES(self): + return self.getToken(MySqlParser.INDEXES, 0) + def KEYS(self): + return self.getToken(MySqlParser.KEYS, 0) + def FROM(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.FROM) + else: + return self.getToken(MySqlParser.FROM, i) + def IN(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.IN) + else: + return self.getToken(MySqlParser.IN, i) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowIndexes" ): + listener.enterShowIndexes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowIndexes" ): + listener.exitShowIndexes(self) + + + class ShowLogEventsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.logFormat = None # Token + self.filename = None # Token + self.fromPosition = None # DecimalLiteralContext + self.offset = None # DecimalLiteralContext + self.rowCount = None # DecimalLiteralContext + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def EVENTS(self): + return self.getToken(MySqlParser.EVENTS, 0) + def BINLOG(self): + return self.getToken(MySqlParser.BINLOG, 0) + def RELAYLOG(self): + return self.getToken(MySqlParser.RELAYLOG, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowLogEvents" ): + listener.enterShowLogEvents(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowLogEvents" ): + listener.exitShowLogEvents(self) + + + class ShowMasterLogsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.logFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def LOGS(self): + return self.getToken(MySqlParser.LOGS, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowMasterLogs" ): + listener.enterShowMasterLogs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowMasterLogs" ): + listener.exitShowMasterLogs(self) + + + class ShowGrantsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def GRANTS(self): + return self.getToken(MySqlParser.GRANTS, 0) + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowGrants" ): + listener.enterShowGrants(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowGrants" ): + listener.exitShowGrants(self) + + + class ShowSlaveStatusContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + def CHANNEL(self): + return self.getToken(MySqlParser.CHANNEL, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowSlaveStatus" ): + listener.enterShowSlaveStatus(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowSlaveStatus" ): + listener.exitShowSlaveStatus(self) + + + class ShowRoutineContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.routine = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def CODE(self): + return self.getToken(MySqlParser.CODE, 0) + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowRoutine" ): + listener.enterShowRoutine(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowRoutine" ): + listener.exitShowRoutine(self) + + + class ShowProfileContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.queryCount = None # DecimalLiteralContext + self.offset = None # DecimalLiteralContext + self.rowCount = None # DecimalLiteralContext + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def PROFILE(self): + return self.getToken(MySqlParser.PROFILE, 0) + def showProfileType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ShowProfileTypeContext) + else: + return self.getTypedRuleContext(MySqlParser.ShowProfileTypeContext,i) + + def LIMIT(self): + return self.getToken(MySqlParser.LIMIT, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + def QUERY(self): + return self.getToken(MySqlParser.QUERY, 0) + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowProfile" ): + listener.enterShowProfile(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowProfile" ): + listener.exitShowProfile(self) + + + class ShowColumnsContext(ShowStatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ShowStatementContext + super().__init__(parser) + self.columnsFormat = None # Token + self.tableFormat = None # Token + self.schemaFormat = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(MySqlParser.SHOW, 0) + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + def FIELDS(self): + return self.getToken(MySqlParser.FIELDS, 0) + def FROM(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.FROM) + else: + return self.getToken(MySqlParser.FROM, i) + def IN(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.IN) + else: + return self.getToken(MySqlParser.IN, i) + def FULL(self): + return self.getToken(MySqlParser.FULL, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + def showFilter(self): + return self.getTypedRuleContext(MySqlParser.ShowFilterContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowColumns" ): + listener.enterShowColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowColumns" ): + listener.exitShowColumns(self) + + + + def showStatement(self): + + localctx = MySqlParser.ShowStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 488, self.RULE_showStatement) + self._la = 0 # Token type + try: + self.state = 5890 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,855,self._ctx) + if la_ == 1: + localctx = MySqlParser.ShowMasterLogsContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 5737 + self.match(MySqlParser.SHOW) + self.state = 5738 + localctx.logFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==226 or _la==477): + localctx.logFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5739 + self.match(MySqlParser.LOGS) + pass + + elif la_ == 2: + localctx = MySqlParser.ShowLogEventsContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 5740 + self.match(MySqlParser.SHOW) + self.state = 5741 + localctx.logFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==345 or _la==577): + localctx.logFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5742 + self.match(MySqlParser.EVENTS) + self.state = 5745 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==80: + self.state = 5743 + self.match(MySqlParser.IN) + self.state = 5744 + localctx.filename = self.match(MySqlParser.STRING_LITERAL) + + + self.state = 5749 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68: + self.state = 5747 + self.match(MySqlParser.FROM) + self.state = 5748 + localctx.fromPosition = self.decimalLiteral() + + + self.state = 5758 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 5751 + self.match(MySqlParser.LIMIT) + self.state = 5755 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,835,self._ctx) + if la_ == 1: + self.state = 5752 + localctx.offset = self.decimalLiteral() + self.state = 5753 + self.match(MySqlParser.COMMA) + + + self.state = 5757 + localctx.rowCount = self.decimalLiteral() + + + pass + + elif la_ == 3: + localctx = MySqlParser.ShowObjectFilterContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 5760 + self.match(MySqlParser.SHOW) + self.state = 5761 + self.showCommonEntity() + self.state = 5763 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==98 or _la==190: + self.state = 5762 + self.showFilter() + + + pass + + elif la_ == 4: + localctx = MySqlParser.ShowColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 5765 + self.match(MySqlParser.SHOW) + self.state = 5767 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==436: + self.state = 5766 + self.match(MySqlParser.FULL) + + + self.state = 5769 + localctx.columnsFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==365 or _la==427): + localctx.columnsFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5770 + localctx.tableFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.tableFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5771 + self.tableName() + self.state = 5774 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68 or _la==80: + self.state = 5772 + localctx.schemaFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.schemaFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5773 + self.uid() + + + self.state = 5777 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==98 or _la==190: + self.state = 5776 + self.showFilter() + + + pass + + elif la_ == 5: + localctx = MySqlParser.ShowCreateDbContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 5779 + self.match(MySqlParser.SHOW) + self.state = 5780 + self.match(MySqlParser.CREATE) + self.state = 5781 + localctx.schemaFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==39 or _la==150): + localctx.schemaFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5783 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,841,self._ctx) + if la_ == 1: + self.state = 5782 + self.ifNotExists() + + + self.state = 5785 + self.uid() + pass + + elif la_ == 6: + localctx = MySqlParser.ShowCreateFullIdObjectContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 5786 + self.match(MySqlParser.SHOW) + self.state = 5787 + self.match(MySqlParser.CREATE) + self.state = 5788 + localctx.namedEntity = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 131)) & ~0x3f) == 0 and ((1 << (_la - 131)) & 72567767433217) != 0) or _la==415 or _la==437 or _la==671): + localctx.namedEntity = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5789 + self.fullId() + pass + + elif la_ == 7: + localctx = MySqlParser.ShowCreateUserContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 5790 + self.match(MySqlParser.SHOW) + self.state = 5791 + self.match(MySqlParser.CREATE) + self.state = 5792 + self.match(MySqlParser.USER) + self.state = 5793 + self.userName() + pass + + elif la_ == 8: + localctx = MySqlParser.ShowEngineContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 5794 + self.match(MySqlParser.SHOW) + self.state = 5795 + self.match(MySqlParser.ENGINE) + self.state = 5796 + self.engineName() + self.state = 5797 + localctx.engineOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==513 or _la==634): + localctx.engineOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 9: + localctx = MySqlParser.ShowGlobalInfoContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 5799 + self.match(MySqlParser.SHOW) + self.state = 5800 + self.showGlobalInfoClause() + pass + + elif la_ == 10: + localctx = MySqlParser.ShowErrorsContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 5801 + self.match(MySqlParser.SHOW) + self.state = 5802 + localctx.errorFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==412 or _la==675): + localctx.errorFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5810 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 5803 + self.match(MySqlParser.LIMIT) + self.state = 5807 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,842,self._ctx) + if la_ == 1: + self.state = 5804 + localctx.offset = self.decimalLiteral() + self.state = 5805 + self.match(MySqlParser.COMMA) + + + self.state = 5809 + localctx.rowCount = self.decimalLiteral() + + + pass + + elif la_ == 11: + localctx = MySqlParser.ShowCountErrorsContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 5812 + self.match(MySqlParser.SHOW) + self.state = 5813 + self.match(MySqlParser.COUNT) + self.state = 5814 + self.match(MySqlParser.LR_BRACKET) + self.state = 5815 + self.match(MySqlParser.STAR) + self.state = 5816 + self.match(MySqlParser.RR_BRACKET) + self.state = 5817 + localctx.errorFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==412 or _la==675): + localctx.errorFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 12: + localctx = MySqlParser.ShowSchemaFilterContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 5818 + self.match(MySqlParser.SHOW) + self.state = 5819 + self.showSchemaEntity() + self.state = 5822 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68 or _la==80: + self.state = 5820 + localctx.schemaFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.schemaFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5821 + self.uid() + + + self.state = 5825 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==98 or _la==190: + self.state = 5824 + self.showFilter() + + + pass + + elif la_ == 13: + localctx = MySqlParser.ShowRoutineContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 5827 + self.match(MySqlParser.SHOW) + self.state = 5828 + localctx.routine = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==131 or _la==437): + localctx.routine = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5829 + self.match(MySqlParser.CODE) + self.state = 5830 + self.fullId() + pass + + elif la_ == 14: + localctx = MySqlParser.ShowGrantsContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 5831 + self.match(MySqlParser.SHOW) + self.state = 5832 + self.match(MySqlParser.GRANTS) + self.state = 5835 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 5833 + self.match(MySqlParser.FOR) + self.state = 5834 + self.userName() + + + pass + + elif la_ == 15: + localctx = MySqlParser.ShowIndexesContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 5837 + self.match(MySqlParser.SHOW) + self.state = 5838 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==92 or _la==452): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5839 + localctx.tableFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.tableFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5840 + self.tableName() + self.state = 5843 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68 or _la==80: + self.state = 5841 + localctx.schemaFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.schemaFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5842 + self.uid() + + + self.state = 5847 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==190: + self.state = 5845 + self.match(MySqlParser.WHERE) + self.state = 5846 + self.expression(0) + + + pass + + elif la_ == 16: + localctx = MySqlParser.ShowOpenTablesContext(self, localctx) + self.enterOuterAlt(localctx, 16) + self.state = 5849 + self.match(MySqlParser.SHOW) + self.state = 5850 + self.match(MySqlParser.OPEN) + self.state = 5851 + self.match(MySqlParser.TABLES) + self.state = 5854 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68 or _la==80: + self.state = 5852 + localctx.schemaFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==68 or _la==80): + localctx.schemaFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 5853 + self.uid() + + + self.state = 5857 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==98 or _la==190: + self.state = 5856 + self.showFilter() + + + pass + + elif la_ == 17: + localctx = MySqlParser.ShowProfileContext(self, localctx) + self.enterOuterAlt(localctx, 17) + self.state = 5859 + self.match(MySqlParser.SHOW) + self.state = 5860 + self.match(MySqlParser.PROFILE) + self.state = 5861 + self.showProfileType() + self.state = 5866 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5862 + self.match(MySqlParser.COMMA) + self.state = 5863 + self.showProfileType() + self.state = 5868 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5872 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 5869 + self.match(MySqlParser.FOR) + self.state = 5870 + self.match(MySqlParser.QUERY) + self.state = 5871 + localctx.queryCount = self.decimalLiteral() + + + self.state = 5874 + self.match(MySqlParser.LIMIT) + self.state = 5878 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,853,self._ctx) + if la_ == 1: + self.state = 5875 + localctx.offset = self.decimalLiteral() + self.state = 5876 + self.match(MySqlParser.COMMA) + + + self.state = 5880 + localctx.rowCount = self.decimalLiteral() + pass + + elif la_ == 18: + localctx = MySqlParser.ShowSlaveStatusContext(self, localctx) + self.enterOuterAlt(localctx, 18) + self.state = 5882 + self.match(MySqlParser.SHOW) + self.state = 5883 + self.match(MySqlParser.SLAVE) + self.state = 5884 + self.match(MySqlParser.STATUS) + self.state = 5888 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 5885 + self.match(MySqlParser.FOR) + self.state = 5886 + self.match(MySqlParser.CHANNEL) + self.state = 5887 + self.match(MySqlParser.STRING_LITERAL) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class VariableClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + + def GLOBAL_ID(self): + return self.getToken(MySqlParser.GLOBAL_ID, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def GLOBAL(self): + return self.getToken(MySqlParser.GLOBAL, 0) + + def SESSION(self): + return self.getToken(MySqlParser.SESSION, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def AT_SIGN(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.AT_SIGN) + else: + return self.getToken(MySqlParser.AT_SIGN, i) + + def getRuleIndex(self): + return MySqlParser.RULE_variableClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableClause" ): + listener.enterVariableClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableClause" ): + listener.exitVariableClause(self) + + + + + def variableClause(self): + + localctx = MySqlParser.VariableClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 490, self.RULE_variableClause) + self._la = 0 # Token type + try: + self.state = 5902 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1160]: + self.enterOuterAlt(localctx, 1) + self.state = 5892 + self.match(MySqlParser.LOCAL_ID) + pass + elif token in [1161]: + self.enterOuterAlt(localctx, 2) + self.state = 5893 + self.match(MySqlParser.GLOBAL_ID) + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1137, 1145, 1148, 1156]: + self.enterOuterAlt(localctx, 3) + self.state = 5899 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,857,self._ctx) + if la_ == 1: + self.state = 5896 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1137: + self.state = 5894 + self.match(MySqlParser.AT_SIGN) + self.state = 5895 + self.match(MySqlParser.AT_SIGN) + + + self.state = 5898 + _la = self._input.LA(1) + if not(_la==439 or _la==474 or _la==609): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5901 + self.uid() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowCommonEntityContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def COLLATION(self): + return self.getToken(MySqlParser.COLLATION, 0) + + def DATABASES(self): + return self.getToken(MySqlParser.DATABASES, 0) + + def SCHEMAS(self): + return self.getToken(MySqlParser.SCHEMAS, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + + def PROCEDURE(self): + return self.getToken(MySqlParser.PROCEDURE, 0) + + def VARIABLES(self): + return self.getToken(MySqlParser.VARIABLES, 0) + + def GLOBAL(self): + return self.getToken(MySqlParser.GLOBAL, 0) + + def SESSION(self): + return self.getToken(MySqlParser.SESSION, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_showCommonEntity + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCommonEntity" ): + listener.enterShowCommonEntity(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCommonEntity" ): + listener.exitShowCommonEntity(self) + + + + + def showCommonEntity(self): + + localctx = MySqlParser.ShowCommonEntityContext(self, self._ctx, self.state) + self.enterRule(localctx, 492, self.RULE_showCommonEntity) + self._la = 0 # Token type + try: + self.state = 5917 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [25]: + self.enterOuterAlt(localctx, 1) + self.state = 5904 + self.match(MySqlParser.CHARACTER) + self.state = 5905 + self.match(MySqlParser.SET) + pass + elif token in [844]: + self.enterOuterAlt(localctx, 2) + self.state = 5906 + self.match(MySqlParser.COLLATION) + pass + elif token in [40]: + self.enterOuterAlt(localctx, 3) + self.state = 5907 + self.match(MySqlParser.DATABASES) + pass + elif token in [151]: + self.enterOuterAlt(localctx, 4) + self.state = 5908 + self.match(MySqlParser.SCHEMAS) + pass + elif token in [437]: + self.enterOuterAlt(localctx, 5) + self.state = 5909 + self.match(MySqlParser.FUNCTION) + self.state = 5910 + self.match(MySqlParser.STATUS) + pass + elif token in [131]: + self.enterOuterAlt(localctx, 6) + self.state = 5911 + self.match(MySqlParser.PROCEDURE) + self.state = 5912 + self.match(MySqlParser.STATUS) + pass + elif token in [439, 609, 634, 670]: + self.enterOuterAlt(localctx, 7) + self.state = 5914 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==439 or _la==609: + self.state = 5913 + _la = self._input.LA(1) + if not(_la==439 or _la==609): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5916 + _la = self._input.LA(1) + if not(_la==634 or _la==670): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowFilterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LIKE(self): + return self.getToken(MySqlParser.LIKE, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def WHERE(self): + return self.getToken(MySqlParser.WHERE, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_showFilter + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowFilter" ): + listener.enterShowFilter(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowFilter" ): + listener.exitShowFilter(self) + + + + + def showFilter(self): + + localctx = MySqlParser.ShowFilterContext(self, self._ctx, self.state) + self.enterRule(localctx, 494, self.RULE_showFilter) + try: + self.state = 5923 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [98]: + self.enterOuterAlt(localctx, 1) + self.state = 5919 + self.match(MySqlParser.LIKE) + self.state = 5920 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [190]: + self.enterOuterAlt(localctx, 2) + self.state = 5921 + self.match(MySqlParser.WHERE) + self.state = 5922 + self.expression(0) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowGlobalInfoClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ENGINES(self): + return self.getToken(MySqlParser.ENGINES, 0) + + def STORAGE(self): + return self.getToken(MySqlParser.STORAGE, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + + def PLUGINS(self): + return self.getToken(MySqlParser.PLUGINS, 0) + + def PRIVILEGES(self): + return self.getToken(MySqlParser.PRIVILEGES, 0) + + def PROCESSLIST(self): + return self.getToken(MySqlParser.PROCESSLIST, 0) + + def FULL(self): + return self.getToken(MySqlParser.FULL, 0) + + def PROFILES(self): + return self.getToken(MySqlParser.PROFILES, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def HOSTS(self): + return self.getToken(MySqlParser.HOSTS, 0) + + def AUTHORS(self): + return self.getToken(MySqlParser.AUTHORS, 0) + + def CONTRIBUTORS(self): + return self.getToken(MySqlParser.CONTRIBUTORS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_showGlobalInfoClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowGlobalInfoClause" ): + listener.enterShowGlobalInfoClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowGlobalInfoClause" ): + listener.exitShowGlobalInfoClause(self) + + + + + def showGlobalInfoClause(self): + + localctx = MySqlParser.ShowGlobalInfoClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 496, self.RULE_showGlobalInfoClause) + self._la = 0 # Token type + try: + self.state = 5942 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [410, 636]: + self.enterOuterAlt(localctx, 1) + self.state = 5926 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==636: + self.state = 5925 + self.match(MySqlParser.STORAGE) + + + self.state = 5928 + self.match(MySqlParser.ENGINES) + pass + elif token in [477]: + self.enterOuterAlt(localctx, 2) + self.state = 5929 + self.match(MySqlParser.MASTER) + self.state = 5930 + self.match(MySqlParser.STATUS) + pass + elif token in [556]: + self.enterOuterAlt(localctx, 3) + self.state = 5931 + self.match(MySqlParser.PLUGINS) + pass + elif token in [725]: + self.enterOuterAlt(localctx, 4) + self.state = 5932 + self.match(MySqlParser.PRIVILEGES) + pass + elif token in [436, 563]: + self.enterOuterAlt(localctx, 5) + self.state = 5934 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==436: + self.state = 5933 + self.match(MySqlParser.FULL) + + + self.state = 5936 + self.match(MySqlParser.PROCESSLIST) + pass + elif token in [565]: + self.enterOuterAlt(localctx, 6) + self.state = 5937 + self.match(MySqlParser.PROFILES) + pass + elif token in [614]: + self.enterOuterAlt(localctx, 7) + self.state = 5938 + self.match(MySqlParser.SLAVE) + self.state = 5939 + self.match(MySqlParser.HOSTS) + pass + elif token in [339]: + self.enterOuterAlt(localctx, 8) + self.state = 5940 + self.match(MySqlParser.AUTHORS) + pass + elif token in [383]: + self.enterOuterAlt(localctx, 9) + self.state = 5941 + self.match(MySqlParser.CONTRIBUTORS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowSchemaEntityContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EVENTS(self): + return self.getToken(MySqlParser.EVENTS, 0) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def FULL(self): + return self.getToken(MySqlParser.FULL, 0) + + def TRIGGERS(self): + return self.getToken(MySqlParser.TRIGGERS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_showSchemaEntity + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowSchemaEntity" ): + listener.enterShowSchemaEntity(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowSchemaEntity" ): + listener.exitShowSchemaEntity(self) + + + + + def showSchemaEntity(self): + + localctx = MySqlParser.ShowSchemaEntityContext(self, self._ctx, self.state) + self.enterRule(localctx, 498, self.RULE_showSchemaEntity) + self._la = 0 # Token type + try: + self.state = 5952 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [416]: + self.enterOuterAlt(localctx, 1) + self.state = 5944 + self.match(MySqlParser.EVENTS) + pass + elif token in [172]: + self.enterOuterAlt(localctx, 2) + self.state = 5945 + self.match(MySqlParser.TABLE) + self.state = 5946 + self.match(MySqlParser.STATUS) + pass + elif token in [436, 742]: + self.enterOuterAlt(localctx, 3) + self.state = 5948 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==436: + self.state = 5947 + self.match(MySqlParser.FULL) + + + self.state = 5950 + self.match(MySqlParser.TABLES) + pass + elif token in [655]: + self.enterOuterAlt(localctx, 4) + self.state = 5951 + self.match(MySqlParser.TRIGGERS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShowProfileTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def BLOCK(self): + return self.getToken(MySqlParser.BLOCK, 0) + + def IO(self): + return self.getToken(MySqlParser.IO, 0) + + def CONTEXT(self): + return self.getToken(MySqlParser.CONTEXT, 0) + + def SWITCHES(self): + return self.getToken(MySqlParser.SWITCHES, 0) + + def CPU(self): + return self.getToken(MySqlParser.CPU, 0) + + def IPC(self): + return self.getToken(MySqlParser.IPC, 0) + + def MEMORY(self): + return self.getToken(MySqlParser.MEMORY, 0) + + def PAGE(self): + return self.getToken(MySqlParser.PAGE, 0) + + def FAULTS(self): + return self.getToken(MySqlParser.FAULTS, 0) + + def SOURCE(self): + return self.getToken(MySqlParser.SOURCE, 0) + + def SWAPS(self): + return self.getToken(MySqlParser.SWAPS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_showProfileType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowProfileType" ): + listener.enterShowProfileType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowProfileType" ): + listener.exitShowProfileType(self) + + + + + def showProfileType(self): + + localctx = MySqlParser.ShowProfileTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 500, self.RULE_showProfileType) + try: + self.state = 5966 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [6]: + self.enterOuterAlt(localctx, 1) + self.state = 5954 + self.match(MySqlParser.ALL) + pass + elif token in [347]: + self.enterOuterAlt(localctx, 2) + self.state = 5955 + self.match(MySqlParser.BLOCK) + self.state = 5956 + self.match(MySqlParser.IO) + pass + elif token in [382]: + self.enterOuterAlt(localctx, 3) + self.state = 5957 + self.match(MySqlParser.CONTEXT) + self.state = 5958 + self.match(MySqlParser.SWITCHES) + pass + elif token in [385]: + self.enterOuterAlt(localctx, 4) + self.state = 5959 + self.match(MySqlParser.CPU) + pass + elif token in [463]: + self.enterOuterAlt(localctx, 5) + self.state = 5960 + self.match(MySqlParser.IPC) + pass + elif token in [792]: + self.enterOuterAlt(localctx, 6) + self.state = 5961 + self.match(MySqlParser.MEMORY) + pass + elif token in [544]: + self.enterOuterAlt(localctx, 7) + self.state = 5962 + self.match(MySqlParser.PAGE) + self.state = 5963 + self.match(MySqlParser.FAULTS) + pass + elif token in [621]: + self.enterOuterAlt(localctx, 8) + self.state = 5964 + self.match(MySqlParser.SOURCE) + pass + elif token in [644]: + self.enterOuterAlt(localctx, 9) + self.state = 5965 + self.match(MySqlParser.SWAPS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BinlogStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BINLOG(self): + return self.getToken(MySqlParser.BINLOG, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_binlogStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBinlogStatement" ): + listener.enterBinlogStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBinlogStatement" ): + listener.exitBinlogStatement(self) + + + + + def binlogStatement(self): + + localctx = MySqlParser.BinlogStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 502, self.RULE_binlogStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 5968 + self.match(MySqlParser.BINLOG) + self.state = 5969 + self.match(MySqlParser.STRING_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CacheIndexStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.schema = None # UidContext + + def CACHE(self): + return self.getToken(MySqlParser.CACHE, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def tableIndexes(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableIndexesContext) + else: + return self.getTypedRuleContext(MySqlParser.TableIndexesContext,i) + + + def IN(self): + return self.getToken(MySqlParser.IN, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_cacheIndexStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCacheIndexStatement" ): + listener.enterCacheIndexStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCacheIndexStatement" ): + listener.exitCacheIndexStatement(self) + + + + + def cacheIndexStatement(self): + + localctx = MySqlParser.CacheIndexStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 504, self.RULE_cacheIndexStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5971 + self.match(MySqlParser.CACHE) + self.state = 5972 + self.match(MySqlParser.INDEX) + self.state = 5973 + self.tableIndexes() + self.state = 5978 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5974 + self.match(MySqlParser.COMMA) + self.state = 5975 + self.tableIndexes() + self.state = 5980 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 5988 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 5981 + self.match(MySqlParser.PARTITION) + self.state = 5982 + self.match(MySqlParser.LR_BRACKET) + self.state = 5985 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 5983 + self.uidList() + pass + elif token in [6]: + self.state = 5984 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + self.state = 5987 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 5990 + self.match(MySqlParser.IN) + self.state = 5991 + localctx.schema = self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FlushStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.flushFormat = None # Token + + def FLUSH(self): + return self.getToken(MySqlParser.FLUSH, 0) + + def flushOption(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FlushOptionContext) + else: + return self.getTypedRuleContext(MySqlParser.FlushOptionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def NO_WRITE_TO_BINLOG(self): + return self.getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_flushStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFlushStatement" ): + listener.enterFlushStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFlushStatement" ): + listener.exitFlushStatement(self) + + + + + def flushStatement(self): + + localctx = MySqlParser.FlushStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 506, self.RULE_flushStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 5993 + self.match(MySqlParser.FLUSH) + self.state = 5995 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==115 or _la==474: + self.state = 5994 + localctx.flushFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==115 or _la==474): + localctx.flushFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 5997 + self.flushOption() + self.state = 6002 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 5998 + self.match(MySqlParser.COMMA) + self.state = 5999 + self.flushOption() + self.state = 6004 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class KillStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.connectionFormat = None # Token + + def KILL(self): + return self.getToken(MySqlParser.KILL, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def CONNECTION(self): + return self.getToken(MySqlParser.CONNECTION, 0) + + def QUERY(self): + return self.getToken(MySqlParser.QUERY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_killStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterKillStatement" ): + listener.enterKillStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitKillStatement" ): + listener.exitKillStatement(self) + + + + + def killStatement(self): + + localctx = MySqlParser.KillStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 508, self.RULE_killStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6005 + self.match(MySqlParser.KILL) + self.state = 6007 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,873,self._ctx) + if la_ == 1: + self.state = 6006 + localctx.connectionFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==376 or _la==567): + localctx.connectionFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6009 + self.expression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoadIndexIntoCacheContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOAD(self): + return self.getToken(MySqlParser.LOAD, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def INTO(self): + return self.getToken(MySqlParser.INTO, 0) + + def CACHE(self): + return self.getToken(MySqlParser.CACHE, 0) + + def loadedTableIndexes(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.LoadedTableIndexesContext) + else: + return self.getTypedRuleContext(MySqlParser.LoadedTableIndexesContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_loadIndexIntoCache + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadIndexIntoCache" ): + listener.enterLoadIndexIntoCache(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadIndexIntoCache" ): + listener.exitLoadIndexIntoCache(self) + + + + + def loadIndexIntoCache(self): + + localctx = MySqlParser.LoadIndexIntoCacheContext(self, self._ctx, self.state) + self.enterRule(localctx, 510, self.RULE_loadIndexIntoCache) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6011 + self.match(MySqlParser.LOAD) + self.state = 6012 + self.match(MySqlParser.INDEX) + self.state = 6013 + self.match(MySqlParser.INTO) + self.state = 6014 + self.match(MySqlParser.CACHE) + self.state = 6015 + self.loadedTableIndexes() + self.state = 6020 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6016 + self.match(MySqlParser.COMMA) + self.state = 6017 + self.loadedTableIndexes() + self.state = 6022 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResetStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESET(self): + return self.getToken(MySqlParser.RESET, 0) + + def QUERY(self): + return self.getToken(MySqlParser.QUERY, 0) + + def CACHE(self): + return self.getToken(MySqlParser.CACHE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_resetStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResetStatement" ): + listener.enterResetStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResetStatement" ): + listener.exitResetStatement(self) + + + + + def resetStatement(self): + + localctx = MySqlParser.ResetStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 512, self.RULE_resetStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6023 + self.match(MySqlParser.RESET) + self.state = 6024 + self.match(MySqlParser.QUERY) + self.state = 6025 + self.match(MySqlParser.CACHE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ShutdownStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SHUTDOWN(self): + return self.getToken(MySqlParser.SHUTDOWN, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_shutdownStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShutdownStatement" ): + listener.enterShutdownStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShutdownStatement" ): + listener.exitShutdownStatement(self) + + + + + def shutdownStatement(self): + + localctx = MySqlParser.ShutdownStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 514, self.RULE_shutdownStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6027 + self.match(MySqlParser.SHUTDOWN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableIndexesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.indexFormat = None # Token + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def uidList(self): + return self.getTypedRuleContext(MySqlParser.UidListContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_tableIndexes + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableIndexes" ): + listener.enterTableIndexes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableIndexes" ): + listener.exitTableIndexes(self) + + + + + def tableIndexes(self): + + localctx = MySqlParser.TableIndexesContext(self, self._ctx, self.state) + self.enterRule(localctx, 516, self.RULE_tableIndexes) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6029 + self.tableName() + self.state = 6037 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91 or _la==1133: + self.state = 6031 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 6030 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6033 + self.match(MySqlParser.LR_BRACKET) + self.state = 6034 + self.uidList() + self.state = 6035 + self.match(MySqlParser.RR_BRACKET) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FlushOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_flushOption + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class TableFlushOptionContext(FlushOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FlushOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + def tables(self): + return self.getTypedRuleContext(MySqlParser.TablesContext,0) + + def flushTableOption(self): + return self.getTypedRuleContext(MySqlParser.FlushTableOptionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableFlushOption" ): + listener.enterTableFlushOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableFlushOption" ): + listener.exitTableFlushOption(self) + + + class ChannelFlushOptionContext(FlushOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FlushOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def RELAY(self): + return self.getToken(MySqlParser.RELAY, 0) + def LOGS(self): + return self.getToken(MySqlParser.LOGS, 0) + def channelOption(self): + return self.getTypedRuleContext(MySqlParser.ChannelOptionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChannelFlushOption" ): + listener.enterChannelFlushOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChannelFlushOption" ): + listener.exitChannelFlushOption(self) + + + class SimpleFlushOptionContext(FlushOptionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FlushOptionContext + super().__init__(parser) + self.copyFrom(ctx) + + def DES_KEY_FILE(self): + return self.getToken(MySqlParser.DES_KEY_FILE, 0) + def HOSTS(self): + return self.getToken(MySqlParser.HOSTS, 0) + def LOGS(self): + return self.getToken(MySqlParser.LOGS, 0) + def OPTIMIZER_COSTS(self): + return self.getToken(MySqlParser.OPTIMIZER_COSTS, 0) + def PRIVILEGES(self): + return self.getToken(MySqlParser.PRIVILEGES, 0) + def QUERY(self): + return self.getToken(MySqlParser.QUERY, 0) + def CACHE(self): + return self.getToken(MySqlParser.CACHE, 0) + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + def USER_RESOURCES(self): + return self.getToken(MySqlParser.USER_RESOURCES, 0) + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + def READ(self): + return self.getToken(MySqlParser.READ, 0) + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + def ERROR(self): + return self.getToken(MySqlParser.ERROR, 0) + def GENERAL(self): + return self.getToken(MySqlParser.GENERAL, 0) + def RELAY(self): + return self.getToken(MySqlParser.RELAY, 0) + def SLOW(self): + return self.getToken(MySqlParser.SLOW, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleFlushOption" ): + listener.enterSimpleFlushOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleFlushOption" ): + listener.exitSimpleFlushOption(self) + + + + def flushOption(self): + + localctx = MySqlParser.FlushOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 518, self.RULE_flushOption) + self._la = 0 # Token type + try: + self.state = 6071 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,883,self._ctx) + if la_ == 1: + localctx = MySqlParser.SimpleFlushOptionContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6057 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [394]: + self.state = 6039 + self.match(MySqlParser.DES_KEY_FILE) + pass + elif token in [447]: + self.state = 6040 + self.match(MySqlParser.HOSTS) + pass + elif token in [226, 409, 411, 438, 476, 574, 615]: + self.state = 6042 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==226 or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & 536870917) != 0) or _la==574 or _la==615: + self.state = 6041 + _la = self._input.LA(1) + if not(_la==226 or ((((_la - 409)) & ~0x3f) == 0 and ((1 << (_la - 409)) & 536870917) != 0) or _la==574 or _la==615): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6044 + self.match(MySqlParser.LOGS) + pass + elif token in [540]: + self.state = 6045 + self.match(MySqlParser.OPTIMIZER_COSTS) + pass + elif token in [725]: + self.state = 6046 + self.match(MySqlParser.PRIVILEGES) + pass + elif token in [567]: + self.state = 6047 + self.match(MySqlParser.QUERY) + self.state = 6048 + self.match(MySqlParser.CACHE) + pass + elif token in [634]: + self.state = 6049 + self.match(MySqlParser.STATUS) + pass + elif token in [667]: + self.state = 6050 + self.match(MySqlParser.USER_RESOURCES) + pass + elif token in [742]: + self.state = 6051 + self.match(MySqlParser.TABLES) + self.state = 6055 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,878,self._ctx) + if la_ == 1: + self.state = 6052 + self.match(MySqlParser.WITH) + self.state = 6053 + self.match(MySqlParser.READ) + self.state = 6054 + self.match(MySqlParser.LOCK) + + + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + localctx = MySqlParser.ChannelFlushOptionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6059 + self.match(MySqlParser.RELAY) + self.state = 6060 + self.match(MySqlParser.LOGS) + self.state = 6062 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 6061 + self.channelOption() + + + pass + + elif la_ == 3: + localctx = MySqlParser.TableFlushOptionContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 6064 + _la = self._input.LA(1) + if not(_la==172 or _la==742): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6066 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,881,self._ctx) + if la_ == 1: + self.state = 6065 + self.tables() + + + self.state = 6069 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,882,self._ctx) + if la_ == 1: + self.state = 6068 + self.flushTableOption() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FlushTableOptionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def READ(self): + return self.getToken(MySqlParser.READ, 0) + + def LOCK(self): + return self.getToken(MySqlParser.LOCK, 0) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def EXPORT(self): + return self.getToken(MySqlParser.EXPORT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_flushTableOption + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFlushTableOption" ): + listener.enterFlushTableOption(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFlushTableOption" ): + listener.exitFlushTableOption(self) + + + + + def flushTableOption(self): + + localctx = MySqlParser.FlushTableOptionContext(self, self._ctx, self.state) + self.enterRule(localctx, 520, self.RULE_flushTableOption) + try: + self.state = 6078 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [192]: + self.enterOuterAlt(localctx, 1) + self.state = 6073 + self.match(MySqlParser.WITH) + self.state = 6074 + self.match(MySqlParser.READ) + self.state = 6075 + self.match(MySqlParser.LOCK) + pass + elif token in [65]: + self.enterOuterAlt(localctx, 2) + self.state = 6076 + self.match(MySqlParser.FOR) + self.state = 6077 + self.match(MySqlParser.EXPORT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LoadedTableIndexesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.partitionList = None # UidListContext + self.indexFormat = None # Token + self.indexList = None # UidListContext + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + + def IGNORE(self): + return self.getToken(MySqlParser.IGNORE, 0) + + def LEAVES(self): + return self.getToken(MySqlParser.LEAVES, 0) + + def uidList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidListContext) + else: + return self.getTypedRuleContext(MySqlParser.UidListContext,i) + + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def INDEX(self): + return self.getToken(MySqlParser.INDEX, 0) + + def KEY(self): + return self.getToken(MySqlParser.KEY, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_loadedTableIndexes + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadedTableIndexes" ): + listener.enterLoadedTableIndexes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadedTableIndexes" ): + listener.exitLoadedTableIndexes(self) + + + + + def loadedTableIndexes(self): + + localctx = MySqlParser.LoadedTableIndexesContext(self, self._ctx, self.state) + self.enterRule(localctx, 522, self.RULE_loadedTableIndexes) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6080 + self.tableName() + self.state = 6088 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 6081 + self.match(MySqlParser.PARTITION) + self.state = 6082 + self.match(MySqlParser.LR_BRACKET) + self.state = 6085 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 6083 + localctx.partitionList = self.uidList() + pass + elif token in [6]: + self.state = 6084 + self.match(MySqlParser.ALL) + pass + else: + raise NoViableAltException(self) + + self.state = 6087 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 6097 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,888,self._ctx) + if la_ == 1: + self.state = 6091 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==81 or _la==91: + self.state = 6090 + localctx.indexFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==81 or _la==91): + localctx.indexFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6093 + self.match(MySqlParser.LR_BRACKET) + self.state = 6094 + localctx.indexList = self.uidList() + self.state = 6095 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 6101 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==78: + self.state = 6099 + self.match(MySqlParser.IGNORE) + self.state = 6100 + self.match(MySqlParser.LEAVES) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SimpleDescribeStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.command = None # Token + self.column = None # UidContext + self.pattern = None # Token + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def EXPLAIN(self): + return self.getToken(MySqlParser.EXPLAIN, 0) + + def DESCRIBE(self): + return self.getToken(MySqlParser.DESCRIBE, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_simpleDescribeStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleDescribeStatement" ): + listener.enterSimpleDescribeStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleDescribeStatement" ): + listener.exitSimpleDescribeStatement(self) + + + + + def simpleDescribeStatement(self): + + localctx = MySqlParser.SimpleDescribeStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 524, self.RULE_simpleDescribeStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6103 + localctx.command = self._input.LT(1) + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4611791571543654400) != 0)): + localctx.command = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6104 + self.tableName() + self.state = 6107 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,890,self._ctx) + if la_ == 1: + self.state = 6105 + localctx.column = self.uid() + + elif la_ == 2: + self.state = 6106 + localctx.pattern = self.match(MySqlParser.STRING_LITERAL) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FullDescribeStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.command = None # Token + self.formatType = None # Token + self.formatValue = None # Token + + def describeObjectClause(self): + return self.getTypedRuleContext(MySqlParser.DescribeObjectClauseContext,0) + + + def EXPLAIN(self): + return self.getToken(MySqlParser.EXPLAIN, 0) + + def DESCRIBE(self): + return self.getToken(MySqlParser.DESCRIBE, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def EXTENDED(self): + return self.getToken(MySqlParser.EXTENDED, 0) + + def PARTITIONS(self): + return self.getToken(MySqlParser.PARTITIONS, 0) + + def FORMAT(self): + return self.getToken(MySqlParser.FORMAT, 0) + + def TRADITIONAL(self): + return self.getToken(MySqlParser.TRADITIONAL, 0) + + def JSON(self): + return self.getToken(MySqlParser.JSON, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_fullDescribeStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFullDescribeStatement" ): + listener.enterFullDescribeStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFullDescribeStatement" ): + listener.exitFullDescribeStatement(self) + + + + + def fullDescribeStatement(self): + + localctx = MySqlParser.FullDescribeStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 526, self.RULE_fullDescribeStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6109 + localctx.command = self._input.LT(1) + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4611791571543654400) != 0)): + localctx.command = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6113 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==422 or _la==550 or _la==885: + self.state = 6110 + localctx.formatType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==422 or _la==550 or _la==885): + localctx.formatType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6111 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6112 + localctx.formatValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==466 or _la==652): + localctx.formatValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6115 + self.describeObjectClause() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HelpStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HELP(self): + return self.getToken(MySqlParser.HELP, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_helpStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHelpStatement" ): + listener.enterHelpStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHelpStatement" ): + listener.exitHelpStatement(self) + + + + + def helpStatement(self): + + localctx = MySqlParser.HelpStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 528, self.RULE_helpStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6117 + self.match(MySqlParser.HELP) + self.state = 6118 + self.match(MySqlParser.STRING_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UseStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def USE(self): + return self.getToken(MySqlParser.USE, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_useStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUseStatement" ): + listener.enterUseStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUseStatement" ): + listener.exitUseStatement(self) + + + + + def useStatement(self): + + localctx = MySqlParser.UseStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 530, self.RULE_useStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6120 + self.match(MySqlParser.USE) + self.state = 6121 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SignalStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SIGNAL(self): + return self.getToken(MySqlParser.SIGNAL, 0) + + def ID(self): + return self.getToken(MySqlParser.ID, 0) + + def REVERSE_QUOTE_ID(self): + return self.getToken(MySqlParser.REVERSE_QUOTE_ID, 0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def signalConditionInformation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SignalConditionInformationContext) + else: + return self.getTypedRuleContext(MySqlParser.SignalConditionInformationContext,i) + + + def SQLSTATE(self): + return self.getToken(MySqlParser.SQLSTATE, 0) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_signalStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSignalStatement" ): + listener.enterSignalStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSignalStatement" ): + listener.exitSignalStatement(self) + + + + + def signalStatement(self): + + localctx = MySqlParser.SignalStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 532, self.RULE_signalStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6123 + self.match(MySqlParser.SIGNAL) + self.state = 6131 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [162]: + self.state = 6124 + self.match(MySqlParser.SQLSTATE) + self.state = 6126 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==669: + self.state = 6125 + self.match(MySqlParser.VALUE) + + + self.state = 6128 + self.stringLiteral() + pass + elif token in [1156]: + self.state = 6129 + self.match(MySqlParser.ID) + pass + elif token in [1157]: + self.state = 6130 + self.match(MySqlParser.REVERSE_QUOTE_ID) + pass + else: + raise NoViableAltException(self) + + self.state = 6142 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,895,self._ctx) + if la_ == 1: + self.state = 6133 + self.match(MySqlParser.SET) + self.state = 6134 + self.signalConditionInformation() + self.state = 6139 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6135 + self.match(MySqlParser.COMMA) + self.state = 6136 + self.signalConditionInformation() + self.state = 6141 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ResignalStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def RESIGNAL(self): + return self.getToken(MySqlParser.RESIGNAL, 0) + + def ID(self): + return self.getToken(MySqlParser.ID, 0) + + def REVERSE_QUOTE_ID(self): + return self.getToken(MySqlParser.REVERSE_QUOTE_ID, 0) + + def SET(self): + return self.getToken(MySqlParser.SET, 0) + + def signalConditionInformation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.SignalConditionInformationContext) + else: + return self.getTypedRuleContext(MySqlParser.SignalConditionInformationContext,i) + + + def SQLSTATE(self): + return self.getToken(MySqlParser.SQLSTATE, 0) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_resignalStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResignalStatement" ): + listener.enterResignalStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResignalStatement" ): + listener.exitResignalStatement(self) + + + + + def resignalStatement(self): + + localctx = MySqlParser.ResignalStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 534, self.RULE_resignalStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6144 + self.match(MySqlParser.RESIGNAL) + self.state = 6152 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [162]: + self.state = 6145 + self.match(MySqlParser.SQLSTATE) + self.state = 6147 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==669: + self.state = 6146 + self.match(MySqlParser.VALUE) + + + self.state = 6149 + self.stringLiteral() + pass + elif token in [1156]: + self.state = 6150 + self.match(MySqlParser.ID) + pass + elif token in [1157]: + self.state = 6151 + self.match(MySqlParser.REVERSE_QUOTE_ID) + pass + elif token in [-1, 7, 9, 20, 24, 26, 33, 44, 45, 46, 51, 62, 71, 72, 85, 93, 102, 103, 119, 132, 138, 139, 141, 143, 147, 152, 153, 155, 156, 172, 182, 184, 186, 188, 192, 344, 345, 351, 356, 369, 390, 399, 432, 442, 444, 456, 560, 580, 589, 597, 604, 629, 635, 656, 661, 681, 708, 739, 1121, 1133, 1136]: + pass + else: + pass + self.state = 6163 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,899,self._ctx) + if la_ == 1: + self.state = 6154 + self.match(MySqlParser.SET) + self.state = 6155 + self.signalConditionInformation() + self.state = 6160 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6156 + self.match(MySqlParser.COMMA) + self.state = 6157 + self.signalConditionInformation() + self.state = 6162 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SignalConditionInformationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def CLASS_ORIGIN(self): + return self.getToken(MySqlParser.CLASS_ORIGIN, 0) + + def SUBCLASS_ORIGIN(self): + return self.getToken(MySqlParser.SUBCLASS_ORIGIN, 0) + + def MESSAGE_TEXT(self): + return self.getToken(MySqlParser.MESSAGE_TEXT, 0) + + def MYSQL_ERRNO(self): + return self.getToken(MySqlParser.MYSQL_ERRNO, 0) + + def CONSTRAINT_CATALOG(self): + return self.getToken(MySqlParser.CONSTRAINT_CATALOG, 0) + + def CONSTRAINT_SCHEMA(self): + return self.getToken(MySqlParser.CONSTRAINT_SCHEMA, 0) + + def CONSTRAINT_NAME(self): + return self.getToken(MySqlParser.CONSTRAINT_NAME, 0) + + def CATALOG_NAME(self): + return self.getToken(MySqlParser.CATALOG_NAME, 0) + + def SCHEMA_NAME(self): + return self.getToken(MySqlParser.SCHEMA_NAME, 0) + + def TABLE_NAME(self): + return self.getToken(MySqlParser.TABLE_NAME, 0) + + def COLUMN_NAME(self): + return self.getToken(MySqlParser.COLUMN_NAME, 0) + + def CURSOR_NAME(self): + return self.getToken(MySqlParser.CURSOR_NAME, 0) + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + + def DECIMAL_LITERAL(self): + return self.getToken(MySqlParser.DECIMAL_LITERAL, 0) + + def mysqlVariable(self): + return self.getTypedRuleContext(MySqlParser.MysqlVariableContext,0) + + + def simpleId(self): + return self.getTypedRuleContext(MySqlParser.SimpleIdContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_signalConditionInformation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSignalConditionInformation" ): + listener.enterSignalConditionInformation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSignalConditionInformation" ): + listener.exitSignalConditionInformation(self) + + + + + def signalConditionInformation(self): + + localctx = MySqlParser.SignalConditionInformationContext(self, self._ctx, self.state) + self.enterRule(localctx, 536, self.RULE_signalConditionInformation) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6165 + _la = self._input.LA(1) + if not(((((_la - 359)) & ~0x3f) == 0 and ((1 << (_la - 359)) & 272105729) != 0) or _la==507 or _la==515 or _la==639 or _la==646 or _la==836 or _la==1005): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6166 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6171 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1147, 1148, 1154]: + self.state = 6167 + self.stringLiteral() + pass + elif token in [1149]: + self.state = 6168 + self.match(MySqlParser.DECIMAL_LITERAL) + pass + elif token in [1160, 1161]: + self.state = 6169 + self.mysqlVariable() + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1156]: + self.state = 6170 + self.simpleId() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WithStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(MySqlParser.WITH, 0) + + def commonTableExpressions(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CommonTableExpressionsContext) + else: + return self.getTypedRuleContext(MySqlParser.CommonTableExpressionsContext,i) + + + def RECURSIVE(self): + return self.getToken(MySqlParser.RECURSIVE, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_withStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWithStatement" ): + listener.enterWithStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWithStatement" ): + listener.exitWithStatement(self) + + + + + def withStatement(self): + + localctx = MySqlParser.WithStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 538, self.RULE_withStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6173 + self.match(MySqlParser.WITH) + self.state = 6175 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,901,self._ctx) + if la_ == 1: + self.state = 6174 + self.match(MySqlParser.RECURSIVE) + + + self.state = 6177 + self.commonTableExpressions() + self.state = 6182 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6178 + self.match(MySqlParser.COMMA) + self.state = 6179 + self.commonTableExpressions() + self.state = 6184 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TABLE(self): + return self.getToken(MySqlParser.TABLE, 0) + + def tableName(self): + return self.getTypedRuleContext(MySqlParser.TableNameContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def limitClause(self): + return self.getTypedRuleContext(MySqlParser.LimitClauseContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_tableStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableStatement" ): + listener.enterTableStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableStatement" ): + listener.exitTableStatement(self) + + + + + def tableStatement(self): + + localctx = MySqlParser.TableStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 540, self.RULE_tableStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6185 + self.match(MySqlParser.TABLE) + self.state = 6186 + self.tableName() + self.state = 6188 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==124: + self.state = 6187 + self.orderByClause() + + + self.state = 6191 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==99: + self.state = 6190 + self.limitClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DiagnosticsStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def GET(self): + return self.getToken(MySqlParser.GET, 0) + + def DIAGNOSTICS(self): + return self.getToken(MySqlParser.DIAGNOSTICS, 0) + + def CURRENT(self): + return self.getToken(MySqlParser.CURRENT, 0) + + def STACKED(self): + return self.getToken(MySqlParser.STACKED, 0) + + def variableClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.VariableClauseContext) + else: + return self.getTypedRuleContext(MySqlParser.VariableClauseContext,i) + + + def EQUAL_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.EQUAL_SYMBOL) + else: + return self.getToken(MySqlParser.EQUAL_SYMBOL, i) + + def CONDITION(self): + return self.getToken(MySqlParser.CONDITION, 0) + + def diagnosticsConditionInformationName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DiagnosticsConditionInformationNameContext) + else: + return self.getTypedRuleContext(MySqlParser.DiagnosticsConditionInformationNameContext,i) + + + def NUMBER(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.NUMBER) + else: + return self.getToken(MySqlParser.NUMBER, i) + + def ROW_COUNT(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ROW_COUNT) + else: + return self.getToken(MySqlParser.ROW_COUNT, i) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_diagnosticsStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDiagnosticsStatement" ): + listener.enterDiagnosticsStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDiagnosticsStatement" ): + listener.exitDiagnosticsStatement(self) + + + + + def diagnosticsStatement(self): + + localctx = MySqlParser.DiagnosticsStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 542, self.RULE_diagnosticsStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6193 + self.match(MySqlParser.GET) + self.state = 6195 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==35 or _la==168: + self.state = 6194 + _la = self._input.LA(1) + if not(_la==35 or _la==168): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6197 + self.match(MySqlParser.DIAGNOSTICS) + self.state = 6229 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,909,self._ctx) + if la_ == 1: + self.state = 6198 + self.variableClause() + self.state = 6199 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6200 + _la = self._input.LA(1) + if not(_la==117 or _la==996): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6208 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6201 + self.match(MySqlParser.COMMA) + self.state = 6202 + self.variableClause() + self.state = 6203 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6204 + _la = self._input.LA(1) + if not(_la==117 or _la==996): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6210 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + self.state = 6211 + self.match(MySqlParser.CONDITION) + self.state = 6214 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1138, 1139, 1140, 1149, 1151]: + self.state = 6212 + self.decimalLiteral() + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1137, 1145, 1148, 1156, 1160, 1161]: + self.state = 6213 + self.variableClause() + pass + else: + raise NoViableAltException(self) + + self.state = 6216 + self.variableClause() + self.state = 6217 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6218 + self.diagnosticsConditionInformationName() + self.state = 6226 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6219 + self.match(MySqlParser.COMMA) + self.state = 6220 + self.variableClause() + self.state = 6221 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 6222 + self.diagnosticsConditionInformationName() + self.state = 6228 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DiagnosticsConditionInformationNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CLASS_ORIGIN(self): + return self.getToken(MySqlParser.CLASS_ORIGIN, 0) + + def SUBCLASS_ORIGIN(self): + return self.getToken(MySqlParser.SUBCLASS_ORIGIN, 0) + + def RETURNED_SQLSTATE(self): + return self.getToken(MySqlParser.RETURNED_SQLSTATE, 0) + + def MESSAGE_TEXT(self): + return self.getToken(MySqlParser.MESSAGE_TEXT, 0) + + def MYSQL_ERRNO(self): + return self.getToken(MySqlParser.MYSQL_ERRNO, 0) + + def CONSTRAINT_CATALOG(self): + return self.getToken(MySqlParser.CONSTRAINT_CATALOG, 0) + + def CONSTRAINT_SCHEMA(self): + return self.getToken(MySqlParser.CONSTRAINT_SCHEMA, 0) + + def CONSTRAINT_NAME(self): + return self.getToken(MySqlParser.CONSTRAINT_NAME, 0) + + def CATALOG_NAME(self): + return self.getToken(MySqlParser.CATALOG_NAME, 0) + + def SCHEMA_NAME(self): + return self.getToken(MySqlParser.SCHEMA_NAME, 0) + + def TABLE_NAME(self): + return self.getToken(MySqlParser.TABLE_NAME, 0) + + def COLUMN_NAME(self): + return self.getToken(MySqlParser.COLUMN_NAME, 0) + + def CURSOR_NAME(self): + return self.getToken(MySqlParser.CURSOR_NAME, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_diagnosticsConditionInformationName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDiagnosticsConditionInformationName" ): + listener.enterDiagnosticsConditionInformationName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDiagnosticsConditionInformationName" ): + listener.exitDiagnosticsConditionInformationName(self) + + + + + def diagnosticsConditionInformationName(self): + + localctx = MySqlParser.DiagnosticsConditionInformationNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 544, self.RULE_diagnosticsConditionInformationName) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6231 + _la = self._input.LA(1) + if not(((((_la - 359)) & ~0x3f) == 0 and ((1 << (_la - 359)) & 272105729) != 0) or _la==507 or _la==515 or ((((_la - 592)) & ~0x3f) == 0 and ((1 << (_la - 592)) & 18155135997837313) != 0) or _la==836 or _la==1005): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DescribeObjectClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_describeObjectClause + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DescribeStatementsContext(DescribeObjectClauseContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DescribeObjectClauseContext + super().__init__(parser) + self.copyFrom(ctx) + + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def deleteStatement(self): + return self.getTypedRuleContext(MySqlParser.DeleteStatementContext,0) + + def insertStatement(self): + return self.getTypedRuleContext(MySqlParser.InsertStatementContext,0) + + def replaceStatement(self): + return self.getTypedRuleContext(MySqlParser.ReplaceStatementContext,0) + + def updateStatement(self): + return self.getTypedRuleContext(MySqlParser.UpdateStatementContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeStatements" ): + listener.enterDescribeStatements(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeStatements" ): + listener.exitDescribeStatements(self) + + + class DescribeConnectionContext(DescribeObjectClauseContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DescribeObjectClauseContext + super().__init__(parser) + self.copyFrom(ctx) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + def CONNECTION(self): + return self.getToken(MySqlParser.CONNECTION, 0) + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeConnection" ): + listener.enterDescribeConnection(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeConnection" ): + listener.exitDescribeConnection(self) + + + + def describeObjectClause(self): + + localctx = MySqlParser.DescribeObjectClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 546, self.RULE_describeObjectClause) + try: + self.state = 6243 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [44, 85, 141, 152, 184, 1133]: + localctx = MySqlParser.DescribeStatementsContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6238 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [152, 1133]: + self.state = 6233 + self.selectStatement() + pass + elif token in [44]: + self.state = 6234 + self.deleteStatement() + pass + elif token in [85]: + self.state = 6235 + self.insertStatement() + pass + elif token in [141]: + self.state = 6236 + self.replaceStatement() + pass + elif token in [184]: + self.state = 6237 + self.updateStatement() + pass + else: + raise NoViableAltException(self) + + pass + elif token in [65]: + localctx = MySqlParser.DescribeConnectionContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6240 + self.match(MySqlParser.FOR) + self.state = 6241 + self.match(MySqlParser.CONNECTION) + self.state = 6242 + self.uid() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FullIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def DOT_ID(self): + return self.getToken(MySqlParser.DOT_ID, 0) + + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_fullId + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFullId" ): + listener.enterFullId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFullId" ): + listener.exitFullId(self) + + + + + def fullId(self): + + localctx = MySqlParser.FullIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 548, self.RULE_fullId) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6245 + self.uid() + self.state = 6249 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,912,self._ctx) + if la_ == 1: + self.state = 6246 + self.match(MySqlParser.DOT_ID) + + elif la_ == 2: + self.state = 6247 + self.match(MySqlParser.DOT) + self.state = 6248 + self.uid() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TableNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_tableName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableName" ): + listener.enterTableName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableName" ): + listener.exitTableName(self) + + + + + def tableName(self): + + localctx = MySqlParser.TableNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 550, self.RULE_tableName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6251 + self.fullId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class RoleNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def userName(self): + return self.getTypedRuleContext(MySqlParser.UserNameContext,0) + + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_roleName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoleName" ): + listener.enterRoleName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoleName" ): + listener.exitRoleName(self) + + + + + def roleName(self): + + localctx = MySqlParser.RoleNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 552, self.RULE_roleName) + try: + self.state = 6255 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,913,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6253 + self.userName() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6254 + self.uid() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FullColumnNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def dottedId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DottedIdContext) + else: + return self.getTypedRuleContext(MySqlParser.DottedIdContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_fullColumnName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFullColumnName" ): + listener.enterFullColumnName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFullColumnName" ): + listener.exitFullColumnName(self) + + + + + def fullColumnName(self): + + localctx = MySqlParser.FullColumnNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 554, self.RULE_fullColumnName) + try: + self.state = 6271 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,918,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6257 + self.uid() + self.state = 6262 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,915,self._ctx) + if la_ == 1: + self.state = 6258 + self.dottedId() + self.state = 6260 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,914,self._ctx) + if la_ == 1: + self.state = 6259 + self.dottedId() + + + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6265 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,916,self._ctx) + if la_ == 1: + self.state = 6264 + self.matchWildcard() + + + self.state = 6267 + self.dottedId() + self.state = 6269 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,917,self._ctx) + if la_ == 1: + self.state = 6268 + self.dottedId() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexColumnNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.sortType = None # Token + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def ASC(self): + return self.getToken(MySqlParser.ASC, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_indexColumnName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexColumnName" ): + listener.enterIndexColumnName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexColumnName" ): + listener.exitIndexColumnName(self) + + + + + def indexColumnName(self): + + localctx = MySqlParser.IndexColumnNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 556, self.RULE_indexColumnName) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6284 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,921,self._ctx) + if la_ == 1: + self.state = 6275 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,919,self._ctx) + if la_ == 1: + self.state = 6273 + self.uid() + pass + + elif la_ == 2: + self.state = 6274 + self.match(MySqlParser.STRING_LITERAL) + pass + + + self.state = 6281 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 6277 + self.match(MySqlParser.LR_BRACKET) + self.state = 6278 + self.decimalLiteral() + self.state = 6279 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 2: + self.state = 6283 + self.expression(0) + pass + + + self.state = 6287 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==13 or _la==45: + self.state = 6286 + localctx.sortType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==13 or _la==45): + localctx.sortType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING_USER_NAME(self): + return self.getToken(MySqlParser.STRING_USER_NAME, 0) + + def ID(self): + return self.getToken(MySqlParser.ID, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def ADMIN(self): + return self.getToken(MySqlParser.ADMIN, 0) + + def keywordsCanBeId(self): + return self.getTypedRuleContext(MySqlParser.KeywordsCanBeIdContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_userName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserName" ): + listener.enterUserName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserName" ): + listener.exitUserName(self) + + + + + def userName(self): + + localctx = MySqlParser.UserNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 558, self.RULE_userName) + try: + self.state = 6294 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,923,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6289 + self.match(MySqlParser.STRING_USER_NAME) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6290 + self.match(MySqlParser.ID) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 6291 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 6292 + self.match(MySqlParser.ADMIN) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 6293 + self.keywordsCanBeId() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MysqlVariableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + + def GLOBAL_ID(self): + return self.getToken(MySqlParser.GLOBAL_ID, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_mysqlVariable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMysqlVariable" ): + listener.enterMysqlVariable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMysqlVariable" ): + listener.exitMysqlVariable(self) + + + + + def mysqlVariable(self): + + localctx = MySqlParser.MysqlVariableContext(self, self._ctx, self.state) + self.enterRule(localctx, 560, self.RULE_mysqlVariable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6296 + _la = self._input.LA(1) + if not(_la==1160 or _la==1161): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CharsetNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def charsetNameBase(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameBaseContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def CHARSET_REVERSE_QOUTE_STRING(self): + return self.getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_charsetName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCharsetName" ): + listener.enterCharsetName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCharsetName" ): + listener.exitCharsetName(self) + + + + + def charsetName(self): + + localctx = MySqlParser.CharsetNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 562, self.RULE_charsetName) + try: + self.state = 6302 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,924,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6298 + self.match(MySqlParser.BINARY) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6299 + self.charsetNameBase() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 6300 + self.match(MySqlParser.STRING_LITERAL) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 6301 + self.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CollationNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_collationName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCollationName" ): + listener.enterCollationName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCollationName" ): + listener.exitCollationName(self) + + + + + def collationName(self): + + localctx = MySqlParser.CollationNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 564, self.RULE_collationName) + try: + self.state = 6306 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,925,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6304 + self.uid() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6305 + self.match(MySqlParser.STRING_LITERAL) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EngineNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def engineNameBase(self): + return self.getTypedRuleContext(MySqlParser.EngineNameBaseContext,0) + + + def ID(self): + return self.getToken(MySqlParser.ID, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_engineName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEngineName" ): + listener.enterEngineName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEngineName" ): + listener.exitEngineName(self) + + + + + def engineName(self): + + localctx = MySqlParser.EngineNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 566, self.RULE_engineName) + try: + self.state = 6311 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [375, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798]: + self.enterOuterAlt(localctx, 1) + self.state = 6308 + self.engineNameBase() + pass + elif token in [1156]: + self.enterOuterAlt(localctx, 2) + self.state = 6309 + self.match(MySqlParser.ID) + pass + elif token in [1148]: + self.enterOuterAlt(localctx, 3) + self.state = 6310 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class EngineNameBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ARCHIVE(self): + return self.getToken(MySqlParser.ARCHIVE, 0) + + def BLACKHOLE(self): + return self.getToken(MySqlParser.BLACKHOLE, 0) + + def CONNECT(self): + return self.getToken(MySqlParser.CONNECT, 0) + + def CSV(self): + return self.getToken(MySqlParser.CSV, 0) + + def FEDERATED(self): + return self.getToken(MySqlParser.FEDERATED, 0) + + def INNODB(self): + return self.getToken(MySqlParser.INNODB, 0) + + def MEMORY(self): + return self.getToken(MySqlParser.MEMORY, 0) + + def MRG_MYISAM(self): + return self.getToken(MySqlParser.MRG_MYISAM, 0) + + def MYISAM(self): + return self.getToken(MySqlParser.MYISAM, 0) + + def NDB(self): + return self.getToken(MySqlParser.NDB, 0) + + def NDBCLUSTER(self): + return self.getToken(MySqlParser.NDBCLUSTER, 0) + + def PERFORMANCE_SCHEMA(self): + return self.getToken(MySqlParser.PERFORMANCE_SCHEMA, 0) + + def TOKUDB(self): + return self.getToken(MySqlParser.TOKUDB, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_engineNameBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterEngineNameBase" ): + listener.enterEngineNameBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitEngineNameBase" ): + listener.exitEngineNameBase(self) + + + + + def engineNameBase(self): + + localctx = MySqlParser.EngineNameBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 568, self.RULE_engineNameBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6313 + _la = self._input.LA(1) + if not(_la==375 or ((((_la - 787)) & ~0x3f) == 0 and ((1 << (_la - 787)) & 4095) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UuidSetContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.MINUS) + else: + return self.getToken(MySqlParser.MINUS, i) + + def COLON_SYMB(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COLON_SYMB) + else: + return self.getToken(MySqlParser.COLON_SYMB, i) + + def getRuleIndex(self): + return MySqlParser.RULE_uuidSet + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUuidSet" ): + listener.enterUuidSet(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUuidSet" ): + listener.exitUuidSet(self) + + + + + def uuidSet(self): + + localctx = MySqlParser.UuidSetContext(self, self._ctx, self.state) + self.enterRule(localctx, 570, self.RULE_uuidSet) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6315 + self.decimalLiteral() + self.state = 6316 + self.match(MySqlParser.MINUS) + self.state = 6317 + self.decimalLiteral() + self.state = 6318 + self.match(MySqlParser.MINUS) + self.state = 6319 + self.decimalLiteral() + self.state = 6320 + self.match(MySqlParser.MINUS) + self.state = 6321 + self.decimalLiteral() + self.state = 6322 + self.match(MySqlParser.MINUS) + self.state = 6323 + self.decimalLiteral() + self.state = 6329 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 6324 + self.match(MySqlParser.COLON_SYMB) + self.state = 6325 + self.decimalLiteral() + self.state = 6326 + self.match(MySqlParser.MINUS) + self.state = 6327 + self.decimalLiteral() + self.state = 6331 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==1144): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XidContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.globalTableUid = None # XuidStringIdContext + self.qualifier = None # XuidStringIdContext + self.idFormat = None # DecimalLiteralContext + + def xuidStringId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.XuidStringIdContext) + else: + return self.getTypedRuleContext(MySqlParser.XuidStringIdContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_xid + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXid" ): + listener.enterXid(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXid" ): + listener.exitXid(self) + + + + + def xid(self): + + localctx = MySqlParser.XidContext(self, self._ctx, self.state) + self.enterRule(localctx, 572, self.RULE_xid) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6333 + localctx.globalTableUid = self.xuidStringId() + self.state = 6340 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 6334 + self.match(MySqlParser.COMMA) + self.state = 6335 + localctx.qualifier = self.xuidStringId() + self.state = 6338 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 6336 + self.match(MySqlParser.COMMA) + self.state = 6337 + localctx.idFormat = self.decimalLiteral() + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class XuidStringIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def BIT_STRING(self): + return self.getToken(MySqlParser.BIT_STRING, 0) + + def HEXADECIMAL_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.HEXADECIMAL_LITERAL) + else: + return self.getToken(MySqlParser.HEXADECIMAL_LITERAL, i) + + def getRuleIndex(self): + return MySqlParser.RULE_xuidStringId + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXuidStringId" ): + listener.enterXuidStringId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXuidStringId" ): + listener.exitXuidStringId(self) + + + + + def xuidStringId(self): + + localctx = MySqlParser.XuidStringIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 574, self.RULE_xuidStringId) + self._la = 0 # Token type + try: + self.state = 6349 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1148]: + self.enterOuterAlt(localctx, 1) + self.state = 6342 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [1153]: + self.enterOuterAlt(localctx, 2) + self.state = 6343 + self.match(MySqlParser.BIT_STRING) + pass + elif token in [1150]: + self.enterOuterAlt(localctx, 3) + self.state = 6345 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 6344 + self.match(MySqlParser.HEXADECIMAL_LITERAL) + self.state = 6347 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==1150): + break + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AuthPluginContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_authPlugin + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAuthPlugin" ): + listener.enterAuthPlugin(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAuthPlugin" ): + listener.exitAuthPlugin(self) + + + + + def authPlugin(self): + + localctx = MySqlParser.AuthPluginContext(self, self._ctx, self.state) + self.enterRule(localctx, 576, self.RULE_authPlugin) + try: + self.state = 6353 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,932,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6351 + self.uid() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6352 + self.match(MySqlParser.STRING_LITERAL) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UidContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def simpleId(self): + return self.getTypedRuleContext(MySqlParser.SimpleIdContext,0) + + + def CHARSET_REVERSE_QOUTE_STRING(self): + return self.getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_uid + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUid" ): + listener.enterUid(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUid" ): + listener.exitUid(self) + + + + + def uid(self): + + localctx = MySqlParser.UidContext(self, self._ctx, self.state) + self.enterRule(localctx, 578, self.RULE_uid) + try: + self.state = 6358 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1156]: + self.enterOuterAlt(localctx, 1) + self.state = 6355 + self.simpleId() + pass + elif token in [1145]: + self.enterOuterAlt(localctx, 2) + self.state = 6356 + self.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING) + pass + elif token in [1148]: + self.enterOuterAlt(localctx, 3) + self.state = 6357 + self.match(MySqlParser.STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SimpleIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ID(self): + return self.getToken(MySqlParser.ID, 0) + + def charsetNameBase(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameBaseContext,0) + + + def transactionLevelBase(self): + return self.getTypedRuleContext(MySqlParser.TransactionLevelBaseContext,0) + + + def engineNameBase(self): + return self.getTypedRuleContext(MySqlParser.EngineNameBaseContext,0) + + + def privilegesBase(self): + return self.getTypedRuleContext(MySqlParser.PrivilegesBaseContext,0) + + + def intervalTypeBase(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeBaseContext,0) + + + def dataTypeBase(self): + return self.getTypedRuleContext(MySqlParser.DataTypeBaseContext,0) + + + def keywordsCanBeId(self): + return self.getTypedRuleContext(MySqlParser.KeywordsCanBeIdContext,0) + + + def scalarFunctionName(self): + return self.getTypedRuleContext(MySqlParser.ScalarFunctionNameContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_simpleId + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleId" ): + listener.enterSimpleId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleId" ): + listener.exitSimpleId(self) + + + + + def simpleId(self): + + localctx = MySqlParser.SimpleIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 580, self.RULE_simpleId) + try: + self.state = 6369 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,934,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6360 + self.match(MySqlParser.ID) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6361 + self.charsetNameBase() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 6362 + self.transactionLevelBase() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 6363 + self.engineNameBase() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 6364 + self.privilegesBase() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 6365 + self.intervalTypeBase() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 6366 + self.dataTypeBase() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 6367 + self.keywordsCanBeId() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 6368 + self.scalarFunctionName() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DottedIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT_ID(self): + return self.getToken(MySqlParser.DOT_ID, 0) + + def DOT(self): + return self.getToken(MySqlParser.DOT, 0) + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_dottedId + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDottedId" ): + listener.enterDottedId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDottedId" ): + listener.exitDottedId(self) + + + + + def dottedId(self): + + localctx = MySqlParser.DottedIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 582, self.RULE_dottedId) + try: + self.state = 6374 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1155]: + self.enterOuterAlt(localctx, 1) + self.state = 6371 + self.match(MySqlParser.DOT_ID) + pass + elif token in [1132]: + self.enterOuterAlt(localctx, 2) + self.state = 6372 + self.match(MySqlParser.DOT) + self.state = 6373 + self.uid() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DecimalLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DECIMAL_LITERAL(self): + return self.getToken(MySqlParser.DECIMAL_LITERAL, 0) + + def ZERO_DECIMAL(self): + return self.getToken(MySqlParser.ZERO_DECIMAL, 0) + + def ONE_DECIMAL(self): + return self.getToken(MySqlParser.ONE_DECIMAL, 0) + + def TWO_DECIMAL(self): + return self.getToken(MySqlParser.TWO_DECIMAL, 0) + + def REAL_LITERAL(self): + return self.getToken(MySqlParser.REAL_LITERAL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_decimalLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDecimalLiteral" ): + listener.enterDecimalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDecimalLiteral" ): + listener.exitDecimalLiteral(self) + + + + + def decimalLiteral(self): + + localctx = MySqlParser.DecimalLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 584, self.RULE_decimalLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6376 + _la = self._input.LA(1) + if not(((((_la - 1138)) & ~0x3f) == 0 and ((1 << (_la - 1138)) & 10247) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FileSizeLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FILESIZE_LITERAL(self): + return self.getToken(MySqlParser.FILESIZE_LITERAL, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_fileSizeLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFileSizeLiteral" ): + listener.enterFileSizeLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFileSizeLiteral" ): + listener.exitFileSizeLiteral(self) + + + + + def fileSizeLiteral(self): + + localctx = MySqlParser.FileSizeLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 586, self.RULE_fileSizeLiteral) + try: + self.state = 6380 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1146]: + self.enterOuterAlt(localctx, 1) + self.state = 6378 + self.match(MySqlParser.FILESIZE_LITERAL) + pass + elif token in [1138, 1139, 1140, 1149, 1151]: + self.enterOuterAlt(localctx, 2) + self.state = 6379 + self.decimalLiteral() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class StringLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def START_NATIONAL_STRING_LITERAL(self): + return self.getToken(MySqlParser.START_NATIONAL_STRING_LITERAL, 0) + + def STRING_CHARSET_NAME(self): + return self.getToken(MySqlParser.STRING_CHARSET_NAME, 0) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_stringLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStringLiteral" ): + listener.enterStringLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStringLiteral" ): + listener.exitStringLiteral(self) + + + + + def stringLiteral(self): + + localctx = MySqlParser.StringLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 588, self.RULE_stringLiteral) + self._la = 0 # Token type + try: + self.state = 6405 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,943,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6387 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1148, 1154]: + self.state = 6383 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1154: + self.state = 6382 + self.match(MySqlParser.STRING_CHARSET_NAME) + + + self.state = 6385 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [1147]: + self.state = 6386 + self.match(MySqlParser.START_NATIONAL_STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + self.state = 6390 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 6389 + self.match(MySqlParser.STRING_LITERAL) + + else: + raise NoViableAltException(self) + self.state = 6392 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,939,self._ctx) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6399 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1148, 1154]: + self.state = 6395 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1154: + self.state = 6394 + self.match(MySqlParser.STRING_CHARSET_NAME) + + + self.state = 6397 + self.match(MySqlParser.STRING_LITERAL) + pass + elif token in [1147]: + self.state = 6398 + self.match(MySqlParser.START_NATIONAL_STRING_LITERAL) + pass + else: + raise NoViableAltException(self) + + self.state = 6403 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,942,self._ctx) + if la_ == 1: + self.state = 6401 + self.match(MySqlParser.COLLATE) + self.state = 6402 + self.collationName() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BooleanLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRUE(self): + return self.getToken(MySqlParser.TRUE, 0) + + def FALSE(self): + return self.getToken(MySqlParser.FALSE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_booleanLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBooleanLiteral" ): + listener.enterBooleanLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBooleanLiteral" ): + listener.exitBooleanLiteral(self) + + + + + def booleanLiteral(self): + + localctx = MySqlParser.BooleanLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 590, self.RULE_booleanLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6407 + _la = self._input.LA(1) + if not(_la==63 or _la==178): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class HexadecimalLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HEXADECIMAL_LITERAL(self): + return self.getToken(MySqlParser.HEXADECIMAL_LITERAL, 0) + + def STRING_CHARSET_NAME(self): + return self.getToken(MySqlParser.STRING_CHARSET_NAME, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_hexadecimalLiteral + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHexadecimalLiteral" ): + listener.enterHexadecimalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHexadecimalLiteral" ): + listener.exitHexadecimalLiteral(self) + + + + + def hexadecimalLiteral(self): + + localctx = MySqlParser.HexadecimalLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 592, self.RULE_hexadecimalLiteral) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6410 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1154: + self.state = 6409 + self.match(MySqlParser.STRING_CHARSET_NAME) + + + self.state = 6412 + self.match(MySqlParser.HEXADECIMAL_LITERAL) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class NullNotnullContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def NULL_SPEC_LITERAL(self): + return self.getToken(MySqlParser.NULL_SPEC_LITERAL, 0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_nullNotnull + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNullNotnull" ): + listener.enterNullNotnull(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNullNotnull" ): + listener.exitNullNotnull(self) + + + + + def nullNotnull(self): + + localctx = MySqlParser.NullNotnullContext(self, self._ctx, self.state) + self.enterRule(localctx, 594, self.RULE_nullNotnull) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6415 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 6414 + self.match(MySqlParser.NOT) + + + self.state = 6417 + _la = self._input.LA(1) + if not(_la==116 or _la==1152): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstantContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.nullLiteral = None # Token + + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def MINUS(self): + return self.getToken(MySqlParser.MINUS, 0) + + def hexadecimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.HexadecimalLiteralContext,0) + + + def booleanLiteral(self): + return self.getTypedRuleContext(MySqlParser.BooleanLiteralContext,0) + + + def REAL_LITERAL(self): + return self.getToken(MySqlParser.REAL_LITERAL, 0) + + def BIT_STRING(self): + return self.getToken(MySqlParser.BIT_STRING, 0) + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def NULL_SPEC_LITERAL(self): + return self.getToken(MySqlParser.NULL_SPEC_LITERAL, 0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_constant + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstant" ): + listener.enterConstant(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstant" ): + listener.exitConstant(self) + + + + + def constant(self): + + localctx = MySqlParser.ConstantContext(self, self._ctx, self.state) + self.enterRule(localctx, 596, self.RULE_constant) + self._la = 0 # Token type + try: + self.state = 6431 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,947,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6419 + self.stringLiteral() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6420 + self.decimalLiteral() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 6421 + self.match(MySqlParser.MINUS) + self.state = 6422 + self.decimalLiteral() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 6423 + self.hexadecimalLiteral() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 6424 + self.booleanLiteral() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 6425 + self.match(MySqlParser.REAL_LITERAL) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 6426 + self.match(MySqlParser.BIT_STRING) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 6428 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 6427 + self.match(MySqlParser.NOT) + + + self.state = 6430 + localctx.nullLiteral = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==116 or _la==1152): + localctx.nullLiteral = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DataTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_dataType + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SpatialDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def GEOMETRYCOLLECTION(self): + return self.getToken(MySqlParser.GEOMETRYCOLLECTION, 0) + def GEOMCOLLECTION(self): + return self.getToken(MySqlParser.GEOMCOLLECTION, 0) + def LINESTRING(self): + return self.getToken(MySqlParser.LINESTRING, 0) + def MULTILINESTRING(self): + return self.getToken(MySqlParser.MULTILINESTRING, 0) + def MULTIPOINT(self): + return self.getToken(MySqlParser.MULTIPOINT, 0) + def MULTIPOLYGON(self): + return self.getToken(MySqlParser.MULTIPOLYGON, 0) + def POINT(self): + return self.getToken(MySqlParser.POINT, 0) + def POLYGON(self): + return self.getToken(MySqlParser.POLYGON, 0) + def JSON(self): + return self.getToken(MySqlParser.JSON, 0) + def GEOMETRY(self): + return self.getToken(MySqlParser.GEOMETRY, 0) + def SRID(self): + return self.getToken(MySqlParser.SRID, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpatialDataType" ): + listener.enterSpatialDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpatialDataType" ): + listener.exitSpatialDataType(self) + + + class LongVarbinaryDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.copyFrom(ctx) + + def LONG(self): + return self.getToken(MySqlParser.LONG, 0) + def VARBINARY(self): + return self.getToken(MySqlParser.VARBINARY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLongVarbinaryDataType" ): + listener.enterLongVarbinaryDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLongVarbinaryDataType" ): + listener.exitLongVarbinaryDataType(self) + + + class CollectionDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def collectionOptions(self): + return self.getTypedRuleContext(MySqlParser.CollectionOptionsContext,0) + + def ENUM(self): + return self.getToken(MySqlParser.ENUM, 0) + def SET(self): + return self.getToken(MySqlParser.SET, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCollectionDataType" ): + listener.enterCollectionDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCollectionDataType" ): + listener.exitCollectionDataType(self) + + + class NationalVaryingStringDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def NATIONAL(self): + return self.getToken(MySqlParser.NATIONAL, 0) + def VARYING(self): + return self.getToken(MySqlParser.VARYING, 0) + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def lengthOneDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthOneDimensionContext,0) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNationalVaryingStringDataType" ): + listener.enterNationalVaryingStringDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNationalVaryingStringDataType" ): + listener.exitNationalVaryingStringDataType(self) + + + class DimensionDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def TINYINT(self): + return self.getToken(MySqlParser.TINYINT, 0) + def SMALLINT(self): + return self.getToken(MySqlParser.SMALLINT, 0) + def MEDIUMINT(self): + return self.getToken(MySqlParser.MEDIUMINT, 0) + def INT(self): + return self.getToken(MySqlParser.INT, 0) + def INTEGER(self): + return self.getToken(MySqlParser.INTEGER, 0) + def BIGINT(self): + return self.getToken(MySqlParser.BIGINT, 0) + def MIDDLEINT(self): + return self.getToken(MySqlParser.MIDDLEINT, 0) + def INT1(self): + return self.getToken(MySqlParser.INT1, 0) + def INT2(self): + return self.getToken(MySqlParser.INT2, 0) + def INT3(self): + return self.getToken(MySqlParser.INT3, 0) + def INT4(self): + return self.getToken(MySqlParser.INT4, 0) + def INT8(self): + return self.getToken(MySqlParser.INT8, 0) + def lengthOneDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthOneDimensionContext,0) + + def SIGNED(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.SIGNED) + else: + return self.getToken(MySqlParser.SIGNED, i) + def UNSIGNED(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.UNSIGNED) + else: + return self.getToken(MySqlParser.UNSIGNED, i) + def ZEROFILL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.ZEROFILL) + else: + return self.getToken(MySqlParser.ZEROFILL, i) + def REAL(self): + return self.getToken(MySqlParser.REAL, 0) + def lengthTwoDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthTwoDimensionContext,0) + + def DOUBLE(self): + return self.getToken(MySqlParser.DOUBLE, 0) + def PRECISION(self): + return self.getToken(MySqlParser.PRECISION, 0) + def DECIMAL(self): + return self.getToken(MySqlParser.DECIMAL, 0) + def DEC(self): + return self.getToken(MySqlParser.DEC, 0) + def FIXED(self): + return self.getToken(MySqlParser.FIXED, 0) + def NUMERIC(self): + return self.getToken(MySqlParser.NUMERIC, 0) + def FLOAT(self): + return self.getToken(MySqlParser.FLOAT, 0) + def FLOAT4(self): + return self.getToken(MySqlParser.FLOAT4, 0) + def FLOAT8(self): + return self.getToken(MySqlParser.FLOAT8, 0) + def lengthTwoOptionalDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthTwoOptionalDimensionContext,0) + + def BIT(self): + return self.getToken(MySqlParser.BIT, 0) + def TIME(self): + return self.getToken(MySqlParser.TIME, 0) + def TIMESTAMP(self): + return self.getToken(MySqlParser.TIMESTAMP, 0) + def DATETIME(self): + return self.getToken(MySqlParser.DATETIME, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def VARBINARY(self): + return self.getToken(MySqlParser.VARBINARY, 0) + def BLOB(self): + return self.getToken(MySqlParser.BLOB, 0) + def YEAR(self): + return self.getToken(MySqlParser.YEAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDimensionDataType" ): + listener.enterDimensionDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDimensionDataType" ): + listener.exitDimensionDataType(self) + + + class StringDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def VARCHAR(self): + return self.getToken(MySqlParser.VARCHAR, 0) + def TINYTEXT(self): + return self.getToken(MySqlParser.TINYTEXT, 0) + def TEXT(self): + return self.getToken(MySqlParser.TEXT, 0) + def MEDIUMTEXT(self): + return self.getToken(MySqlParser.MEDIUMTEXT, 0) + def LONGTEXT(self): + return self.getToken(MySqlParser.LONGTEXT, 0) + def NCHAR(self): + return self.getToken(MySqlParser.NCHAR, 0) + def NVARCHAR(self): + return self.getToken(MySqlParser.NVARCHAR, 0) + def LONG(self): + return self.getToken(MySqlParser.LONG, 0) + def VARYING(self): + return self.getToken(MySqlParser.VARYING, 0) + def lengthOneDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthOneDimensionContext,0) + + def BINARY(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.BINARY) + else: + return self.getToken(MySqlParser.BINARY, i) + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStringDataType" ): + listener.enterStringDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStringDataType" ): + listener.exitStringDataType(self) + + + class LongVarcharDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def LONG(self): + return self.getToken(MySqlParser.LONG, 0) + def VARCHAR(self): + return self.getToken(MySqlParser.VARCHAR, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLongVarcharDataType" ): + listener.enterLongVarcharDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLongVarcharDataType" ): + listener.exitLongVarcharDataType(self) + + + class NationalStringDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def NATIONAL(self): + return self.getToken(MySqlParser.NATIONAL, 0) + def VARCHAR(self): + return self.getToken(MySqlParser.VARCHAR, 0) + def CHARACTER(self): + return self.getToken(MySqlParser.CHARACTER, 0) + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + def lengthOneDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthOneDimensionContext,0) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def NCHAR(self): + return self.getToken(MySqlParser.NCHAR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNationalStringDataType" ): + listener.enterNationalStringDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNationalStringDataType" ): + listener.exitNationalStringDataType(self) + + + class SimpleDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.DataTypeContext + super().__init__(parser) + self.typeName = None # Token + self.copyFrom(ctx) + + def DATE(self): + return self.getToken(MySqlParser.DATE, 0) + def TINYBLOB(self): + return self.getToken(MySqlParser.TINYBLOB, 0) + def MEDIUMBLOB(self): + return self.getToken(MySqlParser.MEDIUMBLOB, 0) + def LONGBLOB(self): + return self.getToken(MySqlParser.LONGBLOB, 0) + def BOOL(self): + return self.getToken(MySqlParser.BOOL, 0) + def BOOLEAN(self): + return self.getToken(MySqlParser.BOOLEAN, 0) + def SERIAL(self): + return self.getToken(MySqlParser.SERIAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleDataType" ): + listener.enterSimpleDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleDataType" ): + listener.exitSimpleDataType(self) + + + + def dataType(self): + + localctx = MySqlParser.DataTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 598, self.RULE_dataType) + self._la = 0 # Token type + try: + self.state = 6559 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,976,self._ctx) + if la_ == 1: + localctx = MySqlParser.StringDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6433 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==25 or ((((_la - 222)) & ~0x3f) == 0 and ((1 << (_la - 222)) & 31239) != 0) or _la==518): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6435 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==238: + self.state = 6434 + self.match(MySqlParser.VARYING) + + + self.state = 6438 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,949,self._ctx) + if la_ == 1: + self.state = 6437 + self.lengthOneDimension() + + + self.state = 6441 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,950,self._ctx) + if la_ == 1: + self.state = 6440 + self.match(MySqlParser.BINARY) + + + self.state = 6446 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,951,self._ctx) + if la_ == 1: + self.state = 6443 + self.charSet() + self.state = 6444 + self.charsetName() + + + self.state = 6451 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,952,self._ctx) + if la_ == 1: + self.state = 6448 + self.match(MySqlParser.COLLATE) + self.state = 6449 + self.collationName() + + elif la_ == 2: + self.state = 6450 + self.match(MySqlParser.BINARY) + + + pass + + elif la_ == 2: + localctx = MySqlParser.NationalVaryingStringDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6453 + self.match(MySqlParser.NATIONAL) + self.state = 6454 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==25 or _la==222): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6455 + self.match(MySqlParser.VARYING) + self.state = 6457 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,953,self._ctx) + if la_ == 1: + self.state = 6456 + self.lengthOneDimension() + + + self.state = 6460 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,954,self._ctx) + if la_ == 1: + self.state = 6459 + self.match(MySqlParser.BINARY) + + + pass + + elif la_ == 3: + localctx = MySqlParser.NationalStringDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 6462 + self.match(MySqlParser.NATIONAL) + self.state = 6463 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==25 or _la==222 or _la==223): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6465 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,955,self._ctx) + if la_ == 1: + self.state = 6464 + self.lengthOneDimension() + + + self.state = 6468 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,956,self._ctx) + if la_ == 1: + self.state = 6467 + self.match(MySqlParser.BINARY) + + + pass + + elif la_ == 4: + localctx = MySqlParser.NationalStringDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 6470 + self.match(MySqlParser.NCHAR) + self.state = 6471 + localctx.typeName = self.match(MySqlParser.VARCHAR) + self.state = 6473 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,957,self._ctx) + if la_ == 1: + self.state = 6472 + self.lengthOneDimension() + + + self.state = 6476 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,958,self._ctx) + if la_ == 1: + self.state = 6475 + self.match(MySqlParser.BINARY) + + + pass + + elif la_ == 5: + localctx = MySqlParser.DimensionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 6478 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 196)) & ~0x3f) == 0 and ((1 << (_la - 196)) & 4095) != 0)): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6480 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,959,self._ctx) + if la_ == 1: + self.state = 6479 + self.lengthOneDimension() + + + self.state = 6485 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,960,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6482 + _la = self._input.LA(1) + if not(_la==183 or _la==195 or _la==612): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6487 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,960,self._ctx) + + pass + + elif la_ == 6: + localctx = MySqlParser.DimensionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 6488 + localctx.typeName = self.match(MySqlParser.REAL) + self.state = 6490 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,961,self._ctx) + if la_ == 1: + self.state = 6489 + self.lengthTwoDimension() + + + self.state = 6495 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,962,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6492 + _la = self._input.LA(1) + if not(_la==183 or _la==195 or _la==612): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6497 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,962,self._ctx) + + pass + + elif la_ == 7: + localctx = MySqlParser.DimensionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 6498 + localctx.typeName = self.match(MySqlParser.DOUBLE) + self.state = 6500 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==210: + self.state = 6499 + self.match(MySqlParser.PRECISION) + + + self.state = 6503 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,964,self._ctx) + if la_ == 1: + self.state = 6502 + self.lengthTwoDimension() + + + self.state = 6508 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,965,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6505 + _la = self._input.LA(1) + if not(_la==183 or _la==195 or _la==612): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6510 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,965,self._ctx) + + pass + + elif la_ == 8: + localctx = MySqlParser.DimensionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 6511 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 211)) & ~0x3f) == 0 and ((1 << (_la - 211)) & 63) != 0) or _la==431): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6513 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,966,self._ctx) + if la_ == 1: + self.state = 6512 + self.lengthTwoOptionalDimension() + + + self.state = 6518 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,967,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6515 + _la = self._input.LA(1) + if not(_la==183 or _la==195 or _la==612): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6520 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,967,self._ctx) + + pass + + elif la_ == 9: + localctx = MySqlParser.SimpleDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 6521 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & 4237313) != 0) or _la==348 or _la==349): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 10: + localctx = MySqlParser.DimensionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 6522 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 218)) & ~0x3f) == 0 and ((1 << (_la - 218)) & 2831) != 0) or _la==346): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6524 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,968,self._ctx) + if la_ == 1: + self.state = 6523 + self.lengthOneDimension() + + + pass + + elif la_ == 11: + localctx = MySqlParser.CollectionDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 6526 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==153 or _la==237): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6527 + self.collectionOptions() + self.state = 6529 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,969,self._ctx) + if la_ == 1: + self.state = 6528 + self.match(MySqlParser.BINARY) + + + self.state = 6534 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,970,self._ctx) + if la_ == 1: + self.state = 6531 + self.charSet() + self.state = 6532 + self.charsetName() + + + pass + + elif la_ == 12: + localctx = MySqlParser.SpatialDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 6536 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==466 or ((((_la - 803)) & ~0x3f) == 0 and ((1 << (_la - 803)) & 511) != 0)): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6539 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,971,self._ctx) + if la_ == 1: + self.state = 6537 + self.match(MySqlParser.SRID) + self.state = 6538 + self.decimalLiteral() + + + pass + + elif la_ == 13: + localctx = MySqlParser.LongVarcharDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 6541 + localctx.typeName = self.match(MySqlParser.LONG) + self.state = 6543 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==223: + self.state = 6542 + self.match(MySqlParser.VARCHAR) + + + self.state = 6546 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,973,self._ctx) + if la_ == 1: + self.state = 6545 + self.match(MySqlParser.BINARY) + + + self.state = 6551 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,974,self._ctx) + if la_ == 1: + self.state = 6548 + self.charSet() + self.state = 6549 + self.charsetName() + + + self.state = 6555 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,975,self._ctx) + if la_ == 1: + self.state = 6553 + self.match(MySqlParser.COLLATE) + self.state = 6554 + self.collationName() + + + pass + + elif la_ == 14: + localctx = MySqlParser.LongVarbinaryDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 6557 + self.match(MySqlParser.LONG) + self.state = 6558 + self.match(MySqlParser.VARBINARY) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CollectionOptionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_collectionOptions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCollectionOptions" ): + listener.enterCollectionOptions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCollectionOptions" ): + listener.exitCollectionOptions(self) + + + + + def collectionOptions(self): + + localctx = MySqlParser.CollectionOptionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 600, self.RULE_collectionOptions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6561 + self.match(MySqlParser.LR_BRACKET) + self.state = 6562 + self.match(MySqlParser.STRING_LITERAL) + self.state = 6567 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6563 + self.match(MySqlParser.COMMA) + self.state = 6564 + self.match(MySqlParser.STRING_LITERAL) + self.state = 6569 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 6570 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConvertedDataTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.typeName = None # Token + + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + + def SIGNED(self): + return self.getToken(MySqlParser.SIGNED, 0) + + def UNSIGNED(self): + return self.getToken(MySqlParser.UNSIGNED, 0) + + def ARRAY(self): + return self.getToken(MySqlParser.ARRAY, 0) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def NCHAR(self): + return self.getToken(MySqlParser.NCHAR, 0) + + def DATE(self): + return self.getToken(MySqlParser.DATE, 0) + + def DATETIME(self): + return self.getToken(MySqlParser.DATETIME, 0) + + def TIME(self): + return self.getToken(MySqlParser.TIME, 0) + + def JSON(self): + return self.getToken(MySqlParser.JSON, 0) + + def INT(self): + return self.getToken(MySqlParser.INT, 0) + + def INTEGER(self): + return self.getToken(MySqlParser.INTEGER, 0) + + def DECIMAL(self): + return self.getToken(MySqlParser.DECIMAL, 0) + + def DEC(self): + return self.getToken(MySqlParser.DEC, 0) + + def lengthOneDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthOneDimensionContext,0) + + + def charSet(self): + return self.getTypedRuleContext(MySqlParser.CharSetContext,0) + + + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def lengthTwoOptionalDimension(self): + return self.getTypedRuleContext(MySqlParser.LengthTwoOptionalDimensionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_convertedDataType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConvertedDataType" ): + listener.enterConvertedDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConvertedDataType" ): + listener.exitConvertedDataType(self) + + + + + def convertedDataType(self): + + localctx = MySqlParser.ConvertedDataTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 602, self.RULE_convertedDataType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6594 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [226, 518]: + self.state = 6572 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==226 or _la==518): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6574 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 6573 + self.lengthOneDimension() + + + pass + elif token in [222]: + self.state = 6576 + localctx.typeName = self.match(MySqlParser.CHAR) + self.state = 6578 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 6577 + self.lengthOneDimension() + + + self.state = 6583 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==25 or _la==222 or _la==841: + self.state = 6580 + self.charSet() + self.state = 6581 + self.charsetName() + + + pass + elif token in [200, 206, 217, 218, 220, 466]: + self.state = 6585 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 200)) & ~0x3f) == 0 and ((1 << (_la - 200)) & 1441857) != 0) or _la==466): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [214, 215]: + self.state = 6586 + localctx.typeName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==214 or _la==215): + localctx.typeName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6588 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1133: + self.state = 6587 + self.lengthTwoOptionalDimension() + + + pass + elif token in [183, 612]: + self.state = 6590 + _la = self._input.LA(1) + if not(_la==183 or _la==612): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6592 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==200 or _la==206: + self.state = 6591 + _la = self._input.LA(1) + if not(_la==200 or _la==206): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + pass + else: + raise NoViableAltException(self) + + self.state = 6597 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==11: + self.state = 6596 + self.match(MySqlParser.ARRAY) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LengthOneDimensionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lengthOneDimension + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLengthOneDimension" ): + listener.enterLengthOneDimension(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLengthOneDimension" ): + listener.exitLengthOneDimension(self) + + + + + def lengthOneDimension(self): + + localctx = MySqlParser.LengthOneDimensionContext(self, self._ctx, self.state) + self.enterRule(localctx, 604, self.RULE_lengthOneDimension) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6599 + self.match(MySqlParser.LR_BRACKET) + self.state = 6600 + self.decimalLiteral() + self.state = 6601 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LengthTwoDimensionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lengthTwoDimension + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLengthTwoDimension" ): + listener.enterLengthTwoDimension(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLengthTwoDimension" ): + listener.exitLengthTwoDimension(self) + + + + + def lengthTwoDimension(self): + + localctx = MySqlParser.LengthTwoDimensionContext(self, self._ctx, self.state) + self.enterRule(localctx, 606, self.RULE_lengthTwoDimension) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6603 + self.match(MySqlParser.LR_BRACKET) + self.state = 6604 + self.decimalLiteral() + self.state = 6605 + self.match(MySqlParser.COMMA) + self.state = 6606 + self.decimalLiteral() + self.state = 6607 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LengthTwoOptionalDimensionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_lengthTwoOptionalDimension + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLengthTwoOptionalDimension" ): + listener.enterLengthTwoOptionalDimension(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLengthTwoOptionalDimension" ): + listener.exitLengthTwoOptionalDimension(self) + + + + + def lengthTwoOptionalDimension(self): + + localctx = MySqlParser.LengthTwoOptionalDimensionContext(self, self._ctx, self.state) + self.enterRule(localctx, 608, self.RULE_lengthTwoOptionalDimension) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6609 + self.match(MySqlParser.LR_BRACKET) + self.state = 6610 + self.decimalLiteral() + self.state = 6613 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 6611 + self.match(MySqlParser.COMMA) + self.state = 6612 + self.decimalLiteral() + + + self.state = 6615 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UidListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.UidContext) + else: + return self.getTypedRuleContext(MySqlParser.UidContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_uidList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUidList" ): + listener.enterUidList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUidList" ): + listener.exitUidList(self) + + + + + def uidList(self): + + localctx = MySqlParser.UidListContext(self, self._ctx, self.state) + self.enterRule(localctx, 610, self.RULE_uidList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6617 + self.uid() + self.state = 6622 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,986,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6618 + self.match(MySqlParser.COMMA) + self.state = 6619 + self.uid() + self.state = 6624 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,986,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FullColumnNameListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def fullColumnName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullColumnNameContext) + else: + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_fullColumnNameList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFullColumnNameList" ): + listener.enterFullColumnNameList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFullColumnNameList" ): + listener.exitFullColumnNameList(self) + + + + + def fullColumnNameList(self): + + localctx = MySqlParser.FullColumnNameListContext(self, self._ctx, self.state) + self.enterRule(localctx, 612, self.RULE_fullColumnNameList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6625 + self.fullColumnName() + self.state = 6630 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6626 + self.match(MySqlParser.COMMA) + self.state = 6627 + self.fullColumnName() + self.state = 6632 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TablesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.TableNameContext) + else: + return self.getTypedRuleContext(MySqlParser.TableNameContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_tables + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTables" ): + listener.enterTables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTables" ): + listener.exitTables(self) + + + + + def tables(self): + + localctx = MySqlParser.TablesContext(self, self._ctx, self.state) + self.enterRule(localctx, 614, self.RULE_tables) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6633 + self.tableName() + self.state = 6638 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,988,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 6634 + self.match(MySqlParser.COMMA) + self.state = 6635 + self.tableName() + self.state = 6640 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,988,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IndexColumnNamesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def indexColumnName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.IndexColumnNameContext) + else: + return self.getTypedRuleContext(MySqlParser.IndexColumnNameContext,i) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_indexColumnNames + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndexColumnNames" ): + listener.enterIndexColumnNames(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndexColumnNames" ): + listener.exitIndexColumnNames(self) + + + + + def indexColumnNames(self): + + localctx = MySqlParser.IndexColumnNamesContext(self, self._ctx, self.state) + self.enterRule(localctx, 616, self.RULE_indexColumnNames) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6641 + self.match(MySqlParser.LR_BRACKET) + self.state = 6642 + self.indexColumnName() + self.state = 6647 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6643 + self.match(MySqlParser.COMMA) + self.state = 6644 + self.indexColumnName() + self.state = 6649 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 6650 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_expressions + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpressions" ): + listener.enterExpressions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpressions" ): + listener.exitExpressions(self) + + + + + def expressions(self): + + localctx = MySqlParser.ExpressionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 618, self.RULE_expressions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6652 + self.expression(0) + self.state = 6657 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6653 + self.match(MySqlParser.COMMA) + self.state = 6654 + self.expression(0) + self.state = 6659 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionsWithDefaultsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expressionOrDefault(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionOrDefaultContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionOrDefaultContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_expressionsWithDefaults + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpressionsWithDefaults" ): + listener.enterExpressionsWithDefaults(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpressionsWithDefaults" ): + listener.exitExpressionsWithDefaults(self) + + + + + def expressionsWithDefaults(self): + + localctx = MySqlParser.ExpressionsWithDefaultsContext(self, self._ctx, self.state) + self.enterRule(localctx, 620, self.RULE_expressionsWithDefaults) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6660 + self.expressionOrDefault() + self.state = 6665 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6661 + self.match(MySqlParser.COMMA) + self.state = 6662 + self.expressionOrDefault() + self.state = 6667 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ConstantsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constant(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ConstantContext) + else: + return self.getTypedRuleContext(MySqlParser.ConstantContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_constants + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstants" ): + listener.enterConstants(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstants" ): + listener.exitConstants(self) + + + + + def constants(self): + + localctx = MySqlParser.ConstantsContext(self, self._ctx, self.state) + self.enterRule(localctx, 622, self.RULE_constants) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6668 + self.constant() + self.state = 6673 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6669 + self.match(MySqlParser.COMMA) + self.state = 6670 + self.constant() + self.state = 6675 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SimpleStringsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING_LITERAL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.STRING_LITERAL) + else: + return self.getToken(MySqlParser.STRING_LITERAL, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_simpleStrings + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleStrings" ): + listener.enterSimpleStrings(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleStrings" ): + listener.exitSimpleStrings(self) + + + + + def simpleStrings(self): + + localctx = MySqlParser.SimpleStringsContext(self, self._ctx, self.state) + self.enterRule(localctx, 624, self.RULE_simpleStrings) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6676 + self.match(MySqlParser.STRING_LITERAL) + self.state = 6681 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6677 + self.match(MySqlParser.COMMA) + self.state = 6678 + self.match(MySqlParser.STRING_LITERAL) + self.state = 6683 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class UserVariablesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCAL_ID(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LOCAL_ID) + else: + return self.getToken(MySqlParser.LOCAL_ID, i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_userVariables + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserVariables" ): + listener.enterUserVariables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserVariables" ): + listener.exitUserVariables(self) + + + + + def userVariables(self): + + localctx = MySqlParser.UserVariablesContext(self, self._ctx, self.state) + self.enterRule(localctx, 626, self.RULE_userVariables) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6684 + self.match(MySqlParser.LOCAL_ID) + self.state = 6689 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6685 + self.match(MySqlParser.COMMA) + self.state = 6686 + self.match(MySqlParser.LOCAL_ID) + self.state = 6691 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DefaultValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NULL_LITERAL(self): + return self.getToken(MySqlParser.NULL_LITERAL, 0) + + def CAST(self): + return self.getToken(MySqlParser.CAST, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def convertedDataType(self): + return self.getTypedRuleContext(MySqlParser.ConvertedDataTypeContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def constant(self): + return self.getTypedRuleContext(MySqlParser.ConstantContext,0) + + + def unaryOperator(self): + return self.getTypedRuleContext(MySqlParser.UnaryOperatorContext,0) + + + def currentTimestamp(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CurrentTimestampContext) + else: + return self.getTypedRuleContext(MySqlParser.CurrentTimestampContext,i) + + + def ON(self): + return self.getToken(MySqlParser.ON, 0) + + def UPDATE(self): + return self.getToken(MySqlParser.UPDATE, 0) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_defaultValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefaultValue" ): + listener.enterDefaultValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefaultValue" ): + listener.exitDefaultValue(self) + + + + + def defaultValue(self): + + localctx = MySqlParser.DefaultValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 628, self.RULE_defaultValue) + try: + self.state = 6718 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,997,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6692 + self.match(MySqlParser.NULL_LITERAL) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6693 + self.match(MySqlParser.CAST) + self.state = 6694 + self.match(MySqlParser.LR_BRACKET) + self.state = 6695 + self.expression(0) + self.state = 6696 + self.match(MySqlParser.AS) + self.state = 6697 + self.convertedDataType() + self.state = 6698 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 6701 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,995,self._ctx) + if la_ == 1: + self.state = 6700 + self.unaryOperator() + + + self.state = 6703 + self.constant() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 6704 + self.currentTimestamp() + self.state = 6708 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,996,self._ctx) + if la_ == 1: + self.state = 6705 + self.match(MySqlParser.ON) + self.state = 6706 + self.match(MySqlParser.UPDATE) + self.state = 6707 + self.currentTimestamp() + + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 6710 + self.match(MySqlParser.LR_BRACKET) + self.state = 6711 + self.expression(0) + self.state = 6712 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 6714 + self.match(MySqlParser.LR_BRACKET) + self.state = 6715 + self.fullId() + self.state = 6716 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CurrentTimestampContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NOW(self): + return self.getToken(MySqlParser.NOW, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def CURRENT_TIMESTAMP(self): + return self.getToken(MySqlParser.CURRENT_TIMESTAMP, 0) + + def LOCALTIME(self): + return self.getToken(MySqlParser.LOCALTIME, 0) + + def LOCALTIMESTAMP(self): + return self.getToken(MySqlParser.LOCALTIMESTAMP, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_currentTimestamp + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCurrentTimestamp" ): + listener.enterCurrentTimestamp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCurrentTimestamp" ): + listener.exitCurrentTimestamp(self) + + + + + def currentTimestamp(self): + + localctx = MySqlParser.CurrentTimestampContext(self, self._ctx, self.state) + self.enterRule(localctx, 630, self.RULE_currentTimestamp) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6734 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [315, 316, 322]: + self.state = 6720 + _la = self._input.LA(1) + if not(((((_la - 315)) & ~0x3f) == 0 and ((1 << (_la - 315)) & 131) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6726 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,999,self._ctx) + if la_ == 1: + self.state = 6721 + self.match(MySqlParser.LR_BRACKET) + self.state = 6723 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 1138)) & ~0x3f) == 0 and ((1 << (_la - 1138)) & 10247) != 0): + self.state = 6722 + self.decimalLiteral() + + + self.state = 6725 + self.match(MySqlParser.RR_BRACKET) + + + pass + elif token in [323]: + self.state = 6728 + self.match(MySqlParser.NOW) + self.state = 6729 + self.match(MySqlParser.LR_BRACKET) + self.state = 6731 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 1138)) & ~0x3f) == 0 and ((1 << (_la - 1138)) & 10247) != 0): + self.state = 6730 + self.decimalLiteral() + + + self.state = 6733 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionOrDefaultContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_expressionOrDefault + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpressionOrDefault" ): + listener.enterExpressionOrDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpressionOrDefault" ): + listener.exitExpressionOrDefault(self) + + + + + def expressionOrDefault(self): + + localctx = MySqlParser.ExpressionOrDefaultContext(self, self._ctx, self.state) + self.enterRule(localctx, 632, self.RULE_expressionOrDefault) + try: + self.state = 6738 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1002,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 6736 + self.expression(0) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 6737 + self.match(MySqlParser.DEFAULT) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfExistsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(MySqlParser.IF, 0) + + def EXISTS(self): + return self.getToken(MySqlParser.EXISTS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_ifExists + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfExists" ): + listener.enterIfExists(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfExists" ): + listener.exitIfExists(self) + + + + + def ifExists(self): + + localctx = MySqlParser.IfExistsContext(self, self._ctx, self.state) + self.enterRule(localctx, 634, self.RULE_ifExists) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6740 + self.match(MySqlParser.IF) + self.state = 6741 + self.match(MySqlParser.EXISTS) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IfNotExistsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(MySqlParser.IF, 0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def EXISTS(self): + return self.getToken(MySqlParser.EXISTS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_ifNotExists + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfNotExists" ): + listener.enterIfNotExists(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfNotExists" ): + listener.exitIfNotExists(self) + + + + + def ifNotExists(self): + + localctx = MySqlParser.IfNotExistsContext(self, self._ctx, self.state) + self.enterRule(localctx, 636, self.RULE_ifNotExists) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6743 + self.match(MySqlParser.IF) + self.state = 6744 + self.match(MySqlParser.NOT) + self.state = 6745 + self.match(MySqlParser.EXISTS) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OrReplaceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OR(self): + return self.getToken(MySqlParser.OR, 0) + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_orReplace + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrReplace" ): + listener.enterOrReplace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrReplace" ): + listener.exitOrReplace(self) + + + + + def orReplace(self): + + localctx = MySqlParser.OrReplaceContext(self, self._ctx, self.state) + self.enterRule(localctx, 638, self.RULE_orReplace) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6747 + self.match(MySqlParser.OR) + self.state = 6748 + self.match(MySqlParser.REPLACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WaitNowaitClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def NOWAIT(self): + return self.getToken(MySqlParser.NOWAIT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_waitNowaitClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWaitNowaitClause" ): + listener.enterWaitNowaitClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWaitNowaitClause" ): + listener.exitWaitNowaitClause(self) + + + + + def waitNowaitClause(self): + + localctx = MySqlParser.WaitNowaitClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 640, self.RULE_waitNowaitClause) + try: + self.state = 6753 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [674]: + self.enterOuterAlt(localctx, 1) + self.state = 6750 + self.match(MySqlParser.WAIT) + self.state = 6751 + self.decimalLiteral() + pass + elif token in [527]: + self.enterOuterAlt(localctx, 2) + self.state = 6752 + self.match(MySqlParser.NOWAIT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionCallContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_functionCall + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SpecificFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def specificFunction(self): + return self.getTypedRuleContext(MySqlParser.SpecificFunctionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpecificFunctionCall" ): + listener.enterSpecificFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpecificFunctionCall" ): + listener.exitSpecificFunctionCall(self) + + + class PasswordFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def passwordFunctionClause(self): + return self.getTypedRuleContext(MySqlParser.PasswordFunctionClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPasswordFunctionCall" ): + listener.enterPasswordFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPasswordFunctionCall" ): + listener.exitPasswordFunctionCall(self) + + + class UdfFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def fullId(self): + return self.getTypedRuleContext(MySqlParser.FullIdContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def functionArgs(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgsContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUdfFunctionCall" ): + listener.enterUdfFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUdfFunctionCall" ): + listener.exitUdfFunctionCall(self) + + + class NonAggregateFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def nonAggregateWindowedFunction(self): + return self.getTypedRuleContext(MySqlParser.NonAggregateWindowedFunctionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNonAggregateFunctionCall" ): + listener.enterNonAggregateFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNonAggregateFunctionCall" ): + listener.exitNonAggregateFunctionCall(self) + + + class AggregateFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def aggregateWindowedFunction(self): + return self.getTypedRuleContext(MySqlParser.AggregateWindowedFunctionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAggregateFunctionCall" ): + listener.enterAggregateFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAggregateFunctionCall" ): + listener.exitAggregateFunctionCall(self) + + + class ScalarFunctionCallContext(FunctionCallContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.FunctionCallContext + super().__init__(parser) + self.copyFrom(ctx) + + def scalarFunctionName(self): + return self.getTypedRuleContext(MySqlParser.ScalarFunctionNameContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def functionArgs(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgsContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterScalarFunctionCall" ): + listener.enterScalarFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitScalarFunctionCall" ): + listener.exitScalarFunctionCall(self) + + + + def functionCall(self): + + localctx = MySqlParser.FunctionCallContext(self, self._ctx, self.state) + self.enterRule(localctx, 642, self.RULE_functionCall) + try: + self.state = 6773 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1006,self._ctx) + if la_ == 1: + localctx = MySqlParser.SpecificFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6755 + self.specificFunction() + pass + + elif la_ == 2: + localctx = MySqlParser.AggregateFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6756 + self.aggregateWindowedFunction() + pass + + elif la_ == 3: + localctx = MySqlParser.NonAggregateFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 6757 + self.nonAggregateWindowedFunction() + pass + + elif la_ == 4: + localctx = MySqlParser.ScalarFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 6758 + self.scalarFunctionName() + self.state = 6759 + self.match(MySqlParser.LR_BRACKET) + self.state = 6761 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1004,self._ctx) + if la_ == 1: + self.state = 6760 + self.functionArgs() + + + self.state = 6763 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 5: + localctx = MySqlParser.UdfFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 6765 + self.fullId() + self.state = 6766 + self.match(MySqlParser.LR_BRACKET) + self.state = 6768 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1005,self._ctx) + if la_ == 1: + self.state = 6767 + self.functionArgs() + + + self.state = 6770 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 6: + localctx = MySqlParser.PasswordFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 6772 + self.passwordFunctionClause() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class SpecificFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_specificFunction + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class PositionFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.positionString = None # StringLiteralContext + self.positionExpression = None # ExpressionContext + self.inString = None # StringLiteralContext + self.inExpression = None # ExpressionContext + self.copyFrom(ctx) + + def POSITION(self): + return self.getToken(MySqlParser.POSITION, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def IN(self): + return self.getToken(MySqlParser.IN, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def stringLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.StringLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,i) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPositionFunctionCall" ): + listener.enterPositionFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPositionFunctionCall" ): + listener.exitPositionFunctionCall(self) + + + class TrimFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.positioinForm = None # Token + self.sourceString = None # StringLiteralContext + self.sourceExpression = None # ExpressionContext + self.fromString = None # StringLiteralContext + self.fromExpression = None # ExpressionContext + self.copyFrom(ctx) + + def TRIM(self): + return self.getToken(MySqlParser.TRIM, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def BOTH(self): + return self.getToken(MySqlParser.BOTH, 0) + def LEADING(self): + return self.getToken(MySqlParser.LEADING, 0) + def TRAILING(self): + return self.getToken(MySqlParser.TRAILING, 0) + def stringLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.StringLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,i) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTrimFunctionCall" ): + listener.enterTrimFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTrimFunctionCall" ): + listener.exitTrimFunctionCall(self) + + + class JsonValueFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.copyFrom(ctx) + + def JSON_VALUE(self): + return self.getToken(MySqlParser.JSON_VALUE, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def RETURNING(self): + return self.getToken(MySqlParser.RETURNING, 0) + def convertedDataType(self): + return self.getTypedRuleContext(MySqlParser.ConvertedDataTypeContext,0) + + def jsonOnEmpty(self): + return self.getTypedRuleContext(MySqlParser.JsonOnEmptyContext,0) + + def jsonOnError(self): + return self.getTypedRuleContext(MySqlParser.JsonOnErrorContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonValueFunctionCall" ): + listener.enterJsonValueFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonValueFunctionCall" ): + listener.exitJsonValueFunctionCall(self) + + + class CaseFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.elseArg = None # FunctionArgContext + self.copyFrom(ctx) + + def CASE(self): + return self.getToken(MySqlParser.CASE, 0) + def END(self): + return self.getToken(MySqlParser.END, 0) + def caseFuncAlternative(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CaseFuncAlternativeContext) + else: + return self.getTypedRuleContext(MySqlParser.CaseFuncAlternativeContext,i) + + def ELSE(self): + return self.getToken(MySqlParser.ELSE, 0) + def functionArg(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseFunctionCall" ): + listener.enterCaseFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseFunctionCall" ): + listener.exitCaseFunctionCall(self) + + + class ExtractFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.sourceString = None # StringLiteralContext + self.sourceExpression = None # ExpressionContext + self.copyFrom(ctx) + + def EXTRACT(self): + return self.getToken(MySqlParser.EXTRACT, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def intervalType(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeContext,0) + + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExtractFunctionCall" ): + listener.enterExtractFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExtractFunctionCall" ): + listener.exitExtractFunctionCall(self) + + + class DataTypeFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.separator = None # Token + self.copyFrom(ctx) + + def CONVERT(self): + return self.getToken(MySqlParser.CONVERT, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def convertedDataType(self): + return self.getTypedRuleContext(MySqlParser.ConvertedDataTypeContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + def USING(self): + return self.getToken(MySqlParser.USING, 0) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + def CAST(self): + return self.getToken(MySqlParser.CAST, 0) + def AS(self): + return self.getToken(MySqlParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDataTypeFunctionCall" ): + listener.enterDataTypeFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDataTypeFunctionCall" ): + listener.exitDataTypeFunctionCall(self) + + + class ValuesFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.copyFrom(ctx) + + def VALUES(self): + return self.getToken(MySqlParser.VALUES, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterValuesFunctionCall" ): + listener.enterValuesFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitValuesFunctionCall" ): + listener.exitValuesFunctionCall(self) + + + class CaseExpressionFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.elseArg = None # FunctionArgContext + self.copyFrom(ctx) + + def CASE(self): + return self.getToken(MySqlParser.CASE, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + def caseFuncAlternative(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.CaseFuncAlternativeContext) + else: + return self.getTypedRuleContext(MySqlParser.CaseFuncAlternativeContext,i) + + def ELSE(self): + return self.getToken(MySqlParser.ELSE, 0) + def functionArg(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseExpressionFunctionCall" ): + listener.enterCaseExpressionFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseExpressionFunctionCall" ): + listener.exitCaseExpressionFunctionCall(self) + + + class SimpleFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.copyFrom(ctx) + + def CURRENT_DATE(self): + return self.getToken(MySqlParser.CURRENT_DATE, 0) + def CURRENT_TIME(self): + return self.getToken(MySqlParser.CURRENT_TIME, 0) + def CURRENT_TIMESTAMP(self): + return self.getToken(MySqlParser.CURRENT_TIMESTAMP, 0) + def CURRENT_USER(self): + return self.getToken(MySqlParser.CURRENT_USER, 0) + def LOCALTIME(self): + return self.getToken(MySqlParser.LOCALTIME, 0) + def UTC_TIMESTAMP(self): + return self.getToken(MySqlParser.UTC_TIMESTAMP, 0) + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleFunctionCall" ): + listener.enterSimpleFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleFunctionCall" ): + listener.exitSimpleFunctionCall(self) + + + class CharFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.copyFrom(ctx) + + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def functionArgs(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgsContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def USING(self): + return self.getToken(MySqlParser.USING, 0) + def charsetName(self): + return self.getTypedRuleContext(MySqlParser.CharsetNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCharFunctionCall" ): + listener.enterCharFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCharFunctionCall" ): + listener.exitCharFunctionCall(self) + + + class WeightFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.stringFormat = None # Token + self.copyFrom(ctx) + + def WEIGHT_STRING(self): + return self.getToken(MySqlParser.WEIGHT_STRING, 0) + def LR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LR_BRACKET) + else: + return self.getToken(MySqlParser.LR_BRACKET, i) + def RR_BRACKET(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.RR_BRACKET) + else: + return self.getToken(MySqlParser.RR_BRACKET, i) + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def AS(self): + return self.getToken(MySqlParser.AS, 0) + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + def levelsInWeightString(self): + return self.getTypedRuleContext(MySqlParser.LevelsInWeightStringContext,0) + + def CHAR(self): + return self.getToken(MySqlParser.CHAR, 0) + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWeightFunctionCall" ): + listener.enterWeightFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWeightFunctionCall" ): + listener.exitWeightFunctionCall(self) + + + class GetFormatFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.datetimeFormat = None # Token + self.copyFrom(ctx) + + def GET_FORMAT(self): + return self.getToken(MySqlParser.GET_FORMAT, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def COMMA(self): + return self.getToken(MySqlParser.COMMA, 0) + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def DATE(self): + return self.getToken(MySqlParser.DATE, 0) + def TIME(self): + return self.getToken(MySqlParser.TIME, 0) + def DATETIME(self): + return self.getToken(MySqlParser.DATETIME, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGetFormatFunctionCall" ): + listener.enterGetFormatFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGetFormatFunctionCall" ): + listener.exitGetFormatFunctionCall(self) + + + class SubstrFunctionCallContext(SpecificFunctionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.SpecificFunctionContext + super().__init__(parser) + self.sourceString = None # StringLiteralContext + self.sourceExpression = None # ExpressionContext + self.fromDecimal = None # DecimalLiteralContext + self.fromExpression = None # ExpressionContext + self.forDecimal = None # DecimalLiteralContext + self.forExpression = None # ExpressionContext + self.copyFrom(ctx) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def FROM(self): + return self.getToken(MySqlParser.FROM, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def SUBSTR(self): + return self.getToken(MySqlParser.SUBSTR, 0) + def SUBSTRING(self): + return self.getToken(MySqlParser.SUBSTRING, 0) + def stringLiteral(self): + return self.getTypedRuleContext(MySqlParser.StringLiteralContext,0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + def FOR(self): + return self.getToken(MySqlParser.FOR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubstrFunctionCall" ): + listener.enterSubstrFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubstrFunctionCall" ): + listener.exitSubstrFunctionCall(self) + + + + def specificFunction(self): + + localctx = MySqlParser.SpecificFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 644, self.RULE_specificFunction) + self._la = 0 # Token type + try: + self.state = 6953 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1030,self._ctx) + if la_ == 1: + localctx = MySqlParser.SimpleFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6775 + _la = self._input.LA(1) + if not(_la==37 or _la==150 or ((((_la - 313)) & ~0x3f) == 0 and ((1 << (_la - 313)) & 262159) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6778 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1007,self._ctx) + if la_ == 1: + self.state = 6776 + self.match(MySqlParser.LR_BRACKET) + self.state = 6777 + self.match(MySqlParser.RR_BRACKET) + + + pass + + elif la_ == 2: + localctx = MySqlParser.DataTypeFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6780 + self.match(MySqlParser.CONVERT) + self.state = 6781 + self.match(MySqlParser.LR_BRACKET) + self.state = 6782 + self.expression(0) + self.state = 6783 + localctx.separator = self.match(MySqlParser.COMMA) + self.state = 6784 + self.convertedDataType() + self.state = 6785 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 3: + localctx = MySqlParser.DataTypeFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 6787 + self.match(MySqlParser.CONVERT) + self.state = 6788 + self.match(MySqlParser.LR_BRACKET) + self.state = 6789 + self.expression(0) + self.state = 6790 + self.match(MySqlParser.USING) + self.state = 6791 + self.charsetName() + self.state = 6792 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 4: + localctx = MySqlParser.DataTypeFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 6794 + self.match(MySqlParser.CAST) + self.state = 6795 + self.match(MySqlParser.LR_BRACKET) + self.state = 6796 + self.expression(0) + self.state = 6797 + self.match(MySqlParser.AS) + self.state = 6798 + self.convertedDataType() + self.state = 6799 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 5: + localctx = MySqlParser.ValuesFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 6801 + self.match(MySqlParser.VALUES) + self.state = 6802 + self.match(MySqlParser.LR_BRACKET) + self.state = 6803 + self.fullColumnName() + self.state = 6804 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 6: + localctx = MySqlParser.CaseExpressionFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 6806 + self.match(MySqlParser.CASE) + self.state = 6807 + self.expression(0) + self.state = 6809 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 6808 + self.caseFuncAlternative() + self.state = 6811 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==189): + break + + self.state = 6815 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==53: + self.state = 6813 + self.match(MySqlParser.ELSE) + self.state = 6814 + localctx.elseArg = self.functionArg() + + + self.state = 6817 + self.match(MySqlParser.END) + pass + + elif la_ == 7: + localctx = MySqlParser.CaseFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 6819 + self.match(MySqlParser.CASE) + self.state = 6821 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 6820 + self.caseFuncAlternative() + self.state = 6823 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==189): + break + + self.state = 6827 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==53: + self.state = 6825 + self.match(MySqlParser.ELSE) + self.state = 6826 + localctx.elseArg = self.functionArg() + + + self.state = 6829 + self.match(MySqlParser.END) + pass + + elif la_ == 8: + localctx = MySqlParser.CharFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 6831 + self.match(MySqlParser.CHAR) + self.state = 6832 + self.match(MySqlParser.LR_BRACKET) + self.state = 6833 + self.functionArgs() + self.state = 6836 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==187: + self.state = 6834 + self.match(MySqlParser.USING) + self.state = 6835 + self.charsetName() + + + self.state = 6838 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 9: + localctx = MySqlParser.PositionFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 6840 + self.match(MySqlParser.POSITION) + self.state = 6841 + self.match(MySqlParser.LR_BRACKET) + self.state = 6844 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1013,self._ctx) + if la_ == 1: + self.state = 6842 + localctx.positionString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6843 + localctx.positionExpression = self.expression(0) + pass + + + self.state = 6846 + self.match(MySqlParser.IN) + self.state = 6849 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1014,self._ctx) + if la_ == 1: + self.state = 6847 + localctx.inString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6848 + localctx.inExpression = self.expression(0) + pass + + + self.state = 6851 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 10: + localctx = MySqlParser.SubstrFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 6853 + _la = self._input.LA(1) + if not(_la==325 or _la==326): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6854 + self.match(MySqlParser.LR_BRACKET) + self.state = 6857 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1015,self._ctx) + if la_ == 1: + self.state = 6855 + localctx.sourceString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6856 + localctx.sourceExpression = self.expression(0) + pass + + + self.state = 6859 + self.match(MySqlParser.FROM) + self.state = 6862 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1016,self._ctx) + if la_ == 1: + self.state = 6860 + localctx.fromDecimal = self.decimalLiteral() + pass + + elif la_ == 2: + self.state = 6861 + localctx.fromExpression = self.expression(0) + pass + + + self.state = 6869 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==65: + self.state = 6864 + self.match(MySqlParser.FOR) + self.state = 6867 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1017,self._ctx) + if la_ == 1: + self.state = 6865 + localctx.forDecimal = self.decimalLiteral() + pass + + elif la_ == 2: + self.state = 6866 + localctx.forExpression = self.expression(0) + pass + + + + + self.state = 6871 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 11: + localctx = MySqlParser.TrimFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 6873 + self.match(MySqlParser.TRIM) + self.state = 6874 + self.match(MySqlParser.LR_BRACKET) + self.state = 6875 + localctx.positioinForm = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==17 or _la==95 or _la==176): + localctx.positioinForm = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6878 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1019,self._ctx) + if la_ == 1: + self.state = 6876 + localctx.sourceString = self.stringLiteral() + + elif la_ == 2: + self.state = 6877 + localctx.sourceExpression = self.expression(0) + + + self.state = 6880 + self.match(MySqlParser.FROM) + self.state = 6883 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1020,self._ctx) + if la_ == 1: + self.state = 6881 + localctx.fromString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6882 + localctx.fromExpression = self.expression(0) + pass + + + self.state = 6885 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 12: + localctx = MySqlParser.TrimFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 6887 + self.match(MySqlParser.TRIM) + self.state = 6888 + self.match(MySqlParser.LR_BRACKET) + self.state = 6891 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1021,self._ctx) + if la_ == 1: + self.state = 6889 + localctx.sourceString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6890 + localctx.sourceExpression = self.expression(0) + pass + + + self.state = 6893 + self.match(MySqlParser.FROM) + self.state = 6896 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1022,self._ctx) + if la_ == 1: + self.state = 6894 + localctx.fromString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6895 + localctx.fromExpression = self.expression(0) + pass + + + self.state = 6898 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 13: + localctx = MySqlParser.WeightFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 6900 + self.match(MySqlParser.WEIGHT_STRING) + self.state = 6901 + self.match(MySqlParser.LR_BRACKET) + self.state = 6904 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1023,self._ctx) + if la_ == 1: + self.state = 6902 + self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6903 + self.expression(0) + pass + + + self.state = 6912 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==12: + self.state = 6906 + self.match(MySqlParser.AS) + self.state = 6907 + localctx.stringFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==222 or _la==226): + localctx.stringFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6908 + self.match(MySqlParser.LR_BRACKET) + self.state = 6909 + self.decimalLiteral() + self.state = 6910 + self.match(MySqlParser.RR_BRACKET) + + + self.state = 6915 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==472: + self.state = 6914 + self.levelsInWeightString() + + + self.state = 6917 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 14: + localctx = MySqlParser.ExtractFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 6919 + self.match(MySqlParser.EXTRACT) + self.state = 6920 + self.match(MySqlParser.LR_BRACKET) + self.state = 6921 + self.intervalType() + self.state = 6922 + self.match(MySqlParser.FROM) + self.state = 6925 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1026,self._ctx) + if la_ == 1: + self.state = 6923 + localctx.sourceString = self.stringLiteral() + pass + + elif la_ == 2: + self.state = 6924 + localctx.sourceExpression = self.expression(0) + pass + + + self.state = 6927 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 15: + localctx = MySqlParser.GetFormatFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 6929 + self.match(MySqlParser.GET_FORMAT) + self.state = 6930 + self.match(MySqlParser.LR_BRACKET) + self.state = 6931 + localctx.datetimeFormat = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & 11) != 0)): + localctx.datetimeFormat = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6932 + self.match(MySqlParser.COMMA) + self.state = 6933 + self.stringLiteral() + self.state = 6934 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 16: + localctx = MySqlParser.JsonValueFunctionCallContext(self, localctx) + self.enterOuterAlt(localctx, 16) + self.state = 6936 + self.match(MySqlParser.JSON_VALUE) + self.state = 6937 + self.match(MySqlParser.LR_BRACKET) + self.state = 6938 + self.expression(0) + self.state = 6939 + self.match(MySqlParser.COMMA) + self.state = 6940 + self.expression(0) + self.state = 6943 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==593: + self.state = 6941 + self.match(MySqlParser.RETURNING) + self.state = 6942 + self.convertedDataType() + + + self.state = 6946 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1028,self._ctx) + if la_ == 1: + self.state = 6945 + self.jsonOnEmpty() + + + self.state = 6949 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==42 or _la==116 or _la==411: + self.state = 6948 + self.jsonOnError() + + + self.state = 6951 + self.match(MySqlParser.RR_BRACKET) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CaseFuncAlternativeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.condition = None # FunctionArgContext + self.consequent = None # FunctionArgContext + + def WHEN(self): + return self.getToken(MySqlParser.WHEN, 0) + + def THEN(self): + return self.getToken(MySqlParser.THEN, 0) + + def functionArg(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FunctionArgContext) + else: + return self.getTypedRuleContext(MySqlParser.FunctionArgContext,i) + + + def getRuleIndex(self): + return MySqlParser.RULE_caseFuncAlternative + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCaseFuncAlternative" ): + listener.enterCaseFuncAlternative(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCaseFuncAlternative" ): + listener.exitCaseFuncAlternative(self) + + + + + def caseFuncAlternative(self): + + localctx = MySqlParser.CaseFuncAlternativeContext(self, self._ctx, self.state) + self.enterRule(localctx, 646, self.RULE_caseFuncAlternative) + try: + self.enterOuterAlt(localctx, 1) + self.state = 6955 + self.match(MySqlParser.WHEN) + self.state = 6956 + localctx.condition = self.functionArg() + self.state = 6957 + self.match(MySqlParser.THEN) + self.state = 6958 + localctx.consequent = self.functionArg() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LevelsInWeightStringContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_levelsInWeightString + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class LevelWeightRangeContext(LevelsInWeightStringContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.LevelsInWeightStringContext + super().__init__(parser) + self.firstLevel = None # DecimalLiteralContext + self.lastLevel = None # DecimalLiteralContext + self.copyFrom(ctx) + + def LEVEL(self): + return self.getToken(MySqlParser.LEVEL, 0) + def MINUS(self): + return self.getToken(MySqlParser.MINUS, 0) + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLevelWeightRange" ): + listener.enterLevelWeightRange(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLevelWeightRange" ): + listener.exitLevelWeightRange(self) + + + class LevelWeightListContext(LevelsInWeightStringContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.LevelsInWeightStringContext + super().__init__(parser) + self.copyFrom(ctx) + + def LEVEL(self): + return self.getToken(MySqlParser.LEVEL, 0) + def levelInWeightListElement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.LevelInWeightListElementContext) + else: + return self.getTypedRuleContext(MySqlParser.LevelInWeightListElementContext,i) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLevelWeightList" ): + listener.enterLevelWeightList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLevelWeightList" ): + listener.exitLevelWeightList(self) + + + + def levelsInWeightString(self): + + localctx = MySqlParser.LevelsInWeightStringContext(self, self._ctx, self.state) + self.enterRule(localctx, 648, self.RULE_levelsInWeightString) + self._la = 0 # Token type + try: + self.state = 6974 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1032,self._ctx) + if la_ == 1: + localctx = MySqlParser.LevelWeightListContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6960 + self.match(MySqlParser.LEVEL) + self.state = 6961 + self.levelInWeightListElement() + self.state = 6966 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 6962 + self.match(MySqlParser.COMMA) + self.state = 6963 + self.levelInWeightListElement() + self.state = 6968 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + localctx = MySqlParser.LevelWeightRangeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 6969 + self.match(MySqlParser.LEVEL) + self.state = 6970 + localctx.firstLevel = self.decimalLiteral() + self.state = 6971 + self.match(MySqlParser.MINUS) + self.state = 6972 + localctx.lastLevel = self.decimalLiteral() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LevelInWeightListElementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.orderType = None # Token + + def decimalLiteral(self): + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,0) + + + def ASC(self): + return self.getToken(MySqlParser.ASC, 0) + + def DESC(self): + return self.getToken(MySqlParser.DESC, 0) + + def REVERSE(self): + return self.getToken(MySqlParser.REVERSE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_levelInWeightListElement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLevelInWeightListElement" ): + listener.enterLevelInWeightListElement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLevelInWeightListElement" ): + listener.exitLevelInWeightListElement(self) + + + + + def levelInWeightListElement(self): + + localctx = MySqlParser.LevelInWeightListElementContext(self, self._ctx, self.state) + self.enterRule(localctx, 650, self.RULE_levelInWeightListElement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 6976 + self.decimalLiteral() + self.state = 6978 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==13 or _la==45 or _la==994: + self.state = 6977 + localctx.orderType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==13 or _la==45 or _la==994): + localctx.orderType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class AggregateWindowedFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.aggregator = None # Token + self.starArg = None # Token + self.separator = None # Token + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def functionArg(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def AVG(self): + return self.getToken(MySqlParser.AVG, 0) + + def MAX(self): + return self.getToken(MySqlParser.MAX, 0) + + def MIN(self): + return self.getToken(MySqlParser.MIN, 0) + + def SUM(self): + return self.getToken(MySqlParser.SUM, 0) + + def overClause(self): + return self.getTypedRuleContext(MySqlParser.OverClauseContext,0) + + + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + + def DISTINCT(self): + return self.getToken(MySqlParser.DISTINCT, 0) + + def COUNT(self): + return self.getToken(MySqlParser.COUNT, 0) + + def functionArgs(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgsContext,0) + + + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def BIT_AND(self): + return self.getToken(MySqlParser.BIT_AND, 0) + + def BIT_OR(self): + return self.getToken(MySqlParser.BIT_OR, 0) + + def BIT_XOR(self): + return self.getToken(MySqlParser.BIT_XOR, 0) + + def STD(self): + return self.getToken(MySqlParser.STD, 0) + + def STDDEV(self): + return self.getToken(MySqlParser.STDDEV, 0) + + def STDDEV_POP(self): + return self.getToken(MySqlParser.STDDEV_POP, 0) + + def STDDEV_SAMP(self): + return self.getToken(MySqlParser.STDDEV_SAMP, 0) + + def VAR_POP(self): + return self.getToken(MySqlParser.VAR_POP, 0) + + def VAR_SAMP(self): + return self.getToken(MySqlParser.VAR_SAMP, 0) + + def VARIANCE(self): + return self.getToken(MySqlParser.VARIANCE, 0) + + def GROUP_CONCAT(self): + return self.getToken(MySqlParser.GROUP_CONCAT, 0) + + def ORDER(self): + return self.getToken(MySqlParser.ORDER, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def orderByExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.OrderByExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.OrderByExpressionContext,i) + + + def SEPARATOR(self): + return self.getToken(MySqlParser.SEPARATOR, 0) + + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_aggregateWindowedFunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAggregateWindowedFunction" ): + listener.enterAggregateWindowedFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAggregateWindowedFunction" ): + listener.exitAggregateWindowedFunction(self) + + + + + def aggregateWindowedFunction(self): + + localctx = MySqlParser.AggregateWindowedFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 652, self.RULE_aggregateWindowedFunction) + self._la = 0 # Token type + try: + self.state = 7039 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [286, 298, 299, 309]: + self.enterOuterAlt(localctx, 1) + self.state = 6980 + _la = self._input.LA(1) + if not(((((_la - 286)) & ~0x3f) == 0 and ((1 << (_la - 286)) & 8400897) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 6981 + self.match(MySqlParser.LR_BRACKET) + self.state = 6983 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1034,self._ctx) + if la_ == 1: + self.state = 6982 + localctx.aggregator = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==49): + localctx.aggregator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 6985 + self.functionArg() + self.state = 6986 + self.match(MySqlParser.RR_BRACKET) + self.state = 6988 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1035,self._ctx) + if la_ == 1: + self.state = 6987 + self.overClause() + + + pass + elif token in [290]: + self.enterOuterAlt(localctx, 2) + self.state = 6990 + self.match(MySqlParser.COUNT) + self.state = 6991 + self.match(MySqlParser.LR_BRACKET) + self.state = 6999 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1037,self._ctx) + if la_ == 1: + self.state = 6992 + localctx.starArg = self.match(MySqlParser.STAR) + pass + + elif la_ == 2: + self.state = 6994 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1036,self._ctx) + if la_ == 1: + self.state = 6993 + localctx.aggregator = self.match(MySqlParser.ALL) + + + self.state = 6996 + self.functionArg() + pass + + elif la_ == 3: + self.state = 6997 + localctx.aggregator = self.match(MySqlParser.DISTINCT) + self.state = 6998 + self.functionArgs() + pass + + + self.state = 7001 + self.match(MySqlParser.RR_BRACKET) + self.state = 7003 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1038,self._ctx) + if la_ == 1: + self.state = 7002 + self.overClause() + + + pass + elif token in [287, 288, 289, 305, 306, 307, 308, 310, 311, 312]: + self.enterOuterAlt(localctx, 3) + self.state = 7005 + _la = self._input.LA(1) + if not(((((_la - 287)) & ~0x3f) == 0 and ((1 << (_la - 287)) & 62652423) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7006 + self.match(MySqlParser.LR_BRACKET) + self.state = 7008 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1039,self._ctx) + if la_ == 1: + self.state = 7007 + localctx.aggregator = self.match(MySqlParser.ALL) + + + self.state = 7010 + self.functionArg() + self.state = 7011 + self.match(MySqlParser.RR_BRACKET) + self.state = 7013 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1040,self._ctx) + if la_ == 1: + self.state = 7012 + self.overClause() + + + pass + elif token in [294]: + self.enterOuterAlt(localctx, 4) + self.state = 7015 + self.match(MySqlParser.GROUP_CONCAT) + self.state = 7016 + self.match(MySqlParser.LR_BRACKET) + self.state = 7018 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1041,self._ctx) + if la_ == 1: + self.state = 7017 + localctx.aggregator = self.match(MySqlParser.DISTINCT) + + + self.state = 7020 + self.functionArgs() + self.state = 7031 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==124: + self.state = 7021 + self.match(MySqlParser.ORDER) + self.state = 7022 + self.match(MySqlParser.BY) + self.state = 7023 + self.orderByExpression() + self.state = 7028 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 7024 + self.match(MySqlParser.COMMA) + self.state = 7025 + self.orderByExpression() + self.state = 7030 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 7035 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==154: + self.state = 7033 + self.match(MySqlParser.SEPARATOR) + self.state = 7034 + localctx.separator = self.match(MySqlParser.STRING_LITERAL) + + + self.state = 7037 + self.match(MySqlParser.RR_BRACKET) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class NonAggregateWindowedFunctionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def overClause(self): + return self.getTypedRuleContext(MySqlParser.OverClauseContext,0) + + + def LAG(self): + return self.getToken(MySqlParser.LAG, 0) + + def LEAD(self): + return self.getToken(MySqlParser.LEAD, 0) + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def decimalLiteral(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.DecimalLiteralContext) + else: + return self.getTypedRuleContext(MySqlParser.DecimalLiteralContext,i) + + + def FIRST_VALUE(self): + return self.getToken(MySqlParser.FIRST_VALUE, 0) + + def LAST_VALUE(self): + return self.getToken(MySqlParser.LAST_VALUE, 0) + + def CUME_DIST(self): + return self.getToken(MySqlParser.CUME_DIST, 0) + + def DENSE_RANK(self): + return self.getToken(MySqlParser.DENSE_RANK, 0) + + def PERCENT_RANK(self): + return self.getToken(MySqlParser.PERCENT_RANK, 0) + + def RANK(self): + return self.getToken(MySqlParser.RANK, 0) + + def ROW_NUMBER(self): + return self.getToken(MySqlParser.ROW_NUMBER, 0) + + def NTH_VALUE(self): + return self.getToken(MySqlParser.NTH_VALUE, 0) + + def NTILE(self): + return self.getToken(MySqlParser.NTILE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_nonAggregateWindowedFunction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNonAggregateWindowedFunction" ): + listener.enterNonAggregateWindowedFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNonAggregateWindowedFunction" ): + listener.exitNonAggregateWindowedFunction(self) + + + + + def nonAggregateWindowedFunction(self): + + localctx = MySqlParser.NonAggregateWindowedFunctionContext(self, self._ctx, self.state) + self.enterRule(localctx, 654, self.RULE_nonAggregateWindowedFunction) + self._la = 0 # Token type + try: + self.state = 7079 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [295, 297]: + self.enterOuterAlt(localctx, 1) + self.state = 7041 + _la = self._input.LA(1) + if not(_la==295 or _la==297): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7042 + self.match(MySqlParser.LR_BRACKET) + self.state = 7043 + self.expression(0) + self.state = 7046 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1046,self._ctx) + if la_ == 1: + self.state = 7044 + self.match(MySqlParser.COMMA) + self.state = 7045 + self.decimalLiteral() + + + self.state = 7050 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==1135: + self.state = 7048 + self.match(MySqlParser.COMMA) + self.state = 7049 + self.decimalLiteral() + + + self.state = 7052 + self.match(MySqlParser.RR_BRACKET) + self.state = 7053 + self.overClause() + pass + elif token in [293, 296]: + self.enterOuterAlt(localctx, 2) + self.state = 7055 + _la = self._input.LA(1) + if not(_la==293 or _la==296): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7056 + self.match(MySqlParser.LR_BRACKET) + self.state = 7057 + self.expression(0) + self.state = 7058 + self.match(MySqlParser.RR_BRACKET) + self.state = 7059 + self.overClause() + pass + elif token in [291, 292, 302, 303, 304]: + self.enterOuterAlt(localctx, 3) + self.state = 7061 + _la = self._input.LA(1) + if not(((((_la - 291)) & ~0x3f) == 0 and ((1 << (_la - 291)) & 14339) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7062 + self.match(MySqlParser.LR_BRACKET) + self.state = 7063 + self.match(MySqlParser.RR_BRACKET) + self.state = 7064 + self.overClause() + pass + elif token in [301]: + self.enterOuterAlt(localctx, 4) + self.state = 7065 + self.match(MySqlParser.NTH_VALUE) + self.state = 7066 + self.match(MySqlParser.LR_BRACKET) + self.state = 7067 + self.expression(0) + self.state = 7068 + self.match(MySqlParser.COMMA) + self.state = 7069 + self.decimalLiteral() + self.state = 7070 + self.match(MySqlParser.RR_BRACKET) + self.state = 7071 + self.overClause() + pass + elif token in [300]: + self.enterOuterAlt(localctx, 5) + self.state = 7073 + self.match(MySqlParser.NTILE) + self.state = 7074 + self.match(MySqlParser.LR_BRACKET) + self.state = 7075 + self.decimalLiteral() + self.state = 7076 + self.match(MySqlParser.RR_BRACKET) + self.state = 7077 + self.overClause() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class OverClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OVER(self): + return self.getToken(MySqlParser.OVER, 0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def windowSpec(self): + return self.getTypedRuleContext(MySqlParser.WindowSpecContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def windowName(self): + return self.getTypedRuleContext(MySqlParser.WindowNameContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_overClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOverClause" ): + listener.enterOverClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOverClause" ): + listener.exitOverClause(self) + + + + + def overClause(self): + + localctx = MySqlParser.OverClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 656, self.RULE_overClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 7081 + self.match(MySqlParser.OVER) + self.state = 7087 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1133]: + self.state = 7082 + self.match(MySqlParser.LR_BRACKET) + self.state = 7083 + self.windowSpec() + self.state = 7084 + self.match(MySqlParser.RR_BRACKET) + pass + elif token in [11, 14, 18, 29, 35, 37, 39, 42, 48, 55, 57, 59, 73, 77, 79, 85, 94, 97, 117, 121, 124, 130, 140, 141, 148, 150, 158, 168, 217, 218, 219, 220, 221, 226, 234, 237, 239, 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, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 592, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 717, 718, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123, 1145, 1148, 1156]: + self.state = 7086 + self.windowName() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WindowSpecContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def windowName(self): + return self.getTypedRuleContext(MySqlParser.WindowNameContext,0) + + + def partitionClause(self): + return self.getTypedRuleContext(MySqlParser.PartitionClauseContext,0) + + + def orderByClause(self): + return self.getTypedRuleContext(MySqlParser.OrderByClauseContext,0) + + + def frameClause(self): + return self.getTypedRuleContext(MySqlParser.FrameClauseContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_windowSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowSpec" ): + listener.enterWindowSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowSpec" ): + listener.exitWindowSpec(self) + + + + + def windowSpec(self): + + localctx = MySqlParser.WindowSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 658, self.RULE_windowSpec) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7090 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1050,self._ctx) + if la_ == 1: + self.state = 7089 + self.windowName() + + + self.state = 7093 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==129: + self.state = 7092 + self.partitionClause() + + + self.state = 7096 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==124: + self.state = 7095 + self.orderByClause() + + + self.state = 7099 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==133 or _la==601: + self.state = 7098 + self.frameClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class WindowNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def uid(self): + return self.getTypedRuleContext(MySqlParser.UidContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_windowName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowName" ): + listener.enterWindowName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowName" ): + listener.exitWindowName(self) + + + + + def windowName(self): + + localctx = MySqlParser.WindowNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 660, self.RULE_windowName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 7101 + self.uid() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FrameClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def frameUnits(self): + return self.getTypedRuleContext(MySqlParser.FrameUnitsContext,0) + + + def frameExtent(self): + return self.getTypedRuleContext(MySqlParser.FrameExtentContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_frameClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameClause" ): + listener.enterFrameClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameClause" ): + listener.exitFrameClause(self) + + + + + def frameClause(self): + + localctx = MySqlParser.FrameClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 662, self.RULE_frameClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 7103 + self.frameUnits() + self.state = 7104 + self.frameExtent() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FrameUnitsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ROWS(self): + return self.getToken(MySqlParser.ROWS, 0) + + def RANGE(self): + return self.getToken(MySqlParser.RANGE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_frameUnits + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameUnits" ): + listener.enterFrameUnits(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameUnits" ): + listener.exitFrameUnits(self) + + + + + def frameUnits(self): + + localctx = MySqlParser.FrameUnitsContext(self, self._ctx, self.state) + self.enterRule(localctx, 664, self.RULE_frameUnits) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7106 + _la = self._input.LA(1) + if not(_la==133 or _la==601): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FrameExtentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def frameRange(self): + return self.getTypedRuleContext(MySqlParser.FrameRangeContext,0) + + + def frameBetween(self): + return self.getTypedRuleContext(MySqlParser.FrameBetweenContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_frameExtent + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameExtent" ): + listener.enterFrameExtent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameExtent" ): + listener.exitFrameExtent(self) + + + + + def frameExtent(self): + + localctx = MySqlParser.FrameExtentContext(self, self._ctx, self.state) + self.enterRule(localctx, 666, self.RULE_frameExtent) + try: + self.state = 7110 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1054,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 7108 + self.frameRange() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 7109 + self.frameBetween() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FrameBetweenContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BETWEEN(self): + return self.getToken(MySqlParser.BETWEEN, 0) + + def frameRange(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FrameRangeContext) + else: + return self.getTypedRuleContext(MySqlParser.FrameRangeContext,i) + + + def AND(self): + return self.getToken(MySqlParser.AND, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_frameBetween + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameBetween" ): + listener.enterFrameBetween(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameBetween" ): + listener.exitFrameBetween(self) + + + + + def frameBetween(self): + + localctx = MySqlParser.FrameBetweenContext(self, self._ctx, self.state) + self.enterRule(localctx, 668, self.RULE_frameBetween) + try: + self.enterOuterAlt(localctx, 1) + self.state = 7112 + self.match(MySqlParser.BETWEEN) + self.state = 7113 + self.frameRange() + self.state = 7114 + self.match(MySqlParser.AND) + self.state = 7115 + self.frameRange() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FrameRangeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CURRENT(self): + return self.getToken(MySqlParser.CURRENT, 0) + + def ROW(self): + return self.getToken(MySqlParser.ROW, 0) + + def UNBOUNDED(self): + return self.getToken(MySqlParser.UNBOUNDED, 0) + + def PRECEDING(self): + return self.getToken(MySqlParser.PRECEDING, 0) + + def FOLLOWING(self): + return self.getToken(MySqlParser.FOLLOWING, 0) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_frameRange + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameRange" ): + listener.enterFrameRange(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameRange" ): + listener.exitFrameRange(self) + + + + + def frameRange(self): + + localctx = MySqlParser.FrameRangeContext(self, self._ctx, self.state) + self.enterRule(localctx, 670, self.RULE_frameRange) + self._la = 0 # Token type + try: + self.state = 7124 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1055,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 7117 + self.match(MySqlParser.CURRENT) + self.state = 7118 + self.match(MySqlParser.ROW) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 7119 + self.match(MySqlParser.UNBOUNDED) + self.state = 7120 + _la = self._input.LA(1) + if not(_la==433 or _la==559): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 7121 + self.expression(0) + self.state = 7122 + _la = self._input.LA(1) + if not(_la==433 or _la==559): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PartitionClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PARTITION(self): + return self.getToken(MySqlParser.PARTITION, 0) + + def BY(self): + return self.getToken(MySqlParser.BY, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_partitionClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionClause" ): + listener.enterPartitionClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionClause" ): + listener.exitPartitionClause(self) + + + + + def partitionClause(self): + + localctx = MySqlParser.PartitionClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 672, self.RULE_partitionClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7126 + self.match(MySqlParser.PARTITION) + self.state = 7127 + self.match(MySqlParser.BY) + self.state = 7128 + self.expression(0) + self.state = 7133 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 7129 + self.match(MySqlParser.COMMA) + self.state = 7130 + self.expression(0) + self.state = 7135 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ScalarFunctionNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def functionNameBase(self): + return self.getTypedRuleContext(MySqlParser.FunctionNameBaseContext,0) + + + def ASCII(self): + return self.getToken(MySqlParser.ASCII, 0) + + def CURDATE(self): + return self.getToken(MySqlParser.CURDATE, 0) + + def CURRENT_DATE(self): + return self.getToken(MySqlParser.CURRENT_DATE, 0) + + def CURRENT_TIME(self): + return self.getToken(MySqlParser.CURRENT_TIME, 0) + + def CURRENT_TIMESTAMP(self): + return self.getToken(MySqlParser.CURRENT_TIMESTAMP, 0) + + def CURTIME(self): + return self.getToken(MySqlParser.CURTIME, 0) + + def DATE_ADD(self): + return self.getToken(MySqlParser.DATE_ADD, 0) + + def DATE_SUB(self): + return self.getToken(MySqlParser.DATE_SUB, 0) + + def IF(self): + return self.getToken(MySqlParser.IF, 0) + + def INSERT(self): + return self.getToken(MySqlParser.INSERT, 0) + + def LOCALTIME(self): + return self.getToken(MySqlParser.LOCALTIME, 0) + + def LOCALTIMESTAMP(self): + return self.getToken(MySqlParser.LOCALTIMESTAMP, 0) + + def MID(self): + return self.getToken(MySqlParser.MID, 0) + + def NOW(self): + return self.getToken(MySqlParser.NOW, 0) + + def REPEAT(self): + return self.getToken(MySqlParser.REPEAT, 0) + + def REPLACE(self): + return self.getToken(MySqlParser.REPLACE, 0) + + def SUBSTR(self): + return self.getToken(MySqlParser.SUBSTR, 0) + + def SUBSTRING(self): + return self.getToken(MySqlParser.SUBSTRING, 0) + + def SYSDATE(self): + return self.getToken(MySqlParser.SYSDATE, 0) + + def TRIM(self): + return self.getToken(MySqlParser.TRIM, 0) + + def UTC_DATE(self): + return self.getToken(MySqlParser.UTC_DATE, 0) + + def UTC_TIME(self): + return self.getToken(MySqlParser.UTC_TIME, 0) + + def UTC_TIMESTAMP(self): + return self.getToken(MySqlParser.UTC_TIMESTAMP, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_scalarFunctionName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterScalarFunctionName" ): + listener.enterScalarFunctionName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitScalarFunctionName" ): + listener.exitScalarFunctionName(self) + + + + + def scalarFunctionName(self): + + localctx = MySqlParser.ScalarFunctionNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 674, self.RULE_scalarFunctionName) + try: + self.state = 7160 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [39, 97, 148, 150, 217, 218, 219, 221, 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, 280, 281, 282, 290, 291, 292, 293, 295, 296, 297, 300, 301, 302, 303, 304, 324, 459, 673, 689, 690, 691, 692, 693, 694, 695, 696, 736, 803, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1001, 1002, 1003, 1004, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1123]: + self.enterOuterAlt(localctx, 1) + self.state = 7136 + self.functionNameBase() + pass + elif token in [747]: + self.enterOuterAlt(localctx, 2) + self.state = 7137 + self.match(MySqlParser.ASCII) + pass + elif token in [317]: + self.enterOuterAlt(localctx, 3) + self.state = 7138 + self.match(MySqlParser.CURDATE) + pass + elif token in [313]: + self.enterOuterAlt(localctx, 4) + self.state = 7139 + self.match(MySqlParser.CURRENT_DATE) + pass + elif token in [314]: + self.enterOuterAlt(localctx, 5) + self.state = 7140 + self.match(MySqlParser.CURRENT_TIME) + pass + elif token in [315]: + self.enterOuterAlt(localctx, 6) + self.state = 7141 + self.match(MySqlParser.CURRENT_TIMESTAMP) + pass + elif token in [318]: + self.enterOuterAlt(localctx, 7) + self.state = 7142 + self.match(MySqlParser.CURTIME) + pass + elif token in [319]: + self.enterOuterAlt(localctx, 8) + self.state = 7143 + self.match(MySqlParser.DATE_ADD) + pass + elif token in [320]: + self.enterOuterAlt(localctx, 9) + self.state = 7144 + self.match(MySqlParser.DATE_SUB) + pass + elif token in [77]: + self.enterOuterAlt(localctx, 10) + self.state = 7145 + self.match(MySqlParser.IF) + pass + elif token in [85]: + self.enterOuterAlt(localctx, 11) + self.state = 7146 + self.match(MySqlParser.INSERT) + pass + elif token in [316]: + self.enterOuterAlt(localctx, 12) + self.state = 7147 + self.match(MySqlParser.LOCALTIME) + pass + elif token in [322]: + self.enterOuterAlt(localctx, 13) + self.state = 7148 + self.match(MySqlParser.LOCALTIMESTAMP) + pass + elif token in [508]: + self.enterOuterAlt(localctx, 14) + self.state = 7149 + self.match(MySqlParser.MID) + pass + elif token in [323]: + self.enterOuterAlt(localctx, 15) + self.state = 7150 + self.match(MySqlParser.NOW) + pass + elif token in [140]: + self.enterOuterAlt(localctx, 16) + self.state = 7151 + self.match(MySqlParser.REPEAT) + pass + elif token in [141]: + self.enterOuterAlt(localctx, 17) + self.state = 7152 + self.match(MySqlParser.REPLACE) + pass + elif token in [325]: + self.enterOuterAlt(localctx, 18) + self.state = 7153 + self.match(MySqlParser.SUBSTR) + pass + elif token in [326]: + self.enterOuterAlt(localctx, 19) + self.state = 7154 + self.match(MySqlParser.SUBSTRING) + pass + elif token in [327]: + self.enterOuterAlt(localctx, 20) + self.state = 7155 + self.match(MySqlParser.SYSDATE) + pass + elif token in [328]: + self.enterOuterAlt(localctx, 21) + self.state = 7156 + self.match(MySqlParser.TRIM) + pass + elif token in [329]: + self.enterOuterAlt(localctx, 22) + self.state = 7157 + self.match(MySqlParser.UTC_DATE) + pass + elif token in [330]: + self.enterOuterAlt(localctx, 23) + self.state = 7158 + self.match(MySqlParser.UTC_TIME) + pass + elif token in [331]: + self.enterOuterAlt(localctx, 24) + self.state = 7159 + self.match(MySqlParser.UTC_TIMESTAMP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PasswordFunctionClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.functionName = None # Token + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + + def functionArg(self): + return self.getTypedRuleContext(MySqlParser.FunctionArgContext,0) + + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def OLD_PASSWORD(self): + return self.getToken(MySqlParser.OLD_PASSWORD, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_passwordFunctionClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPasswordFunctionClause" ): + listener.enterPasswordFunctionClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPasswordFunctionClause" ): + listener.exitPasswordFunctionClause(self) + + + + + def passwordFunctionClause(self): + + localctx = MySqlParser.PasswordFunctionClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 676, self.RULE_passwordFunctionClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7162 + localctx.functionName = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==535 or _la==551): + localctx.functionName = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7163 + self.match(MySqlParser.LR_BRACKET) + self.state = 7164 + self.functionArg() + self.state = 7165 + self.match(MySqlParser.RR_BRACKET) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionArgsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constant(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ConstantContext) + else: + return self.getTypedRuleContext(MySqlParser.ConstantContext,i) + + + def fullColumnName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FullColumnNameContext) + else: + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,i) + + + def functionCall(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.FunctionCallContext) + else: + return self.getTypedRuleContext(MySqlParser.FunctionCallContext,i) + + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def getRuleIndex(self): + return MySqlParser.RULE_functionArgs + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionArgs" ): + listener.enterFunctionArgs(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionArgs" ): + listener.exitFunctionArgs(self) + + + + + def functionArgs(self): + + localctx = MySqlParser.FunctionArgsContext(self, self._ctx, self.state) + self.enterRule(localctx, 678, self.RULE_functionArgs) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7171 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1058,self._ctx) + if la_ == 1: + self.state = 7167 + self.constant() + pass + + elif la_ == 2: + self.state = 7168 + self.fullColumnName() + pass + + elif la_ == 3: + self.state = 7169 + self.functionCall() + pass + + elif la_ == 4: + self.state = 7170 + self.expression(0) + pass + + + self.state = 7182 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 7173 + self.match(MySqlParser.COMMA) + self.state = 7178 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1059,self._ctx) + if la_ == 1: + self.state = 7174 + self.constant() + pass + + elif la_ == 2: + self.state = 7175 + self.fullColumnName() + pass + + elif la_ == 3: + self.state = 7176 + self.functionCall() + pass + + elif la_ == 4: + self.state = 7177 + self.expression(0) + pass + + + self.state = 7184 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionArgContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constant(self): + return self.getTypedRuleContext(MySqlParser.ConstantContext,0) + + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + + def functionCall(self): + return self.getTypedRuleContext(MySqlParser.FunctionCallContext,0) + + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + + def getRuleIndex(self): + return MySqlParser.RULE_functionArg + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionArg" ): + listener.enterFunctionArg(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionArg" ): + listener.exitFunctionArg(self) + + + + + def functionArg(self): + + localctx = MySqlParser.FunctionArgContext(self, self._ctx, self.state) + self.enterRule(localctx, 680, self.RULE_functionArg) + try: + self.state = 7189 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1061,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 7185 + self.constant() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 7186 + self.fullColumnName() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 7187 + self.functionCall() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 7188 + self.expression(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_expression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class IsExpressionContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionContext + super().__init__(parser) + self.testValue = None # Token + self.copyFrom(ctx) + + def predicate(self): + return self.getTypedRuleContext(MySqlParser.PredicateContext,0) + + def IS(self): + return self.getToken(MySqlParser.IS, 0) + def TRUE(self): + return self.getToken(MySqlParser.TRUE, 0) + def FALSE(self): + return self.getToken(MySqlParser.FALSE, 0) + def UNKNOWN(self): + return self.getToken(MySqlParser.UNKNOWN, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsExpression" ): + listener.enterIsExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsExpression" ): + listener.exitIsExpression(self) + + + class NotExpressionContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionContext + super().__init__(parser) + self.notOperator = None # Token + self.copyFrom(ctx) + + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def EXCLAMATION_SYMBOL(self): + return self.getToken(MySqlParser.EXCLAMATION_SYMBOL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNotExpression" ): + listener.enterNotExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNotExpression" ): + listener.exitNotExpression(self) + + + class LogicalExpressionContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def logicalOperator(self): + return self.getTypedRuleContext(MySqlParser.LogicalOperatorContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLogicalExpression" ): + listener.enterLogicalExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLogicalExpression" ): + listener.exitLogicalExpression(self) + + + class PredicateExpressionContext(ExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self): + return self.getTypedRuleContext(MySqlParser.PredicateContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPredicateExpression" ): + listener.enterPredicateExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPredicateExpression" ): + listener.exitPredicateExpression(self) + + + + def expression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = MySqlParser.ExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 682 + self.enterRecursionRule(localctx, 682, self.RULE_expression, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7202 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1063,self._ctx) + if la_ == 1: + localctx = MySqlParser.NotExpressionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 7192 + localctx.notOperator = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==114 or _la==1127): + localctx.notOperator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7193 + self.expression(4) + pass + + elif la_ == 2: + localctx = MySqlParser.IsExpressionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7194 + self.predicate(0) + self.state = 7195 + self.match(MySqlParser.IS) + self.state = 7197 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 7196 + self.match(MySqlParser.NOT) + + + self.state = 7199 + localctx.testValue = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==63 or _la==178 or _la==662): + localctx.testValue = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 3: + localctx = MySqlParser.PredicateExpressionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7201 + self.predicate(0) + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 7210 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1064,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = MySqlParser.LogicalExpressionContext(self, MySqlParser.ExpressionContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) + self.state = 7204 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 7205 + self.logicalOperator() + self.state = 7206 + self.expression(4) + self.state = 7212 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1064,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class PredicateContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_predicate + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class SoundsLikePredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + def SOUNDS(self): + return self.getToken(MySqlParser.SOUNDS, 0) + def LIKE(self): + return self.getToken(MySqlParser.LIKE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSoundsLikePredicate" ): + listener.enterSoundsLikePredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSoundsLikePredicate" ): + listener.exitSoundsLikePredicate(self) + + + class ExpressionAtomPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def expressionAtom(self): + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpressionAtomPredicate" ): + listener.enterExpressionAtomPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpressionAtomPredicate" ): + listener.exitExpressionAtomPredicate(self) + + + class SubqueryComparisonPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.quantifier = None # Token + self.copyFrom(ctx) + + def predicate(self): + return self.getTypedRuleContext(MySqlParser.PredicateContext,0) + + def comparisonOperator(self): + return self.getTypedRuleContext(MySqlParser.ComparisonOperatorContext,0) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def ALL(self): + return self.getToken(MySqlParser.ALL, 0) + def ANY(self): + return self.getToken(MySqlParser.ANY, 0) + def SOME(self): + return self.getToken(MySqlParser.SOME, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubqueryComparisonPredicate" ): + listener.enterSubqueryComparisonPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubqueryComparisonPredicate" ): + listener.exitSubqueryComparisonPredicate(self) + + + class JsonMemberOfPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + def MEMBER(self): + return self.getToken(MySqlParser.MEMBER, 0) + def OF(self): + return self.getToken(MySqlParser.OF, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonMemberOfPredicate" ): + listener.enterJsonMemberOfPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonMemberOfPredicate" ): + listener.exitJsonMemberOfPredicate(self) + + + class BinaryComparisonPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.left = None # PredicateContext + self.right = None # PredicateContext + self.copyFrom(ctx) + + def comparisonOperator(self): + return self.getTypedRuleContext(MySqlParser.ComparisonOperatorContext,0) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBinaryComparisonPredicate" ): + listener.enterBinaryComparisonPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBinaryComparisonPredicate" ): + listener.exitBinaryComparisonPredicate(self) + + + class InPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self): + return self.getTypedRuleContext(MySqlParser.PredicateContext,0) + + def IN(self): + return self.getToken(MySqlParser.IN, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def expressions(self): + return self.getTypedRuleContext(MySqlParser.ExpressionsContext,0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInPredicate" ): + listener.enterInPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInPredicate" ): + listener.exitInPredicate(self) + + + class BetweenPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + def BETWEEN(self): + return self.getToken(MySqlParser.BETWEEN, 0) + def AND(self): + return self.getToken(MySqlParser.AND, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBetweenPredicate" ): + listener.enterBetweenPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBetweenPredicate" ): + listener.exitBetweenPredicate(self) + + + class IsNullPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self): + return self.getTypedRuleContext(MySqlParser.PredicateContext,0) + + def IS(self): + return self.getToken(MySqlParser.IS, 0) + def nullNotnull(self): + return self.getTypedRuleContext(MySqlParser.NullNotnullContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsNullPredicate" ): + listener.enterIsNullPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsNullPredicate" ): + listener.exitIsNullPredicate(self) + + + class LikePredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.copyFrom(ctx) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + def LIKE(self): + return self.getToken(MySqlParser.LIKE, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + def ESCAPE(self): + return self.getToken(MySqlParser.ESCAPE, 0) + def STRING_LITERAL(self): + return self.getToken(MySqlParser.STRING_LITERAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLikePredicate" ): + listener.enterLikePredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLikePredicate" ): + listener.exitLikePredicate(self) + + + class RegexpPredicateContext(PredicateContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.PredicateContext + super().__init__(parser) + self.regex = None # Token + self.copyFrom(ctx) + + def predicate(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.PredicateContext) + else: + return self.getTypedRuleContext(MySqlParser.PredicateContext,i) + + def REGEXP(self): + return self.getToken(MySqlParser.REGEXP, 0) + def RLIKE(self): + return self.getToken(MySqlParser.RLIKE, 0) + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRegexpPredicate" ): + listener.enterRegexpPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRegexpPredicate" ): + listener.exitRegexpPredicate(self) + + + + def predicate(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = MySqlParser.PredicateContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 684 + self.enterRecursionRule(localctx, 684, self.RULE_predicate, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + localctx = MySqlParser.ExpressionAtomPredicateContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 7214 + self.expressionAtom(0) + self._ctx.stop = self._input.LT(-1) + self.state = 7280 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1072,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 7278 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1071,self._ctx) + if la_ == 1: + localctx = MySqlParser.BinaryComparisonPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7216 + if not self.precpred(self._ctx, 8): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") + self.state = 7217 + self.comparisonOperator() + self.state = 7218 + localctx.right = self.predicate(9) + pass + + elif la_ == 2: + localctx = MySqlParser.BetweenPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7220 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 7222 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 7221 + self.match(MySqlParser.NOT) + + + self.state = 7224 + self.match(MySqlParser.BETWEEN) + self.state = 7225 + self.predicate(0) + self.state = 7226 + self.match(MySqlParser.AND) + self.state = 7227 + self.predicate(7) + pass + + elif la_ == 3: + localctx = MySqlParser.SoundsLikePredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7229 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 7230 + self.match(MySqlParser.SOUNDS) + self.state = 7231 + self.match(MySqlParser.LIKE) + self.state = 7232 + self.predicate(6) + pass + + elif la_ == 4: + localctx = MySqlParser.RegexpPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7233 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 7235 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 7234 + self.match(MySqlParser.NOT) + + + self.state = 7237 + localctx.regex = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==137 or _la==149): + localctx.regex = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7238 + self.predicate(4) + pass + + elif la_ == 5: + localctx = MySqlParser.InPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7239 + if not self.precpred(self._ctx, 10): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") + self.state = 7241 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 7240 + self.match(MySqlParser.NOT) + + + self.state = 7243 + self.match(MySqlParser.IN) + self.state = 7244 + self.match(MySqlParser.LR_BRACKET) + self.state = 7247 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1068,self._ctx) + if la_ == 1: + self.state = 7245 + self.selectStatement() + pass + + elif la_ == 2: + self.state = 7246 + self.expressions() + pass + + + self.state = 7249 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 6: + localctx = MySqlParser.IsNullPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7251 + if not self.precpred(self._ctx, 9): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") + self.state = 7252 + self.match(MySqlParser.IS) + self.state = 7253 + self.nullNotnull() + pass + + elif la_ == 7: + localctx = MySqlParser.SubqueryComparisonPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7254 + if not self.precpred(self._ctx, 7): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") + self.state = 7255 + self.comparisonOperator() + self.state = 7256 + localctx.quantifier = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==6 or _la==337 or _la==618): + localctx.quantifier = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 7257 + self.match(MySqlParser.LR_BRACKET) + self.state = 7258 + self.selectStatement() + self.state = 7259 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 8: + localctx = MySqlParser.LikePredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7261 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 7263 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==114: + self.state = 7262 + self.match(MySqlParser.NOT) + + + self.state = 7265 + self.match(MySqlParser.LIKE) + self.state = 7266 + self.predicate(0) + self.state = 7269 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1070,self._ctx) + if la_ == 1: + self.state = 7267 + self.match(MySqlParser.ESCAPE) + self.state = 7268 + self.match(MySqlParser.STRING_LITERAL) + + + pass + + elif la_ == 9: + localctx = MySqlParser.JsonMemberOfPredicateContext(self, MySqlParser.PredicateContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_predicate) + self.state = 7271 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 7272 + self.match(MySqlParser.MEMBER) + self.state = 7273 + self.match(MySqlParser.OF) + self.state = 7274 + self.match(MySqlParser.LR_BRACKET) + self.state = 7275 + self.predicate(0) + self.state = 7276 + self.match(MySqlParser.RR_BRACKET) + pass + + + self.state = 7282 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1072,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class ExpressionAtomContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return MySqlParser.RULE_expressionAtom + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class UnaryExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def unaryOperator(self): + return self.getTypedRuleContext(MySqlParser.UnaryOperatorContext,0) + + def expressionAtom(self): + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnaryExpressionAtom" ): + listener.enterUnaryExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnaryExpressionAtom" ): + listener.exitUnaryExpressionAtom(self) + + + class CollateExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def expressionAtom(self): + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,0) + + def COLLATE(self): + return self.getToken(MySqlParser.COLLATE, 0) + def collationName(self): + return self.getTypedRuleContext(MySqlParser.CollationNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCollateExpressionAtom" ): + listener.enterCollateExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCollateExpressionAtom" ): + listener.exitCollateExpressionAtom(self) + + + class VariableAssignExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def LOCAL_ID(self): + return self.getToken(MySqlParser.LOCAL_ID, 0) + def VAR_ASSIGN(self): + return self.getToken(MySqlParser.VAR_ASSIGN, 0) + def expressionAtom(self): + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVariableAssignExpressionAtom" ): + listener.enterVariableAssignExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVariableAssignExpressionAtom" ): + listener.exitVariableAssignExpressionAtom(self) + + + class MysqlVariableExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def mysqlVariable(self): + return self.getTypedRuleContext(MySqlParser.MysqlVariableContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMysqlVariableExpressionAtom" ): + listener.enterMysqlVariableExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMysqlVariableExpressionAtom" ): + listener.exitMysqlVariableExpressionAtom(self) + + + class NestedExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNestedExpressionAtom" ): + listener.enterNestedExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNestedExpressionAtom" ): + listener.exitNestedExpressionAtom(self) + + + class NestedRowExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def ROW(self): + return self.getToken(MySqlParser.ROW, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionContext,i) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + def COMMA(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.COMMA) + else: + return self.getToken(MySqlParser.COMMA, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNestedRowExpressionAtom" ): + listener.enterNestedRowExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNestedRowExpressionAtom" ): + listener.exitNestedRowExpressionAtom(self) + + + class MathExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.left = None # ExpressionAtomContext + self.right = None # ExpressionAtomContext + self.copyFrom(ctx) + + def mathOperator(self): + return self.getTypedRuleContext(MySqlParser.MathOperatorContext,0) + + def expressionAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMathExpressionAtom" ): + listener.enterMathExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMathExpressionAtom" ): + listener.exitMathExpressionAtom(self) + + + class ExistsExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXISTS(self): + return self.getToken(MySqlParser.EXISTS, 0) + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExistsExpressionAtom" ): + listener.enterExistsExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExistsExpressionAtom" ): + listener.exitExistsExpressionAtom(self) + + + class IntervalExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def INTERVAL(self): + return self.getToken(MySqlParser.INTERVAL, 0) + def expression(self): + return self.getTypedRuleContext(MySqlParser.ExpressionContext,0) + + def intervalType(self): + return self.getTypedRuleContext(MySqlParser.IntervalTypeContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalExpressionAtom" ): + listener.enterIntervalExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalExpressionAtom" ): + listener.exitIntervalExpressionAtom(self) + + + class JsonExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.left = None # ExpressionAtomContext + self.right = None # ExpressionAtomContext + self.copyFrom(ctx) + + def jsonOperator(self): + return self.getTypedRuleContext(MySqlParser.JsonOperatorContext,0) + + def expressionAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonExpressionAtom" ): + listener.enterJsonExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonExpressionAtom" ): + listener.exitJsonExpressionAtom(self) + + + class SubqueryExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def LR_BRACKET(self): + return self.getToken(MySqlParser.LR_BRACKET, 0) + def selectStatement(self): + return self.getTypedRuleContext(MySqlParser.SelectStatementContext,0) + + def RR_BRACKET(self): + return self.getToken(MySqlParser.RR_BRACKET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubqueryExpressionAtom" ): + listener.enterSubqueryExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubqueryExpressionAtom" ): + listener.exitSubqueryExpressionAtom(self) + + + class ConstantExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def constant(self): + return self.getTypedRuleContext(MySqlParser.ConstantContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantExpressionAtom" ): + listener.enterConstantExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantExpressionAtom" ): + listener.exitConstantExpressionAtom(self) + + + class FunctionCallExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def functionCall(self): + return self.getTypedRuleContext(MySqlParser.FunctionCallContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionCallExpressionAtom" ): + listener.enterFunctionCallExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionCallExpressionAtom" ): + listener.exitFunctionCallExpressionAtom(self) + + + class BinaryExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + def expressionAtom(self): + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBinaryExpressionAtom" ): + listener.enterBinaryExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBinaryExpressionAtom" ): + listener.exitBinaryExpressionAtom(self) + + + class FullColumnNameExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.copyFrom(ctx) + + def fullColumnName(self): + return self.getTypedRuleContext(MySqlParser.FullColumnNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFullColumnNameExpressionAtom" ): + listener.enterFullColumnNameExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFullColumnNameExpressionAtom" ): + listener.exitFullColumnNameExpressionAtom(self) + + + class BitExpressionAtomContext(ExpressionAtomContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a MySqlParser.ExpressionAtomContext + super().__init__(parser) + self.left = None # ExpressionAtomContext + self.right = None # ExpressionAtomContext + self.copyFrom(ctx) + + def bitOperator(self): + return self.getTypedRuleContext(MySqlParser.BitOperatorContext,0) + + def expressionAtom(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MySqlParser.ExpressionAtomContext) + else: + return self.getTypedRuleContext(MySqlParser.ExpressionAtomContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBitExpressionAtom" ): + listener.enterBitExpressionAtom(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBitExpressionAtom" ): + listener.exitBitExpressionAtom(self) + + + + def expressionAtom(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = MySqlParser.ExpressionAtomContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 686 + self.enterRecursionRule(localctx, 686, self.RULE_expressionAtom, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7331 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1075,self._ctx) + if la_ == 1: + localctx = MySqlParser.ConstantExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 7284 + self.constant() + pass + + elif la_ == 2: + localctx = MySqlParser.FullColumnNameExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7285 + self.fullColumnName() + pass + + elif la_ == 3: + localctx = MySqlParser.FunctionCallExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7286 + self.functionCall() + pass + + elif la_ == 4: + localctx = MySqlParser.MysqlVariableExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7287 + self.mysqlVariable() + pass + + elif la_ == 5: + localctx = MySqlParser.UnaryExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7288 + self.unaryOperator() + self.state = 7289 + self.expressionAtom(11) + pass + + elif la_ == 6: + localctx = MySqlParser.BinaryExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7291 + self.match(MySqlParser.BINARY) + self.state = 7292 + self.expressionAtom(10) + pass + + elif la_ == 7: + localctx = MySqlParser.VariableAssignExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7293 + self.match(MySqlParser.LOCAL_ID) + self.state = 7294 + self.match(MySqlParser.VAR_ASSIGN) + self.state = 7295 + self.expressionAtom(9) + pass + + elif la_ == 8: + localctx = MySqlParser.NestedExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7296 + self.match(MySqlParser.LR_BRACKET) + self.state = 7297 + self.expression(0) + self.state = 7302 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==1135: + self.state = 7298 + self.match(MySqlParser.COMMA) + self.state = 7299 + self.expression(0) + self.state = 7304 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 7305 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 9: + localctx = MySqlParser.NestedRowExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7307 + self.match(MySqlParser.ROW) + self.state = 7308 + self.match(MySqlParser.LR_BRACKET) + self.state = 7309 + self.expression(0) + self.state = 7312 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 7310 + self.match(MySqlParser.COMMA) + self.state = 7311 + self.expression(0) + self.state = 7314 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==1135): + break + + self.state = 7316 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 10: + localctx = MySqlParser.ExistsExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7318 + self.match(MySqlParser.EXISTS) + self.state = 7319 + self.match(MySqlParser.LR_BRACKET) + self.state = 7320 + self.selectStatement() + self.state = 7321 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 11: + localctx = MySqlParser.SubqueryExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7323 + self.match(MySqlParser.LR_BRACKET) + self.state = 7324 + self.selectStatement() + self.state = 7325 + self.match(MySqlParser.RR_BRACKET) + pass + + elif la_ == 12: + localctx = MySqlParser.IntervalExpressionAtomContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 7327 + self.match(MySqlParser.INTERVAL) + self.state = 7328 + self.expression(0) + self.state = 7329 + self.intervalType() + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 7350 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1077,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 7348 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1076,self._ctx) + if la_ == 1: + localctx = MySqlParser.BitExpressionAtomContext(self, MySqlParser.ExpressionAtomContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_expressionAtom) + self.state = 7333 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 7334 + self.bitOperator() + self.state = 7335 + localctx.right = self.expressionAtom(4) + pass + + elif la_ == 2: + localctx = MySqlParser.MathExpressionAtomContext(self, MySqlParser.ExpressionAtomContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_expressionAtom) + self.state = 7337 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 7338 + self.mathOperator() + self.state = 7339 + localctx.right = self.expressionAtom(3) + pass + + elif la_ == 3: + localctx = MySqlParser.JsonExpressionAtomContext(self, MySqlParser.ExpressionAtomContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_expressionAtom) + self.state = 7341 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 7342 + self.jsonOperator() + self.state = 7343 + localctx.right = self.expressionAtom(2) + pass + + elif la_ == 4: + localctx = MySqlParser.CollateExpressionAtomContext(self, MySqlParser.ExpressionAtomContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expressionAtom) + self.state = 7345 + if not self.precpred(self._ctx, 13): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 13)") + self.state = 7346 + self.match(MySqlParser.COLLATE) + self.state = 7347 + self.collationName() + pass + + + self.state = 7352 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1077,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + + class UnaryOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXCLAMATION_SYMBOL(self): + return self.getToken(MySqlParser.EXCLAMATION_SYMBOL, 0) + + def BIT_NOT_OP(self): + return self.getToken(MySqlParser.BIT_NOT_OP, 0) + + def PLUS(self): + return self.getToken(MySqlParser.PLUS, 0) + + def MINUS(self): + return self.getToken(MySqlParser.MINUS, 0) + + def NOT(self): + return self.getToken(MySqlParser.NOT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_unaryOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnaryOperator" ): + listener.enterUnaryOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnaryOperator" ): + listener.exitUnaryOperator(self) + + + + + def unaryOperator(self): + + localctx = MySqlParser.UnaryOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 688, self.RULE_unaryOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7353 + _la = self._input.LA(1) + if not(_la==114 or ((((_la - 1120)) & ~0x3f) == 0 and ((1 << (_la - 1120)) & 387) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ComparisonOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EQUAL_SYMBOL(self): + return self.getToken(MySqlParser.EQUAL_SYMBOL, 0) + + def GREATER_SYMBOL(self): + return self.getToken(MySqlParser.GREATER_SYMBOL, 0) + + def LESS_SYMBOL(self): + return self.getToken(MySqlParser.LESS_SYMBOL, 0) + + def EXCLAMATION_SYMBOL(self): + return self.getToken(MySqlParser.EXCLAMATION_SYMBOL, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_comparisonOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComparisonOperator" ): + listener.enterComparisonOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComparisonOperator" ): + listener.exitComparisonOperator(self) + + + + + def comparisonOperator(self): + + localctx = MySqlParser.ComparisonOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 690, self.RULE_comparisonOperator) + try: + self.state = 7369 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1078,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 7355 + self.match(MySqlParser.EQUAL_SYMBOL) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 7356 + self.match(MySqlParser.GREATER_SYMBOL) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 7357 + self.match(MySqlParser.LESS_SYMBOL) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 7358 + self.match(MySqlParser.LESS_SYMBOL) + self.state = 7359 + self.match(MySqlParser.EQUAL_SYMBOL) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 7360 + self.match(MySqlParser.GREATER_SYMBOL) + self.state = 7361 + self.match(MySqlParser.EQUAL_SYMBOL) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 7362 + self.match(MySqlParser.LESS_SYMBOL) + self.state = 7363 + self.match(MySqlParser.GREATER_SYMBOL) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 7364 + self.match(MySqlParser.EXCLAMATION_SYMBOL) + self.state = 7365 + self.match(MySqlParser.EQUAL_SYMBOL) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 7366 + self.match(MySqlParser.LESS_SYMBOL) + self.state = 7367 + self.match(MySqlParser.EQUAL_SYMBOL) + self.state = 7368 + self.match(MySqlParser.GREATER_SYMBOL) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class LogicalOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def AND(self): + return self.getToken(MySqlParser.AND, 0) + + def BIT_AND_OP(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.BIT_AND_OP) + else: + return self.getToken(MySqlParser.BIT_AND_OP, i) + + def XOR(self): + return self.getToken(MySqlParser.XOR, 0) + + def OR(self): + return self.getToken(MySqlParser.OR, 0) + + def BIT_OR_OP(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.BIT_OR_OP) + else: + return self.getToken(MySqlParser.BIT_OR_OP, i) + + def getRuleIndex(self): + return MySqlParser.RULE_logicalOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLogicalOperator" ): + listener.enterLogicalOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLogicalOperator" ): + listener.exitLogicalOperator(self) + + + + + def logicalOperator(self): + + localctx = MySqlParser.LogicalOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 692, self.RULE_logicalOperator) + try: + self.state = 7378 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [10]: + self.enterOuterAlt(localctx, 1) + self.state = 7371 + self.match(MySqlParser.AND) + pass + elif token in [1130]: + self.enterOuterAlt(localctx, 2) + self.state = 7372 + self.match(MySqlParser.BIT_AND_OP) + self.state = 7373 + self.match(MySqlParser.BIT_AND_OP) + pass + elif token in [194]: + self.enterOuterAlt(localctx, 3) + self.state = 7374 + self.match(MySqlParser.XOR) + pass + elif token in [123]: + self.enterOuterAlt(localctx, 4) + self.state = 7375 + self.match(MySqlParser.OR) + pass + elif token in [1129]: + self.enterOuterAlt(localctx, 5) + self.state = 7376 + self.match(MySqlParser.BIT_OR_OP) + self.state = 7377 + self.match(MySqlParser.BIT_OR_OP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BitOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LESS_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.LESS_SYMBOL) + else: + return self.getToken(MySqlParser.LESS_SYMBOL, i) + + def GREATER_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.GREATER_SYMBOL) + else: + return self.getToken(MySqlParser.GREATER_SYMBOL, i) + + def BIT_AND_OP(self): + return self.getToken(MySqlParser.BIT_AND_OP, 0) + + def BIT_XOR_OP(self): + return self.getToken(MySqlParser.BIT_XOR_OP, 0) + + def BIT_OR_OP(self): + return self.getToken(MySqlParser.BIT_OR_OP, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_bitOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBitOperator" ): + listener.enterBitOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBitOperator" ): + listener.exitBitOperator(self) + + + + + def bitOperator(self): + + localctx = MySqlParser.BitOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 694, self.RULE_bitOperator) + try: + self.state = 7387 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1126]: + self.enterOuterAlt(localctx, 1) + self.state = 7380 + self.match(MySqlParser.LESS_SYMBOL) + self.state = 7381 + self.match(MySqlParser.LESS_SYMBOL) + pass + elif token in [1125]: + self.enterOuterAlt(localctx, 2) + self.state = 7382 + self.match(MySqlParser.GREATER_SYMBOL) + self.state = 7383 + self.match(MySqlParser.GREATER_SYMBOL) + pass + elif token in [1130]: + self.enterOuterAlt(localctx, 3) + self.state = 7384 + self.match(MySqlParser.BIT_AND_OP) + pass + elif token in [1131]: + self.enterOuterAlt(localctx, 4) + self.state = 7385 + self.match(MySqlParser.BIT_XOR_OP) + pass + elif token in [1129]: + self.enterOuterAlt(localctx, 5) + self.state = 7386 + self.match(MySqlParser.BIT_OR_OP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class MathOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STAR(self): + return self.getToken(MySqlParser.STAR, 0) + + def DIVIDE(self): + return self.getToken(MySqlParser.DIVIDE, 0) + + def MODULE(self): + return self.getToken(MySqlParser.MODULE, 0) + + def DIV(self): + return self.getToken(MySqlParser.DIV, 0) + + def MOD(self): + return self.getToken(MySqlParser.MOD, 0) + + def PLUS(self): + return self.getToken(MySqlParser.PLUS, 0) + + def MINUS(self): + return self.getToken(MySqlParser.MINUS, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_mathOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMathOperator" ): + listener.enterMathOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMathOperator" ): + listener.exitMathOperator(self) + + + + + def mathOperator(self): + + localctx = MySqlParser.MathOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 696, self.RULE_mathOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7389 + _la = self._input.LA(1) + if not(((((_la - 1117)) & ~0x3f) == 0 and ((1 << (_la - 1117)) & 127) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class JsonOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def MINUS(self): + return self.getToken(MySqlParser.MINUS, 0) + + def GREATER_SYMBOL(self, i:int=None): + if i is None: + return self.getTokens(MySqlParser.GREATER_SYMBOL) + else: + return self.getToken(MySqlParser.GREATER_SYMBOL, i) + + def getRuleIndex(self): + return MySqlParser.RULE_jsonOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJsonOperator" ): + listener.enterJsonOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJsonOperator" ): + listener.exitJsonOperator(self) + + + + + def jsonOperator(self): + + localctx = MySqlParser.JsonOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 698, self.RULE_jsonOperator) + try: + self.state = 7396 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1081,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 7391 + self.match(MySqlParser.MINUS) + self.state = 7392 + self.match(MySqlParser.GREATER_SYMBOL) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 7393 + self.match(MySqlParser.MINUS) + self.state = 7394 + self.match(MySqlParser.GREATER_SYMBOL) + self.state = 7395 + self.match(MySqlParser.GREATER_SYMBOL) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class CharsetNameBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ARMSCII8(self): + return self.getToken(MySqlParser.ARMSCII8, 0) + + def ASCII(self): + return self.getToken(MySqlParser.ASCII, 0) + + def BIG5(self): + return self.getToken(MySqlParser.BIG5, 0) + + def BINARY(self): + return self.getToken(MySqlParser.BINARY, 0) + + def CP1250(self): + return self.getToken(MySqlParser.CP1250, 0) + + def CP1251(self): + return self.getToken(MySqlParser.CP1251, 0) + + def CP1256(self): + return self.getToken(MySqlParser.CP1256, 0) + + def CP1257(self): + return self.getToken(MySqlParser.CP1257, 0) + + def CP850(self): + return self.getToken(MySqlParser.CP850, 0) + + def CP852(self): + return self.getToken(MySqlParser.CP852, 0) + + def CP866(self): + return self.getToken(MySqlParser.CP866, 0) + + def CP932(self): + return self.getToken(MySqlParser.CP932, 0) + + def DEC8(self): + return self.getToken(MySqlParser.DEC8, 0) + + def EUCJPMS(self): + return self.getToken(MySqlParser.EUCJPMS, 0) + + def EUCKR(self): + return self.getToken(MySqlParser.EUCKR, 0) + + def GB18030(self): + return self.getToken(MySqlParser.GB18030, 0) + + def GB2312(self): + return self.getToken(MySqlParser.GB2312, 0) + + def GBK(self): + return self.getToken(MySqlParser.GBK, 0) + + def GEOSTD8(self): + return self.getToken(MySqlParser.GEOSTD8, 0) + + def GREEK(self): + return self.getToken(MySqlParser.GREEK, 0) + + def HEBREW(self): + return self.getToken(MySqlParser.HEBREW, 0) + + def HP8(self): + return self.getToken(MySqlParser.HP8, 0) + + def KEYBCS2(self): + return self.getToken(MySqlParser.KEYBCS2, 0) + + def KOI8R(self): + return self.getToken(MySqlParser.KOI8R, 0) + + def KOI8U(self): + return self.getToken(MySqlParser.KOI8U, 0) + + def LATIN1(self): + return self.getToken(MySqlParser.LATIN1, 0) + + def LATIN2(self): + return self.getToken(MySqlParser.LATIN2, 0) + + def LATIN5(self): + return self.getToken(MySqlParser.LATIN5, 0) + + def LATIN7(self): + return self.getToken(MySqlParser.LATIN7, 0) + + def MACCE(self): + return self.getToken(MySqlParser.MACCE, 0) + + def MACROMAN(self): + return self.getToken(MySqlParser.MACROMAN, 0) + + def SJIS(self): + return self.getToken(MySqlParser.SJIS, 0) + + def SWE7(self): + return self.getToken(MySqlParser.SWE7, 0) + + def TIS620(self): + return self.getToken(MySqlParser.TIS620, 0) + + def UCS2(self): + return self.getToken(MySqlParser.UCS2, 0) + + def UJIS(self): + return self.getToken(MySqlParser.UJIS, 0) + + def UTF16(self): + return self.getToken(MySqlParser.UTF16, 0) + + def UTF16LE(self): + return self.getToken(MySqlParser.UTF16LE, 0) + + def UTF32(self): + return self.getToken(MySqlParser.UTF32, 0) + + def UTF8(self): + return self.getToken(MySqlParser.UTF8, 0) + + def UTF8MB3(self): + return self.getToken(MySqlParser.UTF8MB3, 0) + + def UTF8MB4(self): + return self.getToken(MySqlParser.UTF8MB4, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_charsetNameBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCharsetNameBase" ): + listener.enterCharsetNameBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCharsetNameBase" ): + listener.exitCharsetNameBase(self) + + + + + def charsetNameBase(self): + + localctx = MySqlParser.CharsetNameBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 700, self.RULE_charsetNameBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7398 + _la = self._input.LA(1) + if not(_la==226 or ((((_la - 746)) & ~0x3f) == 0 and ((1 << (_la - 746)) & 2199023255551) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TransactionLevelBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REPEATABLE(self): + return self.getToken(MySqlParser.REPEATABLE, 0) + + def COMMITTED(self): + return self.getToken(MySqlParser.COMMITTED, 0) + + def UNCOMMITTED(self): + return self.getToken(MySqlParser.UNCOMMITTED, 0) + + def SERIALIZABLE(self): + return self.getToken(MySqlParser.SERIALIZABLE, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_transactionLevelBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransactionLevelBase" ): + listener.enterTransactionLevelBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransactionLevelBase" ): + listener.exitTransactionLevelBase(self) + + + + + def transactionLevelBase(self): + + localctx = MySqlParser.TransactionLevelBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 702, self.RULE_transactionLevelBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7400 + _la = self._input.LA(1) + if not(((((_la - 799)) & ~0x3f) == 0 and ((1 << (_la - 799)) & 15) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class PrivilegesBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TABLES(self): + return self.getToken(MySqlParser.TABLES, 0) + + def ROUTINE(self): + return self.getToken(MySqlParser.ROUTINE, 0) + + def EXECUTE(self): + return self.getToken(MySqlParser.EXECUTE, 0) + + def FILE(self): + return self.getToken(MySqlParser.FILE, 0) + + def PROCESS(self): + return self.getToken(MySqlParser.PROCESS, 0) + + def RELOAD(self): + return self.getToken(MySqlParser.RELOAD, 0) + + def SHUTDOWN(self): + return self.getToken(MySqlParser.SHUTDOWN, 0) + + def SUPER(self): + return self.getToken(MySqlParser.SUPER, 0) + + def PRIVILEGES(self): + return self.getToken(MySqlParser.PRIVILEGES, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_privilegesBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrivilegesBase" ): + listener.enterPrivilegesBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrivilegesBase" ): + listener.exitPrivilegesBase(self) + + + + + def privilegesBase(self): + + localctx = MySqlParser.PrivilegesBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 704, self.RULE_privilegesBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7402 + _la = self._input.LA(1) + if not(((((_la - 708)) & ~0x3f) == 0 and ((1 << (_la - 708)) & 23656792067) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class IntervalTypeBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def QUARTER(self): + return self.getToken(MySqlParser.QUARTER, 0) + + def MONTH(self): + return self.getToken(MySqlParser.MONTH, 0) + + def DAY(self): + return self.getToken(MySqlParser.DAY, 0) + + def HOUR(self): + return self.getToken(MySqlParser.HOUR, 0) + + def MINUTE(self): + return self.getToken(MySqlParser.MINUTE, 0) + + def WEEK(self): + return self.getToken(MySqlParser.WEEK, 0) + + def SECOND(self): + return self.getToken(MySqlParser.SECOND, 0) + + def MICROSECOND(self): + return self.getToken(MySqlParser.MICROSECOND, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_intervalTypeBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalTypeBase" ): + listener.enterIntervalTypeBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalTypeBase" ): + listener.exitIntervalTypeBase(self) + + + + + def intervalTypeBase(self): + + localctx = MySqlParser.IntervalTypeBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 706, self.RULE_intervalTypeBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7404 + _la = self._input.LA(1) + if not(((((_la - 689)) & ~0x3f) == 0 and ((1 << (_la - 689)) & 255) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class DataTypeBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DATE(self): + return self.getToken(MySqlParser.DATE, 0) + + def TIME(self): + return self.getToken(MySqlParser.TIME, 0) + + def TIMESTAMP(self): + return self.getToken(MySqlParser.TIMESTAMP, 0) + + def DATETIME(self): + return self.getToken(MySqlParser.DATETIME, 0) + + def YEAR(self): + return self.getToken(MySqlParser.YEAR, 0) + + def ENUM(self): + return self.getToken(MySqlParser.ENUM, 0) + + def TEXT(self): + return self.getToken(MySqlParser.TEXT, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_dataTypeBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDataTypeBase" ): + listener.enterDataTypeBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDataTypeBase" ): + listener.exitDataTypeBase(self) + + + + + def dataTypeBase(self): + + localctx = MySqlParser.DataTypeBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 708, self.RULE_dataTypeBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7406 + _la = self._input.LA(1) + if not(((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & 1179679) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class KeywordsCanBeIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ACCOUNT(self): + return self.getToken(MySqlParser.ACCOUNT, 0) + + def ACTION(self): + return self.getToken(MySqlParser.ACTION, 0) + + def ADMIN(self): + return self.getToken(MySqlParser.ADMIN, 0) + + def AFTER(self): + return self.getToken(MySqlParser.AFTER, 0) + + def AGGREGATE(self): + return self.getToken(MySqlParser.AGGREGATE, 0) + + def ALGORITHM(self): + return self.getToken(MySqlParser.ALGORITHM, 0) + + def ANY(self): + return self.getToken(MySqlParser.ANY, 0) + + def ARRAY(self): + return self.getToken(MySqlParser.ARRAY, 0) + + def AT(self): + return self.getToken(MySqlParser.AT, 0) + + def AUDIT_ADMIN(self): + return self.getToken(MySqlParser.AUDIT_ADMIN, 0) + + def AUDIT_ABORT_EXEMPT(self): + return self.getToken(MySqlParser.AUDIT_ABORT_EXEMPT, 0) + + def AUTHORS(self): + return self.getToken(MySqlParser.AUTHORS, 0) + + def AUTOCOMMIT(self): + return self.getToken(MySqlParser.AUTOCOMMIT, 0) + + def AUTOEXTEND_SIZE(self): + return self.getToken(MySqlParser.AUTOEXTEND_SIZE, 0) + + def AUTO_INCREMENT(self): + return self.getToken(MySqlParser.AUTO_INCREMENT, 0) + + def AUTHENTICATION_POLICY_ADMIN(self): + return self.getToken(MySqlParser.AUTHENTICATION_POLICY_ADMIN, 0) + + def AVG(self): + return self.getToken(MySqlParser.AVG, 0) + + def AVG_ROW_LENGTH(self): + return self.getToken(MySqlParser.AVG_ROW_LENGTH, 0) + + def ATTRIBUTE(self): + return self.getToken(MySqlParser.ATTRIBUTE, 0) + + def BACKUP_ADMIN(self): + return self.getToken(MySqlParser.BACKUP_ADMIN, 0) + + def BEGIN(self): + return self.getToken(MySqlParser.BEGIN, 0) + + def BINLOG(self): + return self.getToken(MySqlParser.BINLOG, 0) + + def BINLOG_ADMIN(self): + return self.getToken(MySqlParser.BINLOG_ADMIN, 0) + + def BINLOG_ENCRYPTION_ADMIN(self): + return self.getToken(MySqlParser.BINLOG_ENCRYPTION_ADMIN, 0) + + def BIT(self): + return self.getToken(MySqlParser.BIT, 0) + + def BIT_AND(self): + return self.getToken(MySqlParser.BIT_AND, 0) + + def BIT_OR(self): + return self.getToken(MySqlParser.BIT_OR, 0) + + def BIT_XOR(self): + return self.getToken(MySqlParser.BIT_XOR, 0) + + def BLOCK(self): + return self.getToken(MySqlParser.BLOCK, 0) + + def BOOL(self): + return self.getToken(MySqlParser.BOOL, 0) + + def BOOLEAN(self): + return self.getToken(MySqlParser.BOOLEAN, 0) + + def BTREE(self): + return self.getToken(MySqlParser.BTREE, 0) + + def BUCKETS(self): + return self.getToken(MySqlParser.BUCKETS, 0) + + def CACHE(self): + return self.getToken(MySqlParser.CACHE, 0) + + def CASCADED(self): + return self.getToken(MySqlParser.CASCADED, 0) + + def CHAIN(self): + return self.getToken(MySqlParser.CHAIN, 0) + + def CHANGED(self): + return self.getToken(MySqlParser.CHANGED, 0) + + def CHANNEL(self): + return self.getToken(MySqlParser.CHANNEL, 0) + + def CHECKSUM(self): + return self.getToken(MySqlParser.CHECKSUM, 0) + + def PAGE_CHECKSUM(self): + return self.getToken(MySqlParser.PAGE_CHECKSUM, 0) + + def CATALOG_NAME(self): + return self.getToken(MySqlParser.CATALOG_NAME, 0) + + def CIPHER(self): + return self.getToken(MySqlParser.CIPHER, 0) + + def CLASS_ORIGIN(self): + return self.getToken(MySqlParser.CLASS_ORIGIN, 0) + + def CLIENT(self): + return self.getToken(MySqlParser.CLIENT, 0) + + def CLONE_ADMIN(self): + return self.getToken(MySqlParser.CLONE_ADMIN, 0) + + def CLOSE(self): + return self.getToken(MySqlParser.CLOSE, 0) + + def CLUSTERING(self): + return self.getToken(MySqlParser.CLUSTERING, 0) + + def COALESCE(self): + return self.getToken(MySqlParser.COALESCE, 0) + + def CODE(self): + return self.getToken(MySqlParser.CODE, 0) + + def COLUMNS(self): + return self.getToken(MySqlParser.COLUMNS, 0) + + def COLUMN_FORMAT(self): + return self.getToken(MySqlParser.COLUMN_FORMAT, 0) + + def COLUMN_NAME(self): + return self.getToken(MySqlParser.COLUMN_NAME, 0) + + def COMMENT(self): + return self.getToken(MySqlParser.COMMENT, 0) + + def COMMIT(self): + return self.getToken(MySqlParser.COMMIT, 0) + + def COMPACT(self): + return self.getToken(MySqlParser.COMPACT, 0) + + def COMPLETION(self): + return self.getToken(MySqlParser.COMPLETION, 0) + + def COMPRESSED(self): + return self.getToken(MySqlParser.COMPRESSED, 0) + + def COMPRESSION(self): + return self.getToken(MySqlParser.COMPRESSION, 0) + + def CONCURRENT(self): + return self.getToken(MySqlParser.CONCURRENT, 0) + + def CONDITION(self): + return self.getToken(MySqlParser.CONDITION, 0) + + def CONNECT(self): + return self.getToken(MySqlParser.CONNECT, 0) + + def CONNECTION(self): + return self.getToken(MySqlParser.CONNECTION, 0) + + def CONNECTION_ADMIN(self): + return self.getToken(MySqlParser.CONNECTION_ADMIN, 0) + + def CONSISTENT(self): + return self.getToken(MySqlParser.CONSISTENT, 0) + + def CONSTRAINT_CATALOG(self): + return self.getToken(MySqlParser.CONSTRAINT_CATALOG, 0) + + def CONSTRAINT_NAME(self): + return self.getToken(MySqlParser.CONSTRAINT_NAME, 0) + + def CONSTRAINT_SCHEMA(self): + return self.getToken(MySqlParser.CONSTRAINT_SCHEMA, 0) + + def CONTAINS(self): + return self.getToken(MySqlParser.CONTAINS, 0) + + def CONTEXT(self): + return self.getToken(MySqlParser.CONTEXT, 0) + + def CONTRIBUTORS(self): + return self.getToken(MySqlParser.CONTRIBUTORS, 0) + + def COPY(self): + return self.getToken(MySqlParser.COPY, 0) + + def COUNT(self): + return self.getToken(MySqlParser.COUNT, 0) + + def CPU(self): + return self.getToken(MySqlParser.CPU, 0) + + def CURRENT(self): + return self.getToken(MySqlParser.CURRENT, 0) + + def CURRENT_USER(self): + return self.getToken(MySqlParser.CURRENT_USER, 0) + + def CURSOR_NAME(self): + return self.getToken(MySqlParser.CURSOR_NAME, 0) + + def DATA(self): + return self.getToken(MySqlParser.DATA, 0) + + def DATAFILE(self): + return self.getToken(MySqlParser.DATAFILE, 0) + + def DEALLOCATE(self): + return self.getToken(MySqlParser.DEALLOCATE, 0) + + def DEFAULT(self): + return self.getToken(MySqlParser.DEFAULT, 0) + + def DEFAULT_AUTH(self): + return self.getToken(MySqlParser.DEFAULT_AUTH, 0) + + def DEFINER(self): + return self.getToken(MySqlParser.DEFINER, 0) + + def DELAY_KEY_WRITE(self): + return self.getToken(MySqlParser.DELAY_KEY_WRITE, 0) + + def DES_KEY_FILE(self): + return self.getToken(MySqlParser.DES_KEY_FILE, 0) + + def DIAGNOSTICS(self): + return self.getToken(MySqlParser.DIAGNOSTICS, 0) + + def DIRECTORY(self): + return self.getToken(MySqlParser.DIRECTORY, 0) + + def DISABLE(self): + return self.getToken(MySqlParser.DISABLE, 0) + + def DISCARD(self): + return self.getToken(MySqlParser.DISCARD, 0) + + def DISK(self): + return self.getToken(MySqlParser.DISK, 0) + + def DO(self): + return self.getToken(MySqlParser.DO, 0) + + def DUMPFILE(self): + return self.getToken(MySqlParser.DUMPFILE, 0) + + def DUPLICATE(self): + return self.getToken(MySqlParser.DUPLICATE, 0) + + def DYNAMIC(self): + return self.getToken(MySqlParser.DYNAMIC, 0) + + def EMPTY(self): + return self.getToken(MySqlParser.EMPTY, 0) + + def ENABLE(self): + return self.getToken(MySqlParser.ENABLE, 0) + + def ENCRYPTION(self): + return self.getToken(MySqlParser.ENCRYPTION, 0) + + def ENCRYPTION_KEY_ADMIN(self): + return self.getToken(MySqlParser.ENCRYPTION_KEY_ADMIN, 0) + + def END(self): + return self.getToken(MySqlParser.END, 0) + + def ENDS(self): + return self.getToken(MySqlParser.ENDS, 0) + + def ENGINE(self): + return self.getToken(MySqlParser.ENGINE, 0) + + def ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.ENGINE_ATTRIBUTE, 0) + + def ENGINES(self): + return self.getToken(MySqlParser.ENGINES, 0) + + def ENFORCED(self): + return self.getToken(MySqlParser.ENFORCED, 0) + + def ERROR(self): + return self.getToken(MySqlParser.ERROR, 0) + + def ERRORS(self): + return self.getToken(MySqlParser.ERRORS, 0) + + def ESCAPE(self): + return self.getToken(MySqlParser.ESCAPE, 0) + + def EUR(self): + return self.getToken(MySqlParser.EUR, 0) + + def EVEN(self): + return self.getToken(MySqlParser.EVEN, 0) + + def EVENT(self): + return self.getToken(MySqlParser.EVENT, 0) + + def EVENTS(self): + return self.getToken(MySqlParser.EVENTS, 0) + + def EVERY(self): + return self.getToken(MySqlParser.EVERY, 0) + + def EXCEPT(self): + return self.getToken(MySqlParser.EXCEPT, 0) + + def EXCHANGE(self): + return self.getToken(MySqlParser.EXCHANGE, 0) + + def EXCLUSIVE(self): + return self.getToken(MySqlParser.EXCLUSIVE, 0) + + def EXPIRE(self): + return self.getToken(MySqlParser.EXPIRE, 0) + + def EXPORT(self): + return self.getToken(MySqlParser.EXPORT, 0) + + def EXTENDED(self): + return self.getToken(MySqlParser.EXTENDED, 0) + + def EXTENT_SIZE(self): + return self.getToken(MySqlParser.EXTENT_SIZE, 0) + + def FAILED_LOGIN_ATTEMPTS(self): + return self.getToken(MySqlParser.FAILED_LOGIN_ATTEMPTS, 0) + + def FAST(self): + return self.getToken(MySqlParser.FAST, 0) + + def FAULTS(self): + return self.getToken(MySqlParser.FAULTS, 0) + + def FIELDS(self): + return self.getToken(MySqlParser.FIELDS, 0) + + def FILE_BLOCK_SIZE(self): + return self.getToken(MySqlParser.FILE_BLOCK_SIZE, 0) + + def FILTER(self): + return self.getToken(MySqlParser.FILTER, 0) + + def FIREWALL_ADMIN(self): + return self.getToken(MySqlParser.FIREWALL_ADMIN, 0) + + def FIREWALL_EXEMPT(self): + return self.getToken(MySqlParser.FIREWALL_EXEMPT, 0) + + def FIREWALL_USER(self): + return self.getToken(MySqlParser.FIREWALL_USER, 0) + + def FIRST(self): + return self.getToken(MySqlParser.FIRST, 0) + + def FIXED(self): + return self.getToken(MySqlParser.FIXED, 0) + + def FLUSH(self): + return self.getToken(MySqlParser.FLUSH, 0) + + def FOLLOWS(self): + return self.getToken(MySqlParser.FOLLOWS, 0) + + def FOUND(self): + return self.getToken(MySqlParser.FOUND, 0) + + def FULL(self): + return self.getToken(MySqlParser.FULL, 0) + + def FUNCTION(self): + return self.getToken(MySqlParser.FUNCTION, 0) + + def GENERAL(self): + return self.getToken(MySqlParser.GENERAL, 0) + + def GLOBAL(self): + return self.getToken(MySqlParser.GLOBAL, 0) + + def GRANTS(self): + return self.getToken(MySqlParser.GRANTS, 0) + + def GROUP(self): + return self.getToken(MySqlParser.GROUP, 0) + + def GROUP_CONCAT(self): + return self.getToken(MySqlParser.GROUP_CONCAT, 0) + + def GROUP_REPLICATION(self): + return self.getToken(MySqlParser.GROUP_REPLICATION, 0) + + def GROUP_REPLICATION_ADMIN(self): + return self.getToken(MySqlParser.GROUP_REPLICATION_ADMIN, 0) + + def HANDLER(self): + return self.getToken(MySqlParser.HANDLER, 0) + + def HASH(self): + return self.getToken(MySqlParser.HASH, 0) + + def HELP(self): + return self.getToken(MySqlParser.HELP, 0) + + def HISTORY(self): + return self.getToken(MySqlParser.HISTORY, 0) + + def HOST(self): + return self.getToken(MySqlParser.HOST, 0) + + def HOSTS(self): + return self.getToken(MySqlParser.HOSTS, 0) + + def IDENTIFIED(self): + return self.getToken(MySqlParser.IDENTIFIED, 0) + + def IGNORED(self): + return self.getToken(MySqlParser.IGNORED, 0) + + def IGNORE_SERVER_IDS(self): + return self.getToken(MySqlParser.IGNORE_SERVER_IDS, 0) + + def IMPORT(self): + return self.getToken(MySqlParser.IMPORT, 0) + + def INDEXES(self): + return self.getToken(MySqlParser.INDEXES, 0) + + def INITIAL_SIZE(self): + return self.getToken(MySqlParser.INITIAL_SIZE, 0) + + def INNODB_REDO_LOG_ARCHIVE(self): + return self.getToken(MySqlParser.INNODB_REDO_LOG_ARCHIVE, 0) + + def INPLACE(self): + return self.getToken(MySqlParser.INPLACE, 0) + + def INSERT_METHOD(self): + return self.getToken(MySqlParser.INSERT_METHOD, 0) + + def INSTALL(self): + return self.getToken(MySqlParser.INSTALL, 0) + + def INSTANCE(self): + return self.getToken(MySqlParser.INSTANCE, 0) + + def INSTANT(self): + return self.getToken(MySqlParser.INSTANT, 0) + + def INTERNAL(self): + return self.getToken(MySqlParser.INTERNAL, 0) + + def INVOKE(self): + return self.getToken(MySqlParser.INVOKE, 0) + + def INVOKER(self): + return self.getToken(MySqlParser.INVOKER, 0) + + def IO(self): + return self.getToken(MySqlParser.IO, 0) + + def IO_THREAD(self): + return self.getToken(MySqlParser.IO_THREAD, 0) + + def IPC(self): + return self.getToken(MySqlParser.IPC, 0) + + def ISO(self): + return self.getToken(MySqlParser.ISO, 0) + + def ISOLATION(self): + return self.getToken(MySqlParser.ISOLATION, 0) + + def ISSUER(self): + return self.getToken(MySqlParser.ISSUER, 0) + + def JIS(self): + return self.getToken(MySqlParser.JIS, 0) + + def JSON(self): + return self.getToken(MySqlParser.JSON, 0) + + def KEY_BLOCK_SIZE(self): + return self.getToken(MySqlParser.KEY_BLOCK_SIZE, 0) + + def LAMBDA(self): + return self.getToken(MySqlParser.LAMBDA, 0) + + def LANGUAGE(self): + return self.getToken(MySqlParser.LANGUAGE, 0) + + def LAST(self): + return self.getToken(MySqlParser.LAST, 0) + + def LATERAL(self): + return self.getToken(MySqlParser.LATERAL, 0) + + def LEAVES(self): + return self.getToken(MySqlParser.LEAVES, 0) + + def LESS(self): + return self.getToken(MySqlParser.LESS, 0) + + def LEVEL(self): + return self.getToken(MySqlParser.LEVEL, 0) + + def LIST(self): + return self.getToken(MySqlParser.LIST, 0) + + def LOCAL(self): + return self.getToken(MySqlParser.LOCAL, 0) + + def LOGFILE(self): + return self.getToken(MySqlParser.LOGFILE, 0) + + def LOGS(self): + return self.getToken(MySqlParser.LOGS, 0) + + def MASTER(self): + return self.getToken(MySqlParser.MASTER, 0) + + def MASTER_AUTO_POSITION(self): + return self.getToken(MySqlParser.MASTER_AUTO_POSITION, 0) + + def MASTER_CONNECT_RETRY(self): + return self.getToken(MySqlParser.MASTER_CONNECT_RETRY, 0) + + def MASTER_DELAY(self): + return self.getToken(MySqlParser.MASTER_DELAY, 0) + + def MASTER_HEARTBEAT_PERIOD(self): + return self.getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0) + + def MASTER_HOST(self): + return self.getToken(MySqlParser.MASTER_HOST, 0) + + def MASTER_LOG_FILE(self): + return self.getToken(MySqlParser.MASTER_LOG_FILE, 0) + + def MASTER_LOG_POS(self): + return self.getToken(MySqlParser.MASTER_LOG_POS, 0) + + def MASTER_PASSWORD(self): + return self.getToken(MySqlParser.MASTER_PASSWORD, 0) + + def MASTER_PORT(self): + return self.getToken(MySqlParser.MASTER_PORT, 0) + + def MASTER_RETRY_COUNT(self): + return self.getToken(MySqlParser.MASTER_RETRY_COUNT, 0) + + def MASTER_SSL(self): + return self.getToken(MySqlParser.MASTER_SSL, 0) + + def MASTER_SSL_CA(self): + return self.getToken(MySqlParser.MASTER_SSL_CA, 0) + + def MASTER_SSL_CAPATH(self): + return self.getToken(MySqlParser.MASTER_SSL_CAPATH, 0) + + def MASTER_SSL_CERT(self): + return self.getToken(MySqlParser.MASTER_SSL_CERT, 0) + + def MASTER_SSL_CIPHER(self): + return self.getToken(MySqlParser.MASTER_SSL_CIPHER, 0) + + def MASTER_SSL_CRL(self): + return self.getToken(MySqlParser.MASTER_SSL_CRL, 0) + + def MASTER_SSL_CRLPATH(self): + return self.getToken(MySqlParser.MASTER_SSL_CRLPATH, 0) + + def MASTER_SSL_KEY(self): + return self.getToken(MySqlParser.MASTER_SSL_KEY, 0) + + def MASTER_TLS_VERSION(self): + return self.getToken(MySqlParser.MASTER_TLS_VERSION, 0) + + def MASTER_USER(self): + return self.getToken(MySqlParser.MASTER_USER, 0) + + def MAX_CONNECTIONS_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0) + + def MAX_QUERIES_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0) + + def MAX(self): + return self.getToken(MySqlParser.MAX, 0) + + def MAX_ROWS(self): + return self.getToken(MySqlParser.MAX_ROWS, 0) + + def MAX_SIZE(self): + return self.getToken(MySqlParser.MAX_SIZE, 0) + + def MAX_UPDATES_PER_HOUR(self): + return self.getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0) + + def MAX_USER_CONNECTIONS(self): + return self.getToken(MySqlParser.MAX_USER_CONNECTIONS, 0) + + def MEDIUM(self): + return self.getToken(MySqlParser.MEDIUM, 0) + + def MEMBER(self): + return self.getToken(MySqlParser.MEMBER, 0) + + def MEMORY(self): + return self.getToken(MySqlParser.MEMORY, 0) + + def MERGE(self): + return self.getToken(MySqlParser.MERGE, 0) + + def MESSAGE_TEXT(self): + return self.getToken(MySqlParser.MESSAGE_TEXT, 0) + + def MID(self): + return self.getToken(MySqlParser.MID, 0) + + def MIGRATE(self): + return self.getToken(MySqlParser.MIGRATE, 0) + + def MIN(self): + return self.getToken(MySqlParser.MIN, 0) + + def MIN_ROWS(self): + return self.getToken(MySqlParser.MIN_ROWS, 0) + + def MODE(self): + return self.getToken(MySqlParser.MODE, 0) + + def MODIFY(self): + return self.getToken(MySqlParser.MODIFY, 0) + + def MUTEX(self): + return self.getToken(MySqlParser.MUTEX, 0) + + def MYSQL(self): + return self.getToken(MySqlParser.MYSQL, 0) + + def MYSQL_ERRNO(self): + return self.getToken(MySqlParser.MYSQL_ERRNO, 0) + + def NAME(self): + return self.getToken(MySqlParser.NAME, 0) + + def NAMES(self): + return self.getToken(MySqlParser.NAMES, 0) + + def NCHAR(self): + return self.getToken(MySqlParser.NCHAR, 0) + + def NDB_STORED_USER(self): + return self.getToken(MySqlParser.NDB_STORED_USER, 0) + + def NESTED(self): + return self.getToken(MySqlParser.NESTED, 0) + + def NEVER(self): + return self.getToken(MySqlParser.NEVER, 0) + + def NEXT(self): + return self.getToken(MySqlParser.NEXT, 0) + + def NO(self): + return self.getToken(MySqlParser.NO, 0) + + def NOCOPY(self): + return self.getToken(MySqlParser.NOCOPY, 0) + + def NODEGROUP(self): + return self.getToken(MySqlParser.NODEGROUP, 0) + + def NONE(self): + return self.getToken(MySqlParser.NONE, 0) + + def NOWAIT(self): + return self.getToken(MySqlParser.NOWAIT, 0) + + def NUMBER(self): + return self.getToken(MySqlParser.NUMBER, 0) + + def ODBC(self): + return self.getToken(MySqlParser.ODBC, 0) + + def OFFLINE(self): + return self.getToken(MySqlParser.OFFLINE, 0) + + def OFFSET(self): + return self.getToken(MySqlParser.OFFSET, 0) + + def OF(self): + return self.getToken(MySqlParser.OF, 0) + + def OJ(self): + return self.getToken(MySqlParser.OJ, 0) + + def OLD_PASSWORD(self): + return self.getToken(MySqlParser.OLD_PASSWORD, 0) + + def ONE(self): + return self.getToken(MySqlParser.ONE, 0) + + def ONLINE(self): + return self.getToken(MySqlParser.ONLINE, 0) + + def ONLY(self): + return self.getToken(MySqlParser.ONLY, 0) + + def OPEN(self): + return self.getToken(MySqlParser.OPEN, 0) + + def OPTIMIZER_COSTS(self): + return self.getToken(MySqlParser.OPTIMIZER_COSTS, 0) + + def OPTIONAL(self): + return self.getToken(MySqlParser.OPTIONAL, 0) + + def OPTIONS(self): + return self.getToken(MySqlParser.OPTIONS, 0) + + def ORDER(self): + return self.getToken(MySqlParser.ORDER, 0) + + def ORDINALITY(self): + return self.getToken(MySqlParser.ORDINALITY, 0) + + def OWNER(self): + return self.getToken(MySqlParser.OWNER, 0) + + def PACK_KEYS(self): + return self.getToken(MySqlParser.PACK_KEYS, 0) + + def PAGE(self): + return self.getToken(MySqlParser.PAGE, 0) + + def PARSER(self): + return self.getToken(MySqlParser.PARSER, 0) + + def PARTIAL(self): + return self.getToken(MySqlParser.PARTIAL, 0) + + def PARTITIONING(self): + return self.getToken(MySqlParser.PARTITIONING, 0) + + def PARTITIONS(self): + return self.getToken(MySqlParser.PARTITIONS, 0) + + def PASSWORD(self): + return self.getToken(MySqlParser.PASSWORD, 0) + + def PASSWORDLESS_USER_ADMIN(self): + return self.getToken(MySqlParser.PASSWORDLESS_USER_ADMIN, 0) + + def PASSWORD_LOCK_TIME(self): + return self.getToken(MySqlParser.PASSWORD_LOCK_TIME, 0) + + def PATH(self): + return self.getToken(MySqlParser.PATH, 0) + + def PERSIST_RO_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.PERSIST_RO_VARIABLES_ADMIN, 0) + + def PHASE(self): + return self.getToken(MySqlParser.PHASE, 0) + + def PLUGINS(self): + return self.getToken(MySqlParser.PLUGINS, 0) + + def PLUGIN_DIR(self): + return self.getToken(MySqlParser.PLUGIN_DIR, 0) + + def PLUGIN(self): + return self.getToken(MySqlParser.PLUGIN, 0) + + def PORT(self): + return self.getToken(MySqlParser.PORT, 0) + + def PRECEDES(self): + return self.getToken(MySqlParser.PRECEDES, 0) + + def PREPARE(self): + return self.getToken(MySqlParser.PREPARE, 0) + + def PRESERVE(self): + return self.getToken(MySqlParser.PRESERVE, 0) + + def PREV(self): + return self.getToken(MySqlParser.PREV, 0) + + def PRIMARY(self): + return self.getToken(MySqlParser.PRIMARY, 0) + + def PROCESSLIST(self): + return self.getToken(MySqlParser.PROCESSLIST, 0) + + def PROFILE(self): + return self.getToken(MySqlParser.PROFILE, 0) + + def PROFILES(self): + return self.getToken(MySqlParser.PROFILES, 0) + + def PROXY(self): + return self.getToken(MySqlParser.PROXY, 0) + + def QUERY(self): + return self.getToken(MySqlParser.QUERY, 0) + + def QUICK(self): + return self.getToken(MySqlParser.QUICK, 0) + + def REBUILD(self): + return self.getToken(MySqlParser.REBUILD, 0) + + def RECOVER(self): + return self.getToken(MySqlParser.RECOVER, 0) + + def RECURSIVE(self): + return self.getToken(MySqlParser.RECURSIVE, 0) + + def REDO_BUFFER_SIZE(self): + return self.getToken(MySqlParser.REDO_BUFFER_SIZE, 0) + + def REDUNDANT(self): + return self.getToken(MySqlParser.REDUNDANT, 0) + + def RELAY(self): + return self.getToken(MySqlParser.RELAY, 0) + + def RELAYLOG(self): + return self.getToken(MySqlParser.RELAYLOG, 0) + + def RELAY_LOG_FILE(self): + return self.getToken(MySqlParser.RELAY_LOG_FILE, 0) + + def RELAY_LOG_POS(self): + return self.getToken(MySqlParser.RELAY_LOG_POS, 0) + + def REMOVE(self): + return self.getToken(MySqlParser.REMOVE, 0) + + def REORGANIZE(self): + return self.getToken(MySqlParser.REORGANIZE, 0) + + def REPAIR(self): + return self.getToken(MySqlParser.REPAIR, 0) + + def REPLICATE_DO_DB(self): + return self.getToken(MySqlParser.REPLICATE_DO_DB, 0) + + def REPLICATE_DO_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_DO_TABLE, 0) + + def REPLICATE_IGNORE_DB(self): + return self.getToken(MySqlParser.REPLICATE_IGNORE_DB, 0) + + def REPLICATE_IGNORE_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0) + + def REPLICATE_REWRITE_DB(self): + return self.getToken(MySqlParser.REPLICATE_REWRITE_DB, 0) + + def REPLICATE_WILD_DO_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0) + + def REPLICATE_WILD_IGNORE_TABLE(self): + return self.getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0) + + def REPLICATION(self): + return self.getToken(MySqlParser.REPLICATION, 0) + + def REPLICATION_APPLIER(self): + return self.getToken(MySqlParser.REPLICATION_APPLIER, 0) + + def REPLICATION_SLAVE_ADMIN(self): + return self.getToken(MySqlParser.REPLICATION_SLAVE_ADMIN, 0) + + def RESET(self): + return self.getToken(MySqlParser.RESET, 0) + + def RESOURCE_GROUP_ADMIN(self): + return self.getToken(MySqlParser.RESOURCE_GROUP_ADMIN, 0) + + def RESOURCE_GROUP_USER(self): + return self.getToken(MySqlParser.RESOURCE_GROUP_USER, 0) + + def RESUME(self): + return self.getToken(MySqlParser.RESUME, 0) + + def RETURNED_SQLSTATE(self): + return self.getToken(MySqlParser.RETURNED_SQLSTATE, 0) + + def RETURNS(self): + return self.getToken(MySqlParser.RETURNS, 0) + + def REUSE(self): + return self.getToken(MySqlParser.REUSE, 0) + + def ROLE(self): + return self.getToken(MySqlParser.ROLE, 0) + + def ROLE_ADMIN(self): + return self.getToken(MySqlParser.ROLE_ADMIN, 0) + + def ROLLBACK(self): + return self.getToken(MySqlParser.ROLLBACK, 0) + + def ROLLUP(self): + return self.getToken(MySqlParser.ROLLUP, 0) + + def ROTATE(self): + return self.getToken(MySqlParser.ROTATE, 0) + + def ROW(self): + return self.getToken(MySqlParser.ROW, 0) + + def ROWS(self): + return self.getToken(MySqlParser.ROWS, 0) + + def ROW_FORMAT(self): + return self.getToken(MySqlParser.ROW_FORMAT, 0) + + def RTREE(self): + return self.getToken(MySqlParser.RTREE, 0) + + def S3(self): + return self.getToken(MySqlParser.S3, 0) + + def SAVEPOINT(self): + return self.getToken(MySqlParser.SAVEPOINT, 0) + + def SCHEDULE(self): + return self.getToken(MySqlParser.SCHEDULE, 0) + + def SCHEMA_NAME(self): + return self.getToken(MySqlParser.SCHEMA_NAME, 0) + + def SECURITY(self): + return self.getToken(MySqlParser.SECURITY, 0) + + def SECONDARY_ENGINE_ATTRIBUTE(self): + return self.getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0) + + def SERIAL(self): + return self.getToken(MySqlParser.SERIAL, 0) + + def SERVER(self): + return self.getToken(MySqlParser.SERVER, 0) + + def SESSION(self): + return self.getToken(MySqlParser.SESSION, 0) + + def SESSION_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0) + + def SET_USER_ID(self): + return self.getToken(MySqlParser.SET_USER_ID, 0) + + def SHARE(self): + return self.getToken(MySqlParser.SHARE, 0) + + def SHARED(self): + return self.getToken(MySqlParser.SHARED, 0) + + def SHOW_ROUTINE(self): + return self.getToken(MySqlParser.SHOW_ROUTINE, 0) + + def SIGNED(self): + return self.getToken(MySqlParser.SIGNED, 0) + + def SIMPLE(self): + return self.getToken(MySqlParser.SIMPLE, 0) + + def SLAVE(self): + return self.getToken(MySqlParser.SLAVE, 0) + + def SLOW(self): + return self.getToken(MySqlParser.SLOW, 0) + + def SKIP_QUERY_REWRITE(self): + return self.getToken(MySqlParser.SKIP_QUERY_REWRITE, 0) + + def SNAPSHOT(self): + return self.getToken(MySqlParser.SNAPSHOT, 0) + + def SOCKET(self): + return self.getToken(MySqlParser.SOCKET, 0) + + def SOME(self): + return self.getToken(MySqlParser.SOME, 0) + + def SONAME(self): + return self.getToken(MySqlParser.SONAME, 0) + + def SOUNDS(self): + return self.getToken(MySqlParser.SOUNDS, 0) + + def SOURCE(self): + return self.getToken(MySqlParser.SOURCE, 0) + + def SQL_AFTER_GTIDS(self): + return self.getToken(MySqlParser.SQL_AFTER_GTIDS, 0) + + def SQL_AFTER_MTS_GAPS(self): + return self.getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0) + + def SQL_BEFORE_GTIDS(self): + return self.getToken(MySqlParser.SQL_BEFORE_GTIDS, 0) + + def SQL_BUFFER_RESULT(self): + return self.getToken(MySqlParser.SQL_BUFFER_RESULT, 0) + + def SQL_CACHE(self): + return self.getToken(MySqlParser.SQL_CACHE, 0) + + def SQL_NO_CACHE(self): + return self.getToken(MySqlParser.SQL_NO_CACHE, 0) + + def SQL_THREAD(self): + return self.getToken(MySqlParser.SQL_THREAD, 0) + + def STACKED(self): + return self.getToken(MySqlParser.STACKED, 0) + + def START(self): + return self.getToken(MySqlParser.START, 0) + + def STARTS(self): + return self.getToken(MySqlParser.STARTS, 0) + + def STATS_AUTO_RECALC(self): + return self.getToken(MySqlParser.STATS_AUTO_RECALC, 0) + + def STATS_PERSISTENT(self): + return self.getToken(MySqlParser.STATS_PERSISTENT, 0) + + def STATS_SAMPLE_PAGES(self): + return self.getToken(MySqlParser.STATS_SAMPLE_PAGES, 0) + + def STATUS(self): + return self.getToken(MySqlParser.STATUS, 0) + + def STD(self): + return self.getToken(MySqlParser.STD, 0) + + def STDDEV(self): + return self.getToken(MySqlParser.STDDEV, 0) + + def STDDEV_POP(self): + return self.getToken(MySqlParser.STDDEV_POP, 0) + + def STDDEV_SAMP(self): + return self.getToken(MySqlParser.STDDEV_SAMP, 0) + + def STOP(self): + return self.getToken(MySqlParser.STOP, 0) + + def STORAGE(self): + return self.getToken(MySqlParser.STORAGE, 0) + + def STRING(self): + return self.getToken(MySqlParser.STRING, 0) + + def SUBCLASS_ORIGIN(self): + return self.getToken(MySqlParser.SUBCLASS_ORIGIN, 0) + + def SUBJECT(self): + return self.getToken(MySqlParser.SUBJECT, 0) + + def SUBPARTITION(self): + return self.getToken(MySqlParser.SUBPARTITION, 0) + + def SUBPARTITIONS(self): + return self.getToken(MySqlParser.SUBPARTITIONS, 0) + + def SUM(self): + return self.getToken(MySqlParser.SUM, 0) + + def SUSPEND(self): + return self.getToken(MySqlParser.SUSPEND, 0) + + def SWAPS(self): + return self.getToken(MySqlParser.SWAPS, 0) + + def SWITCHES(self): + return self.getToken(MySqlParser.SWITCHES, 0) + + def SYSTEM_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.SYSTEM_VARIABLES_ADMIN, 0) + + def TABLE_NAME(self): + return self.getToken(MySqlParser.TABLE_NAME, 0) + + def TABLESPACE(self): + return self.getToken(MySqlParser.TABLESPACE, 0) + + def TABLE_ENCRYPTION_ADMIN(self): + return self.getToken(MySqlParser.TABLE_ENCRYPTION_ADMIN, 0) + + def TABLE_TYPE(self): + return self.getToken(MySqlParser.TABLE_TYPE, 0) + + def TEMPORARY(self): + return self.getToken(MySqlParser.TEMPORARY, 0) + + def TEMPTABLE(self): + return self.getToken(MySqlParser.TEMPTABLE, 0) + + def THAN(self): + return self.getToken(MySqlParser.THAN, 0) + + def TP_CONNECTION_ADMIN(self): + return self.getToken(MySqlParser.TP_CONNECTION_ADMIN, 0) + + def TRADITIONAL(self): + return self.getToken(MySqlParser.TRADITIONAL, 0) + + def TRANSACTION(self): + return self.getToken(MySqlParser.TRANSACTION, 0) + + def TRANSACTIONAL(self): + return self.getToken(MySqlParser.TRANSACTIONAL, 0) + + def TRIGGERS(self): + return self.getToken(MySqlParser.TRIGGERS, 0) + + def TRUNCATE(self): + return self.getToken(MySqlParser.TRUNCATE, 0) + + def UNBOUNDED(self): + return self.getToken(MySqlParser.UNBOUNDED, 0) + + def UNDEFINED(self): + return self.getToken(MySqlParser.UNDEFINED, 0) + + def UNDOFILE(self): + return self.getToken(MySqlParser.UNDOFILE, 0) + + def UNDO_BUFFER_SIZE(self): + return self.getToken(MySqlParser.UNDO_BUFFER_SIZE, 0) + + def UNINSTALL(self): + return self.getToken(MySqlParser.UNINSTALL, 0) + + def UNKNOWN(self): + return self.getToken(MySqlParser.UNKNOWN, 0) + + def UNTIL(self): + return self.getToken(MySqlParser.UNTIL, 0) + + def UPGRADE(self): + return self.getToken(MySqlParser.UPGRADE, 0) + + def USA(self): + return self.getToken(MySqlParser.USA, 0) + + def USER(self): + return self.getToken(MySqlParser.USER, 0) + + def USE_FRM(self): + return self.getToken(MySqlParser.USE_FRM, 0) + + def USER_RESOURCES(self): + return self.getToken(MySqlParser.USER_RESOURCES, 0) + + def VALIDATION(self): + return self.getToken(MySqlParser.VALIDATION, 0) + + def VALUE(self): + return self.getToken(MySqlParser.VALUE, 0) + + def VAR_POP(self): + return self.getToken(MySqlParser.VAR_POP, 0) + + def VAR_SAMP(self): + return self.getToken(MySqlParser.VAR_SAMP, 0) + + def VARIABLES(self): + return self.getToken(MySqlParser.VARIABLES, 0) + + def VARIANCE(self): + return self.getToken(MySqlParser.VARIANCE, 0) + + def VERSION_TOKEN_ADMIN(self): + return self.getToken(MySqlParser.VERSION_TOKEN_ADMIN, 0) + + def VIEW(self): + return self.getToken(MySqlParser.VIEW, 0) + + def VIRTUAL(self): + return self.getToken(MySqlParser.VIRTUAL, 0) + + def WAIT(self): + return self.getToken(MySqlParser.WAIT, 0) + + def WARNINGS(self): + return self.getToken(MySqlParser.WARNINGS, 0) + + def WITHOUT(self): + return self.getToken(MySqlParser.WITHOUT, 0) + + def WORK(self): + return self.getToken(MySqlParser.WORK, 0) + + def WRAPPER(self): + return self.getToken(MySqlParser.WRAPPER, 0) + + def X509(self): + return self.getToken(MySqlParser.X509, 0) + + def XA(self): + return self.getToken(MySqlParser.XA, 0) + + def XA_RECOVER_ADMIN(self): + return self.getToken(MySqlParser.XA_RECOVER_ADMIN, 0) + + def XML(self): + return self.getToken(MySqlParser.XML, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_keywordsCanBeId + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterKeywordsCanBeId" ): + listener.enterKeywordsCanBeId(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitKeywordsCanBeId" ): + listener.exitKeywordsCanBeId(self) + + + + + def keywordsCanBeId(self): + + localctx = MySqlParser.KeywordsCanBeIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 710, self.RULE_keywordsCanBeId) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7408 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 756890782757308416) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 146666055054393409) != 0) or _la==158 or _la==168 or ((((_la - 239)) & ~0x3f) == 0 and ((1 << (_la - 239)) & 1769897061370560513) != 0) or ((((_la - 305)) & ~0x3f) == 0 and ((1 << (_la - 305)) & -134217473) != 0) or ((((_la - 369)) & ~0x3f) == 0 and ((1 << (_la - 369)) & -171798822913) != 0) or ((((_la - 434)) & ~0x3f) == 0 and ((1 << (_la - 434)) & -33685505) != 0) or ((((_la - 498)) & ~0x3f) == 0 and ((1 << (_la - 498)) & -2306265222165299201) != 0) or ((((_la - 562)) & ~0x3f) == 0 and ((1 << (_la - 562)) & -35186788007937) != 0) or ((((_la - 626)) & ~0x3f) == 0 and ((1 << (_la - 626)) & 9077990211383719935) != 0) or ((((_la - 697)) & ~0x3f) == 0 and ((1 << (_la - 697)) & 514225960183805) != 0) or _la==792 or _la==836 or _la==875 or _la==1000 or _la==1005 or _la==1088): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class FunctionNameBaseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ABS(self): + return self.getToken(MySqlParser.ABS, 0) + + def ACOS(self): + return self.getToken(MySqlParser.ACOS, 0) + + def ADDDATE(self): + return self.getToken(MySqlParser.ADDDATE, 0) + + def ADDTIME(self): + return self.getToken(MySqlParser.ADDTIME, 0) + + def AES_DECRYPT(self): + return self.getToken(MySqlParser.AES_DECRYPT, 0) + + def AES_ENCRYPT(self): + return self.getToken(MySqlParser.AES_ENCRYPT, 0) + + def AREA(self): + return self.getToken(MySqlParser.AREA, 0) + + def ASBINARY(self): + return self.getToken(MySqlParser.ASBINARY, 0) + + def ASIN(self): + return self.getToken(MySqlParser.ASIN, 0) + + def ASTEXT(self): + return self.getToken(MySqlParser.ASTEXT, 0) + + def ASWKB(self): + return self.getToken(MySqlParser.ASWKB, 0) + + def ASWKT(self): + return self.getToken(MySqlParser.ASWKT, 0) + + def ASYMMETRIC_DECRYPT(self): + return self.getToken(MySqlParser.ASYMMETRIC_DECRYPT, 0) + + def ASYMMETRIC_DERIVE(self): + return self.getToken(MySqlParser.ASYMMETRIC_DERIVE, 0) + + def ASYMMETRIC_ENCRYPT(self): + return self.getToken(MySqlParser.ASYMMETRIC_ENCRYPT, 0) + + def ASYMMETRIC_SIGN(self): + return self.getToken(MySqlParser.ASYMMETRIC_SIGN, 0) + + def ASYMMETRIC_VERIFY(self): + return self.getToken(MySqlParser.ASYMMETRIC_VERIFY, 0) + + def ATAN(self): + return self.getToken(MySqlParser.ATAN, 0) + + def ATAN2(self): + return self.getToken(MySqlParser.ATAN2, 0) + + def BENCHMARK(self): + return self.getToken(MySqlParser.BENCHMARK, 0) + + def BIN(self): + return self.getToken(MySqlParser.BIN, 0) + + def BIT_COUNT(self): + return self.getToken(MySqlParser.BIT_COUNT, 0) + + def BIT_LENGTH(self): + return self.getToken(MySqlParser.BIT_LENGTH, 0) + + def BUFFER(self): + return self.getToken(MySqlParser.BUFFER, 0) + + def CEIL(self): + return self.getToken(MySqlParser.CEIL, 0) + + def CEILING(self): + return self.getToken(MySqlParser.CEILING, 0) + + def CENTROID(self): + return self.getToken(MySqlParser.CENTROID, 0) + + def CHARACTER_LENGTH(self): + return self.getToken(MySqlParser.CHARACTER_LENGTH, 0) + + def CHARSET(self): + return self.getToken(MySqlParser.CHARSET, 0) + + def CHAR_LENGTH(self): + return self.getToken(MySqlParser.CHAR_LENGTH, 0) + + def COERCIBILITY(self): + return self.getToken(MySqlParser.COERCIBILITY, 0) + + def COLLATION(self): + return self.getToken(MySqlParser.COLLATION, 0) + + def COMPRESS(self): + return self.getToken(MySqlParser.COMPRESS, 0) + + def CONCAT(self): + return self.getToken(MySqlParser.CONCAT, 0) + + def CONCAT_WS(self): + return self.getToken(MySqlParser.CONCAT_WS, 0) + + def CONNECTION_ID(self): + return self.getToken(MySqlParser.CONNECTION_ID, 0) + + def CONV(self): + return self.getToken(MySqlParser.CONV, 0) + + def CONVERT_TZ(self): + return self.getToken(MySqlParser.CONVERT_TZ, 0) + + def COS(self): + return self.getToken(MySqlParser.COS, 0) + + def COT(self): + return self.getToken(MySqlParser.COT, 0) + + def COUNT(self): + return self.getToken(MySqlParser.COUNT, 0) + + def CRC32(self): + return self.getToken(MySqlParser.CRC32, 0) + + def CREATE_ASYMMETRIC_PRIV_KEY(self): + return self.getToken(MySqlParser.CREATE_ASYMMETRIC_PRIV_KEY, 0) + + def CREATE_ASYMMETRIC_PUB_KEY(self): + return self.getToken(MySqlParser.CREATE_ASYMMETRIC_PUB_KEY, 0) + + def CREATE_DH_PARAMETERS(self): + return self.getToken(MySqlParser.CREATE_DH_PARAMETERS, 0) + + def CREATE_DIGEST(self): + return self.getToken(MySqlParser.CREATE_DIGEST, 0) + + def CROSSES(self): + return self.getToken(MySqlParser.CROSSES, 0) + + def CUME_DIST(self): + return self.getToken(MySqlParser.CUME_DIST, 0) + + def DATABASE(self): + return self.getToken(MySqlParser.DATABASE, 0) + + def DATE(self): + return self.getToken(MySqlParser.DATE, 0) + + def DATEDIFF(self): + return self.getToken(MySqlParser.DATEDIFF, 0) + + def DATE_FORMAT(self): + return self.getToken(MySqlParser.DATE_FORMAT, 0) + + def DAY(self): + return self.getToken(MySqlParser.DAY, 0) + + def DAYNAME(self): + return self.getToken(MySqlParser.DAYNAME, 0) + + def DAYOFMONTH(self): + return self.getToken(MySqlParser.DAYOFMONTH, 0) + + def DAYOFWEEK(self): + return self.getToken(MySqlParser.DAYOFWEEK, 0) + + def DAYOFYEAR(self): + return self.getToken(MySqlParser.DAYOFYEAR, 0) + + def DECODE(self): + return self.getToken(MySqlParser.DECODE, 0) + + def DEGREES(self): + return self.getToken(MySqlParser.DEGREES, 0) + + def DENSE_RANK(self): + return self.getToken(MySqlParser.DENSE_RANK, 0) + + def DES_DECRYPT(self): + return self.getToken(MySqlParser.DES_DECRYPT, 0) + + def DES_ENCRYPT(self): + return self.getToken(MySqlParser.DES_ENCRYPT, 0) + + def DIMENSION(self): + return self.getToken(MySqlParser.DIMENSION, 0) + + def DISJOINT(self): + return self.getToken(MySqlParser.DISJOINT, 0) + + def ELT(self): + return self.getToken(MySqlParser.ELT, 0) + + def ENCODE(self): + return self.getToken(MySqlParser.ENCODE, 0) + + def ENCRYPT(self): + return self.getToken(MySqlParser.ENCRYPT, 0) + + def ENDPOINT(self): + return self.getToken(MySqlParser.ENDPOINT, 0) + + def ENVELOPE(self): + return self.getToken(MySqlParser.ENVELOPE, 0) + + def EQUALS(self): + return self.getToken(MySqlParser.EQUALS, 0) + + def EXP(self): + return self.getToken(MySqlParser.EXP, 0) + + def EXPORT_SET(self): + return self.getToken(MySqlParser.EXPORT_SET, 0) + + def EXTERIORRING(self): + return self.getToken(MySqlParser.EXTERIORRING, 0) + + def EXTRACTVALUE(self): + return self.getToken(MySqlParser.EXTRACTVALUE, 0) + + def FIELD(self): + return self.getToken(MySqlParser.FIELD, 0) + + def FIND_IN_SET(self): + return self.getToken(MySqlParser.FIND_IN_SET, 0) + + def FIRST_VALUE(self): + return self.getToken(MySqlParser.FIRST_VALUE, 0) + + def FLOOR(self): + return self.getToken(MySqlParser.FLOOR, 0) + + def FORMAT(self): + return self.getToken(MySqlParser.FORMAT, 0) + + def FOUND_ROWS(self): + return self.getToken(MySqlParser.FOUND_ROWS, 0) + + def FROM_BASE64(self): + return self.getToken(MySqlParser.FROM_BASE64, 0) + + def FROM_DAYS(self): + return self.getToken(MySqlParser.FROM_DAYS, 0) + + def FROM_UNIXTIME(self): + return self.getToken(MySqlParser.FROM_UNIXTIME, 0) + + def GEOMCOLLFROMTEXT(self): + return self.getToken(MySqlParser.GEOMCOLLFROMTEXT, 0) + + def GEOMCOLLFROMWKB(self): + return self.getToken(MySqlParser.GEOMCOLLFROMWKB, 0) + + def GEOMETRYCOLLECTION(self): + return self.getToken(MySqlParser.GEOMETRYCOLLECTION, 0) + + def GEOMETRYCOLLECTIONFROMTEXT(self): + return self.getToken(MySqlParser.GEOMETRYCOLLECTIONFROMTEXT, 0) + + def GEOMETRYCOLLECTIONFROMWKB(self): + return self.getToken(MySqlParser.GEOMETRYCOLLECTIONFROMWKB, 0) + + def GEOMETRYFROMTEXT(self): + return self.getToken(MySqlParser.GEOMETRYFROMTEXT, 0) + + def GEOMETRYFROMWKB(self): + return self.getToken(MySqlParser.GEOMETRYFROMWKB, 0) + + def GEOMETRYN(self): + return self.getToken(MySqlParser.GEOMETRYN, 0) + + def GEOMETRYTYPE(self): + return self.getToken(MySqlParser.GEOMETRYTYPE, 0) + + def GEOMFROMTEXT(self): + return self.getToken(MySqlParser.GEOMFROMTEXT, 0) + + def GEOMFROMWKB(self): + return self.getToken(MySqlParser.GEOMFROMWKB, 0) + + def GET_FORMAT(self): + return self.getToken(MySqlParser.GET_FORMAT, 0) + + def GET_LOCK(self): + return self.getToken(MySqlParser.GET_LOCK, 0) + + def GLENGTH(self): + return self.getToken(MySqlParser.GLENGTH, 0) + + def GREATEST(self): + return self.getToken(MySqlParser.GREATEST, 0) + + def GTID_SUBSET(self): + return self.getToken(MySqlParser.GTID_SUBSET, 0) + + def GTID_SUBTRACT(self): + return self.getToken(MySqlParser.GTID_SUBTRACT, 0) + + def HEX(self): + return self.getToken(MySqlParser.HEX, 0) + + def HOUR(self): + return self.getToken(MySqlParser.HOUR, 0) + + def IFNULL(self): + return self.getToken(MySqlParser.IFNULL, 0) + + def INET6_ATON(self): + return self.getToken(MySqlParser.INET6_ATON, 0) + + def INET6_NTOA(self): + return self.getToken(MySqlParser.INET6_NTOA, 0) + + def INET_ATON(self): + return self.getToken(MySqlParser.INET_ATON, 0) + + def INET_NTOA(self): + return self.getToken(MySqlParser.INET_NTOA, 0) + + def INSTR(self): + return self.getToken(MySqlParser.INSTR, 0) + + def INTERIORRINGN(self): + return self.getToken(MySqlParser.INTERIORRINGN, 0) + + def INTERSECTS(self): + return self.getToken(MySqlParser.INTERSECTS, 0) + + def INVISIBLE(self): + return self.getToken(MySqlParser.INVISIBLE, 0) + + def ISCLOSED(self): + return self.getToken(MySqlParser.ISCLOSED, 0) + + def ISEMPTY(self): + return self.getToken(MySqlParser.ISEMPTY, 0) + + def ISNULL(self): + return self.getToken(MySqlParser.ISNULL, 0) + + def ISSIMPLE(self): + return self.getToken(MySqlParser.ISSIMPLE, 0) + + def IS_FREE_LOCK(self): + return self.getToken(MySqlParser.IS_FREE_LOCK, 0) + + def IS_IPV4(self): + return self.getToken(MySqlParser.IS_IPV4, 0) + + def IS_IPV4_COMPAT(self): + return self.getToken(MySqlParser.IS_IPV4_COMPAT, 0) + + def IS_IPV4_MAPPED(self): + return self.getToken(MySqlParser.IS_IPV4_MAPPED, 0) + + def IS_IPV6(self): + return self.getToken(MySqlParser.IS_IPV6, 0) + + def IS_USED_LOCK(self): + return self.getToken(MySqlParser.IS_USED_LOCK, 0) + + def LAG(self): + return self.getToken(MySqlParser.LAG, 0) + + def LAST_INSERT_ID(self): + return self.getToken(MySqlParser.LAST_INSERT_ID, 0) + + def LAST_VALUE(self): + return self.getToken(MySqlParser.LAST_VALUE, 0) + + def LCASE(self): + return self.getToken(MySqlParser.LCASE, 0) + + def LEAD(self): + return self.getToken(MySqlParser.LEAD, 0) + + def LEAST(self): + return self.getToken(MySqlParser.LEAST, 0) + + def LEFT(self): + return self.getToken(MySqlParser.LEFT, 0) + + def LENGTH(self): + return self.getToken(MySqlParser.LENGTH, 0) + + def LINEFROMTEXT(self): + return self.getToken(MySqlParser.LINEFROMTEXT, 0) + + def LINEFROMWKB(self): + return self.getToken(MySqlParser.LINEFROMWKB, 0) + + def LINESTRING(self): + return self.getToken(MySqlParser.LINESTRING, 0) + + def LINESTRINGFROMTEXT(self): + return self.getToken(MySqlParser.LINESTRINGFROMTEXT, 0) + + def LINESTRINGFROMWKB(self): + return self.getToken(MySqlParser.LINESTRINGFROMWKB, 0) + + def LN(self): + return self.getToken(MySqlParser.LN, 0) + + def LOAD_FILE(self): + return self.getToken(MySqlParser.LOAD_FILE, 0) + + def LOCATE(self): + return self.getToken(MySqlParser.LOCATE, 0) + + def LOG(self): + return self.getToken(MySqlParser.LOG, 0) + + def LOG10(self): + return self.getToken(MySqlParser.LOG10, 0) + + def LOG2(self): + return self.getToken(MySqlParser.LOG2, 0) + + def LOWER(self): + return self.getToken(MySqlParser.LOWER, 0) + + def LPAD(self): + return self.getToken(MySqlParser.LPAD, 0) + + def LTRIM(self): + return self.getToken(MySqlParser.LTRIM, 0) + + def MAKEDATE(self): + return self.getToken(MySqlParser.MAKEDATE, 0) + + def MAKETIME(self): + return self.getToken(MySqlParser.MAKETIME, 0) + + def MAKE_SET(self): + return self.getToken(MySqlParser.MAKE_SET, 0) + + def MASTER_POS_WAIT(self): + return self.getToken(MySqlParser.MASTER_POS_WAIT, 0) + + def MBRCONTAINS(self): + return self.getToken(MySqlParser.MBRCONTAINS, 0) + + def MBRDISJOINT(self): + return self.getToken(MySqlParser.MBRDISJOINT, 0) + + def MBREQUAL(self): + return self.getToken(MySqlParser.MBREQUAL, 0) + + def MBRINTERSECTS(self): + return self.getToken(MySqlParser.MBRINTERSECTS, 0) + + def MBROVERLAPS(self): + return self.getToken(MySqlParser.MBROVERLAPS, 0) + + def MBRTOUCHES(self): + return self.getToken(MySqlParser.MBRTOUCHES, 0) + + def MBRWITHIN(self): + return self.getToken(MySqlParser.MBRWITHIN, 0) + + def MD5(self): + return self.getToken(MySqlParser.MD5, 0) + + def MICROSECOND(self): + return self.getToken(MySqlParser.MICROSECOND, 0) + + def MINUTE(self): + return self.getToken(MySqlParser.MINUTE, 0) + + def MLINEFROMTEXT(self): + return self.getToken(MySqlParser.MLINEFROMTEXT, 0) + + def MLINEFROMWKB(self): + return self.getToken(MySqlParser.MLINEFROMWKB, 0) + + def MOD(self): + return self.getToken(MySqlParser.MOD, 0) + + def MONTH(self): + return self.getToken(MySqlParser.MONTH, 0) + + def MONTHNAME(self): + return self.getToken(MySqlParser.MONTHNAME, 0) + + def MPOINTFROMTEXT(self): + return self.getToken(MySqlParser.MPOINTFROMTEXT, 0) + + def MPOINTFROMWKB(self): + return self.getToken(MySqlParser.MPOINTFROMWKB, 0) + + def MPOLYFROMTEXT(self): + return self.getToken(MySqlParser.MPOLYFROMTEXT, 0) + + def MPOLYFROMWKB(self): + return self.getToken(MySqlParser.MPOLYFROMWKB, 0) + + def MULTILINESTRING(self): + return self.getToken(MySqlParser.MULTILINESTRING, 0) + + def MULTILINESTRINGFROMTEXT(self): + return self.getToken(MySqlParser.MULTILINESTRINGFROMTEXT, 0) + + def MULTILINESTRINGFROMWKB(self): + return self.getToken(MySqlParser.MULTILINESTRINGFROMWKB, 0) + + def MULTIPOINT(self): + return self.getToken(MySqlParser.MULTIPOINT, 0) + + def MULTIPOINTFROMTEXT(self): + return self.getToken(MySqlParser.MULTIPOINTFROMTEXT, 0) + + def MULTIPOINTFROMWKB(self): + return self.getToken(MySqlParser.MULTIPOINTFROMWKB, 0) + + def MULTIPOLYGON(self): + return self.getToken(MySqlParser.MULTIPOLYGON, 0) + + def MULTIPOLYGONFROMTEXT(self): + return self.getToken(MySqlParser.MULTIPOLYGONFROMTEXT, 0) + + def MULTIPOLYGONFROMWKB(self): + return self.getToken(MySqlParser.MULTIPOLYGONFROMWKB, 0) + + def NAME_CONST(self): + return self.getToken(MySqlParser.NAME_CONST, 0) + + def NTH_VALUE(self): + return self.getToken(MySqlParser.NTH_VALUE, 0) + + def NTILE(self): + return self.getToken(MySqlParser.NTILE, 0) + + def NULLIF(self): + return self.getToken(MySqlParser.NULLIF, 0) + + def NUMGEOMETRIES(self): + return self.getToken(MySqlParser.NUMGEOMETRIES, 0) + + def NUMINTERIORRINGS(self): + return self.getToken(MySqlParser.NUMINTERIORRINGS, 0) + + def NUMPOINTS(self): + return self.getToken(MySqlParser.NUMPOINTS, 0) + + def OCT(self): + return self.getToken(MySqlParser.OCT, 0) + + def OCTET_LENGTH(self): + return self.getToken(MySqlParser.OCTET_LENGTH, 0) + + def ORD(self): + return self.getToken(MySqlParser.ORD, 0) + + def OVERLAPS(self): + return self.getToken(MySqlParser.OVERLAPS, 0) + + def PERCENT_RANK(self): + return self.getToken(MySqlParser.PERCENT_RANK, 0) + + def PERIOD_ADD(self): + return self.getToken(MySqlParser.PERIOD_ADD, 0) + + def PERIOD_DIFF(self): + return self.getToken(MySqlParser.PERIOD_DIFF, 0) + + def PI(self): + return self.getToken(MySqlParser.PI, 0) + + def POINT(self): + return self.getToken(MySqlParser.POINT, 0) + + def POINTFROMTEXT(self): + return self.getToken(MySqlParser.POINTFROMTEXT, 0) + + def POINTFROMWKB(self): + return self.getToken(MySqlParser.POINTFROMWKB, 0) + + def POINTN(self): + return self.getToken(MySqlParser.POINTN, 0) + + def POLYFROMTEXT(self): + return self.getToken(MySqlParser.POLYFROMTEXT, 0) + + def POLYFROMWKB(self): + return self.getToken(MySqlParser.POLYFROMWKB, 0) + + def POLYGON(self): + return self.getToken(MySqlParser.POLYGON, 0) + + def POLYGONFROMTEXT(self): + return self.getToken(MySqlParser.POLYGONFROMTEXT, 0) + + def POLYGONFROMWKB(self): + return self.getToken(MySqlParser.POLYGONFROMWKB, 0) + + def POSITION(self): + return self.getToken(MySqlParser.POSITION, 0) + + def POW(self): + return self.getToken(MySqlParser.POW, 0) + + def POWER(self): + return self.getToken(MySqlParser.POWER, 0) + + def QUARTER(self): + return self.getToken(MySqlParser.QUARTER, 0) + + def QUOTE(self): + return self.getToken(MySqlParser.QUOTE, 0) + + def RADIANS(self): + return self.getToken(MySqlParser.RADIANS, 0) + + def RAND(self): + return self.getToken(MySqlParser.RAND, 0) + + def RANDOM(self): + return self.getToken(MySqlParser.RANDOM, 0) + + def RANK(self): + return self.getToken(MySqlParser.RANK, 0) + + def RANDOM_BYTES(self): + return self.getToken(MySqlParser.RANDOM_BYTES, 0) + + def RELEASE_LOCK(self): + return self.getToken(MySqlParser.RELEASE_LOCK, 0) + + def REVERSE(self): + return self.getToken(MySqlParser.REVERSE, 0) + + def RIGHT(self): + return self.getToken(MySqlParser.RIGHT, 0) + + def ROUND(self): + return self.getToken(MySqlParser.ROUND, 0) + + def ROW_COUNT(self): + return self.getToken(MySqlParser.ROW_COUNT, 0) + + def ROW_NUMBER(self): + return self.getToken(MySqlParser.ROW_NUMBER, 0) + + def RPAD(self): + return self.getToken(MySqlParser.RPAD, 0) + + def RTRIM(self): + return self.getToken(MySqlParser.RTRIM, 0) + + def SCHEMA(self): + return self.getToken(MySqlParser.SCHEMA, 0) + + def SECOND(self): + return self.getToken(MySqlParser.SECOND, 0) + + def SEC_TO_TIME(self): + return self.getToken(MySqlParser.SEC_TO_TIME, 0) + + def SESSION_USER(self): + return self.getToken(MySqlParser.SESSION_USER, 0) + + def SESSION_VARIABLES_ADMIN(self): + return self.getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0) + + def SHA(self): + return self.getToken(MySqlParser.SHA, 0) + + def SHA1(self): + return self.getToken(MySqlParser.SHA1, 0) + + def SHA2(self): + return self.getToken(MySqlParser.SHA2, 0) + + def SIGN(self): + return self.getToken(MySqlParser.SIGN, 0) + + def SIN(self): + return self.getToken(MySqlParser.SIN, 0) + + def SLEEP(self): + return self.getToken(MySqlParser.SLEEP, 0) + + def SOUNDEX(self): + return self.getToken(MySqlParser.SOUNDEX, 0) + + def SQL_THREAD_WAIT_AFTER_GTIDS(self): + return self.getToken(MySqlParser.SQL_THREAD_WAIT_AFTER_GTIDS, 0) + + def SQRT(self): + return self.getToken(MySqlParser.SQRT, 0) + + def SRID(self): + return self.getToken(MySqlParser.SRID, 0) + + def STARTPOINT(self): + return self.getToken(MySqlParser.STARTPOINT, 0) + + def STRCMP(self): + return self.getToken(MySqlParser.STRCMP, 0) + + def STR_TO_DATE(self): + return self.getToken(MySqlParser.STR_TO_DATE, 0) + + def ST_AREA(self): + return self.getToken(MySqlParser.ST_AREA, 0) + + def ST_ASBINARY(self): + return self.getToken(MySqlParser.ST_ASBINARY, 0) + + def ST_ASTEXT(self): + return self.getToken(MySqlParser.ST_ASTEXT, 0) + + def ST_ASWKB(self): + return self.getToken(MySqlParser.ST_ASWKB, 0) + + def ST_ASWKT(self): + return self.getToken(MySqlParser.ST_ASWKT, 0) + + def ST_BUFFER(self): + return self.getToken(MySqlParser.ST_BUFFER, 0) + + def ST_CENTROID(self): + return self.getToken(MySqlParser.ST_CENTROID, 0) + + def ST_CONTAINS(self): + return self.getToken(MySqlParser.ST_CONTAINS, 0) + + def ST_CROSSES(self): + return self.getToken(MySqlParser.ST_CROSSES, 0) + + def ST_DIFFERENCE(self): + return self.getToken(MySqlParser.ST_DIFFERENCE, 0) + + def ST_DIMENSION(self): + return self.getToken(MySqlParser.ST_DIMENSION, 0) + + def ST_DISJOINT(self): + return self.getToken(MySqlParser.ST_DISJOINT, 0) + + def ST_DISTANCE(self): + return self.getToken(MySqlParser.ST_DISTANCE, 0) + + def ST_ENDPOINT(self): + return self.getToken(MySqlParser.ST_ENDPOINT, 0) + + def ST_ENVELOPE(self): + return self.getToken(MySqlParser.ST_ENVELOPE, 0) + + def ST_EQUALS(self): + return self.getToken(MySqlParser.ST_EQUALS, 0) + + def ST_EXTERIORRING(self): + return self.getToken(MySqlParser.ST_EXTERIORRING, 0) + + def ST_GEOMCOLLFROMTEXT(self): + return self.getToken(MySqlParser.ST_GEOMCOLLFROMTEXT, 0) + + def ST_GEOMCOLLFROMTXT(self): + return self.getToken(MySqlParser.ST_GEOMCOLLFROMTXT, 0) + + def ST_GEOMCOLLFROMWKB(self): + return self.getToken(MySqlParser.ST_GEOMCOLLFROMWKB, 0) + + def ST_GEOMETRYCOLLECTIONFROMTEXT(self): + return self.getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMTEXT, 0) + + def ST_GEOMETRYCOLLECTIONFROMWKB(self): + return self.getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMWKB, 0) + + def ST_GEOMETRYFROMTEXT(self): + return self.getToken(MySqlParser.ST_GEOMETRYFROMTEXT, 0) + + def ST_GEOMETRYFROMWKB(self): + return self.getToken(MySqlParser.ST_GEOMETRYFROMWKB, 0) + + def ST_GEOMETRYN(self): + return self.getToken(MySqlParser.ST_GEOMETRYN, 0) + + def ST_GEOMETRYTYPE(self): + return self.getToken(MySqlParser.ST_GEOMETRYTYPE, 0) + + def ST_GEOMFROMTEXT(self): + return self.getToken(MySqlParser.ST_GEOMFROMTEXT, 0) + + def ST_GEOMFROMWKB(self): + return self.getToken(MySqlParser.ST_GEOMFROMWKB, 0) + + def ST_INTERIORRINGN(self): + return self.getToken(MySqlParser.ST_INTERIORRINGN, 0) + + def ST_INTERSECTION(self): + return self.getToken(MySqlParser.ST_INTERSECTION, 0) + + def ST_INTERSECTS(self): + return self.getToken(MySqlParser.ST_INTERSECTS, 0) + + def ST_ISCLOSED(self): + return self.getToken(MySqlParser.ST_ISCLOSED, 0) + + def ST_ISEMPTY(self): + return self.getToken(MySqlParser.ST_ISEMPTY, 0) + + def ST_ISSIMPLE(self): + return self.getToken(MySqlParser.ST_ISSIMPLE, 0) + + def ST_LINEFROMTEXT(self): + return self.getToken(MySqlParser.ST_LINEFROMTEXT, 0) + + def ST_LINEFROMWKB(self): + return self.getToken(MySqlParser.ST_LINEFROMWKB, 0) + + def ST_LINESTRINGFROMTEXT(self): + return self.getToken(MySqlParser.ST_LINESTRINGFROMTEXT, 0) + + def ST_LINESTRINGFROMWKB(self): + return self.getToken(MySqlParser.ST_LINESTRINGFROMWKB, 0) + + def ST_NUMGEOMETRIES(self): + return self.getToken(MySqlParser.ST_NUMGEOMETRIES, 0) + + def ST_NUMINTERIORRING(self): + return self.getToken(MySqlParser.ST_NUMINTERIORRING, 0) + + def ST_NUMINTERIORRINGS(self): + return self.getToken(MySqlParser.ST_NUMINTERIORRINGS, 0) + + def ST_NUMPOINTS(self): + return self.getToken(MySqlParser.ST_NUMPOINTS, 0) + + def ST_OVERLAPS(self): + return self.getToken(MySqlParser.ST_OVERLAPS, 0) + + def ST_POINTFROMTEXT(self): + return self.getToken(MySqlParser.ST_POINTFROMTEXT, 0) + + def ST_POINTFROMWKB(self): + return self.getToken(MySqlParser.ST_POINTFROMWKB, 0) + + def ST_POINTN(self): + return self.getToken(MySqlParser.ST_POINTN, 0) + + def ST_POLYFROMTEXT(self): + return self.getToken(MySqlParser.ST_POLYFROMTEXT, 0) + + def ST_POLYFROMWKB(self): + return self.getToken(MySqlParser.ST_POLYFROMWKB, 0) + + def ST_POLYGONFROMTEXT(self): + return self.getToken(MySqlParser.ST_POLYGONFROMTEXT, 0) + + def ST_POLYGONFROMWKB(self): + return self.getToken(MySqlParser.ST_POLYGONFROMWKB, 0) + + def ST_SRID(self): + return self.getToken(MySqlParser.ST_SRID, 0) + + def ST_STARTPOINT(self): + return self.getToken(MySqlParser.ST_STARTPOINT, 0) + + def ST_SYMDIFFERENCE(self): + return self.getToken(MySqlParser.ST_SYMDIFFERENCE, 0) + + def ST_TOUCHES(self): + return self.getToken(MySqlParser.ST_TOUCHES, 0) + + def ST_UNION(self): + return self.getToken(MySqlParser.ST_UNION, 0) + + def ST_WITHIN(self): + return self.getToken(MySqlParser.ST_WITHIN, 0) + + def ST_X(self): + return self.getToken(MySqlParser.ST_X, 0) + + def ST_Y(self): + return self.getToken(MySqlParser.ST_Y, 0) + + def SUBDATE(self): + return self.getToken(MySqlParser.SUBDATE, 0) + + def SUBSTRING_INDEX(self): + return self.getToken(MySqlParser.SUBSTRING_INDEX, 0) + + def SUBTIME(self): + return self.getToken(MySqlParser.SUBTIME, 0) + + def SYSTEM_USER(self): + return self.getToken(MySqlParser.SYSTEM_USER, 0) + + def TAN(self): + return self.getToken(MySqlParser.TAN, 0) + + def TIME(self): + return self.getToken(MySqlParser.TIME, 0) + + def TIMEDIFF(self): + return self.getToken(MySqlParser.TIMEDIFF, 0) + + def TIMESTAMP(self): + return self.getToken(MySqlParser.TIMESTAMP, 0) + + def TIMESTAMPADD(self): + return self.getToken(MySqlParser.TIMESTAMPADD, 0) + + def TIMESTAMPDIFF(self): + return self.getToken(MySqlParser.TIMESTAMPDIFF, 0) + + def TIME_FORMAT(self): + return self.getToken(MySqlParser.TIME_FORMAT, 0) + + def TIME_TO_SEC(self): + return self.getToken(MySqlParser.TIME_TO_SEC, 0) + + def TOUCHES(self): + return self.getToken(MySqlParser.TOUCHES, 0) + + def TO_BASE64(self): + return self.getToken(MySqlParser.TO_BASE64, 0) + + def TO_DAYS(self): + return self.getToken(MySqlParser.TO_DAYS, 0) + + def TO_SECONDS(self): + return self.getToken(MySqlParser.TO_SECONDS, 0) + + def UCASE(self): + return self.getToken(MySqlParser.UCASE, 0) + + def UNCOMPRESS(self): + return self.getToken(MySqlParser.UNCOMPRESS, 0) + + def UNCOMPRESSED_LENGTH(self): + return self.getToken(MySqlParser.UNCOMPRESSED_LENGTH, 0) + + def UNHEX(self): + return self.getToken(MySqlParser.UNHEX, 0) + + def UNIX_TIMESTAMP(self): + return self.getToken(MySqlParser.UNIX_TIMESTAMP, 0) + + def UPDATEXML(self): + return self.getToken(MySqlParser.UPDATEXML, 0) + + def UPPER(self): + return self.getToken(MySqlParser.UPPER, 0) + + def UUID(self): + return self.getToken(MySqlParser.UUID, 0) + + def UUID_SHORT(self): + return self.getToken(MySqlParser.UUID_SHORT, 0) + + def VALIDATE_PASSWORD_STRENGTH(self): + return self.getToken(MySqlParser.VALIDATE_PASSWORD_STRENGTH, 0) + + def VERSION(self): + return self.getToken(MySqlParser.VERSION, 0) + + def VISIBLE(self): + return self.getToken(MySqlParser.VISIBLE, 0) + + def WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(self): + return self.getToken(MySqlParser.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, 0) + + def WEEK(self): + return self.getToken(MySqlParser.WEEK, 0) + + def WEEKDAY(self): + return self.getToken(MySqlParser.WEEKDAY, 0) + + def WEEKOFYEAR(self): + return self.getToken(MySqlParser.WEEKOFYEAR, 0) + + def WEIGHT_STRING(self): + return self.getToken(MySqlParser.WEIGHT_STRING, 0) + + def WITHIN(self): + return self.getToken(MySqlParser.WITHIN, 0) + + def YEAR(self): + return self.getToken(MySqlParser.YEAR, 0) + + def YEARWEEK(self): + return self.getToken(MySqlParser.YEARWEEK, 0) + + def Y_FUNCTION(self): + return self.getToken(MySqlParser.Y_FUNCTION, 0) + + def X_FUNCTION(self): + return self.getToken(MySqlParser.X_FUNCTION, 0) + + def JSON_ARRAY(self): + return self.getToken(MySqlParser.JSON_ARRAY, 0) + + def JSON_OBJECT(self): + return self.getToken(MySqlParser.JSON_OBJECT, 0) + + def JSON_QUOTE(self): + return self.getToken(MySqlParser.JSON_QUOTE, 0) + + def JSON_CONTAINS(self): + return self.getToken(MySqlParser.JSON_CONTAINS, 0) + + def JSON_CONTAINS_PATH(self): + return self.getToken(MySqlParser.JSON_CONTAINS_PATH, 0) + + def JSON_EXTRACT(self): + return self.getToken(MySqlParser.JSON_EXTRACT, 0) + + def JSON_KEYS(self): + return self.getToken(MySqlParser.JSON_KEYS, 0) + + def JSON_OVERLAPS(self): + return self.getToken(MySqlParser.JSON_OVERLAPS, 0) + + def JSON_SEARCH(self): + return self.getToken(MySqlParser.JSON_SEARCH, 0) + + def JSON_VALUE(self): + return self.getToken(MySqlParser.JSON_VALUE, 0) + + def JSON_ARRAY_APPEND(self): + return self.getToken(MySqlParser.JSON_ARRAY_APPEND, 0) + + def JSON_ARRAY_INSERT(self): + return self.getToken(MySqlParser.JSON_ARRAY_INSERT, 0) + + def JSON_INSERT(self): + return self.getToken(MySqlParser.JSON_INSERT, 0) + + def JSON_MERGE(self): + return self.getToken(MySqlParser.JSON_MERGE, 0) + + def JSON_MERGE_PATCH(self): + return self.getToken(MySqlParser.JSON_MERGE_PATCH, 0) + + def JSON_MERGE_PRESERVE(self): + return self.getToken(MySqlParser.JSON_MERGE_PRESERVE, 0) + + def JSON_REMOVE(self): + return self.getToken(MySqlParser.JSON_REMOVE, 0) + + def JSON_REPLACE(self): + return self.getToken(MySqlParser.JSON_REPLACE, 0) + + def JSON_SET(self): + return self.getToken(MySqlParser.JSON_SET, 0) + + def JSON_UNQUOTE(self): + return self.getToken(MySqlParser.JSON_UNQUOTE, 0) + + def JSON_DEPTH(self): + return self.getToken(MySqlParser.JSON_DEPTH, 0) + + def JSON_LENGTH(self): + return self.getToken(MySqlParser.JSON_LENGTH, 0) + + def JSON_TYPE(self): + return self.getToken(MySqlParser.JSON_TYPE, 0) + + def JSON_VALID(self): + return self.getToken(MySqlParser.JSON_VALID, 0) + + def JSON_TABLE(self): + return self.getToken(MySqlParser.JSON_TABLE, 0) + + def JSON_SCHEMA_VALID(self): + return self.getToken(MySqlParser.JSON_SCHEMA_VALID, 0) + + def JSON_SCHEMA_VALIDATION_REPORT(self): + return self.getToken(MySqlParser.JSON_SCHEMA_VALIDATION_REPORT, 0) + + def JSON_PRETTY(self): + return self.getToken(MySqlParser.JSON_PRETTY, 0) + + def JSON_STORAGE_FREE(self): + return self.getToken(MySqlParser.JSON_STORAGE_FREE, 0) + + def JSON_STORAGE_SIZE(self): + return self.getToken(MySqlParser.JSON_STORAGE_SIZE, 0) + + def JSON_ARRAYAGG(self): + return self.getToken(MySqlParser.JSON_ARRAYAGG, 0) + + def JSON_OBJECTAGG(self): + return self.getToken(MySqlParser.JSON_OBJECTAGG, 0) + + def getRuleIndex(self): + return MySqlParser.RULE_functionNameBase + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionNameBase" ): + listener.enterFunctionNameBase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionNameBase" ): + listener.exitFunctionNameBase(self) + + + + + def functionNameBase(self): + + localctx = MySqlParser.FunctionNameBaseContext(self, self._ctx, self.state) + self.enterRule(localctx, 712, self.RULE_functionNameBase) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 7410 + _la = self._input.LA(1) + if not(_la==39 or ((((_la - 97)) & ~0x3f) == 0 and ((1 << (_la - 97)) & 11258999068426241) != 0) or ((((_la - 217)) & ~0x3f) == 0 and ((1 << (_la - 217)) & -17179869161) != 0) or ((((_la - 281)) & ~0x3f) == 0 and ((1 << (_la - 281)) & 8796109397507) != 0) or _la==459 or ((((_la - 673)) & ~0x3f) == 0 and ((1 << (_la - 673)) & -9223372036838064127) != 0) or ((((_la - 803)) & ~0x3f) == 0 and ((1 << (_la - 803)) & -8589934599) != 0) or ((((_la - 867)) & ~0x3f) == 0 and ((1 << (_la - 867)) & -257) != 0) or ((((_la - 931)) & ~0x3f) == 0 and ((1 << (_la - 931)) & -1) != 0) or ((((_la - 995)) & ~0x3f) == 0 and ((1 << (_la - 995)) & -1057) != 0) or ((((_la - 1059)) & ~0x3f) == 0 and ((1 << (_la - 1059)) & 562949416550399) != 0) or _la==1123): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[341] = self.expression_sempred + self._predicates[342] = self.predicate_sempred + self._predicates[343] = self.expressionAtom_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def expression_sempred(self, localctx:ExpressionContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 3) + + + def predicate_sempred(self, localctx:PredicateContext, predIndex:int): + if predIndex == 1: + return self.precpred(self._ctx, 8) + + + if predIndex == 2: + return self.precpred(self._ctx, 6) + + + if predIndex == 3: + return self.precpred(self._ctx, 5) + + + if predIndex == 4: + return self.precpred(self._ctx, 3) + + + if predIndex == 5: + return self.precpred(self._ctx, 10) + + + if predIndex == 6: + return self.precpred(self._ctx, 9) + + + if predIndex == 7: + return self.precpred(self._ctx, 7) + + + if predIndex == 8: + return self.precpred(self._ctx, 4) + + + if predIndex == 9: + return self.precpred(self._ctx, 2) + + + def expressionAtom_sempred(self, localctx:ExpressionAtomContext, predIndex:int): + if predIndex == 10: + return self.precpred(self._ctx, 3) + + + if predIndex == 11: + return self.precpred(self._ctx, 2) + + + if predIndex == 12: + return self.precpred(self._ctx, 1) + + + if predIndex == 13: + return self.precpred(self._ctx, 13) + + + + + diff --git a/pymysqlreplication/ddl_parser/MySqlParserListener.py b/pymysqlreplication/ddl_parser/MySqlParserListener.py new file mode 100644 index 00000000..373c4265 --- /dev/null +++ b/pymysqlreplication/ddl_parser/MySqlParserListener.py @@ -0,0 +1,5529 @@ +# Generated from MySqlParser.g4 by ANTLR 4.13.0 +from antlr4 import * +if "." in __name__: + from .MySqlParser import MySqlParser +else: + from MySqlParser import MySqlParser + +# This class defines a complete listener for a parse tree produced by MySqlParser. +class MySqlParserListener(ParseTreeListener): + + # Enter a parse tree produced by MySqlParser#root. + def enterRoot(self, ctx:MySqlParser.RootContext): + pass + + # Exit a parse tree produced by MySqlParser#root. + def exitRoot(self, ctx:MySqlParser.RootContext): + pass + + + # Enter a parse tree produced by MySqlParser#sqlStatements. + def enterSqlStatements(self, ctx:MySqlParser.SqlStatementsContext): + pass + + # Exit a parse tree produced by MySqlParser#sqlStatements. + def exitSqlStatements(self, ctx:MySqlParser.SqlStatementsContext): + pass + + + # Enter a parse tree produced by MySqlParser#sqlStatement. + def enterSqlStatement(self, ctx:MySqlParser.SqlStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#sqlStatement. + def exitSqlStatement(self, ctx:MySqlParser.SqlStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#emptyStatement_. + def enterEmptyStatement_(self, ctx:MySqlParser.EmptyStatement_Context): + pass + + # Exit a parse tree produced by MySqlParser#emptyStatement_. + def exitEmptyStatement_(self, ctx:MySqlParser.EmptyStatement_Context): + pass + + + # Enter a parse tree produced by MySqlParser#ddlStatement. + def enterDdlStatement(self, ctx:MySqlParser.DdlStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#ddlStatement. + def exitDdlStatement(self, ctx:MySqlParser.DdlStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#dmlStatement. + def enterDmlStatement(self, ctx:MySqlParser.DmlStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#dmlStatement. + def exitDmlStatement(self, ctx:MySqlParser.DmlStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#transactionStatement. + def enterTransactionStatement(self, ctx:MySqlParser.TransactionStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#transactionStatement. + def exitTransactionStatement(self, ctx:MySqlParser.TransactionStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#replicationStatement. + def enterReplicationStatement(self, ctx:MySqlParser.ReplicationStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#replicationStatement. + def exitReplicationStatement(self, ctx:MySqlParser.ReplicationStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#preparedStatement. + def enterPreparedStatement(self, ctx:MySqlParser.PreparedStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#preparedStatement. + def exitPreparedStatement(self, ctx:MySqlParser.PreparedStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#compoundStatement. + def enterCompoundStatement(self, ctx:MySqlParser.CompoundStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#compoundStatement. + def exitCompoundStatement(self, ctx:MySqlParser.CompoundStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#administrationStatement. + def enterAdministrationStatement(self, ctx:MySqlParser.AdministrationStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#administrationStatement. + def exitAdministrationStatement(self, ctx:MySqlParser.AdministrationStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#utilityStatement. + def enterUtilityStatement(self, ctx:MySqlParser.UtilityStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#utilityStatement. + def exitUtilityStatement(self, ctx:MySqlParser.UtilityStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#createDatabase. + def enterCreateDatabase(self, ctx:MySqlParser.CreateDatabaseContext): + pass + + # Exit a parse tree produced by MySqlParser#createDatabase. + def exitCreateDatabase(self, ctx:MySqlParser.CreateDatabaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#createEvent. + def enterCreateEvent(self, ctx:MySqlParser.CreateEventContext): + pass + + # Exit a parse tree produced by MySqlParser#createEvent. + def exitCreateEvent(self, ctx:MySqlParser.CreateEventContext): + pass + + + # Enter a parse tree produced by MySqlParser#createIndex. + def enterCreateIndex(self, ctx:MySqlParser.CreateIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#createIndex. + def exitCreateIndex(self, ctx:MySqlParser.CreateIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#createLogfileGroup. + def enterCreateLogfileGroup(self, ctx:MySqlParser.CreateLogfileGroupContext): + pass + + # Exit a parse tree produced by MySqlParser#createLogfileGroup. + def exitCreateLogfileGroup(self, ctx:MySqlParser.CreateLogfileGroupContext): + pass + + + # Enter a parse tree produced by MySqlParser#createProcedure. + def enterCreateProcedure(self, ctx:MySqlParser.CreateProcedureContext): + pass + + # Exit a parse tree produced by MySqlParser#createProcedure. + def exitCreateProcedure(self, ctx:MySqlParser.CreateProcedureContext): + pass + + + # Enter a parse tree produced by MySqlParser#createFunction. + def enterCreateFunction(self, ctx:MySqlParser.CreateFunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#createFunction. + def exitCreateFunction(self, ctx:MySqlParser.CreateFunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#createRole. + def enterCreateRole(self, ctx:MySqlParser.CreateRoleContext): + pass + + # Exit a parse tree produced by MySqlParser#createRole. + def exitCreateRole(self, ctx:MySqlParser.CreateRoleContext): + pass + + + # Enter a parse tree produced by MySqlParser#createServer. + def enterCreateServer(self, ctx:MySqlParser.CreateServerContext): + pass + + # Exit a parse tree produced by MySqlParser#createServer. + def exitCreateServer(self, ctx:MySqlParser.CreateServerContext): + pass + + + # Enter a parse tree produced by MySqlParser#copyCreateTable. + def enterCopyCreateTable(self, ctx:MySqlParser.CopyCreateTableContext): + pass + + # Exit a parse tree produced by MySqlParser#copyCreateTable. + def exitCopyCreateTable(self, ctx:MySqlParser.CopyCreateTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#queryCreateTable. + def enterQueryCreateTable(self, ctx:MySqlParser.QueryCreateTableContext): + pass + + # Exit a parse tree produced by MySqlParser#queryCreateTable. + def exitQueryCreateTable(self, ctx:MySqlParser.QueryCreateTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#columnCreateTable. + def enterColumnCreateTable(self, ctx:MySqlParser.ColumnCreateTableContext): + pass + + # Exit a parse tree produced by MySqlParser#columnCreateTable. + def exitColumnCreateTable(self, ctx:MySqlParser.ColumnCreateTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#createTablespaceInnodb. + def enterCreateTablespaceInnodb(self, ctx:MySqlParser.CreateTablespaceInnodbContext): + pass + + # Exit a parse tree produced by MySqlParser#createTablespaceInnodb. + def exitCreateTablespaceInnodb(self, ctx:MySqlParser.CreateTablespaceInnodbContext): + pass + + + # Enter a parse tree produced by MySqlParser#createTablespaceNdb. + def enterCreateTablespaceNdb(self, ctx:MySqlParser.CreateTablespaceNdbContext): + pass + + # Exit a parse tree produced by MySqlParser#createTablespaceNdb. + def exitCreateTablespaceNdb(self, ctx:MySqlParser.CreateTablespaceNdbContext): + pass + + + # Enter a parse tree produced by MySqlParser#createTrigger. + def enterCreateTrigger(self, ctx:MySqlParser.CreateTriggerContext): + pass + + # Exit a parse tree produced by MySqlParser#createTrigger. + def exitCreateTrigger(self, ctx:MySqlParser.CreateTriggerContext): + pass + + + # Enter a parse tree produced by MySqlParser#withClause. + def enterWithClause(self, ctx:MySqlParser.WithClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#withClause. + def exitWithClause(self, ctx:MySqlParser.WithClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#commonTableExpressions. + def enterCommonTableExpressions(self, ctx:MySqlParser.CommonTableExpressionsContext): + pass + + # Exit a parse tree produced by MySqlParser#commonTableExpressions. + def exitCommonTableExpressions(self, ctx:MySqlParser.CommonTableExpressionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#cteName. + def enterCteName(self, ctx:MySqlParser.CteNameContext): + pass + + # Exit a parse tree produced by MySqlParser#cteName. + def exitCteName(self, ctx:MySqlParser.CteNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#cteColumnName. + def enterCteColumnName(self, ctx:MySqlParser.CteColumnNameContext): + pass + + # Exit a parse tree produced by MySqlParser#cteColumnName. + def exitCteColumnName(self, ctx:MySqlParser.CteColumnNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#createView. + def enterCreateView(self, ctx:MySqlParser.CreateViewContext): + pass + + # Exit a parse tree produced by MySqlParser#createView. + def exitCreateView(self, ctx:MySqlParser.CreateViewContext): + pass + + + # Enter a parse tree produced by MySqlParser#createDatabaseOption. + def enterCreateDatabaseOption(self, ctx:MySqlParser.CreateDatabaseOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#createDatabaseOption. + def exitCreateDatabaseOption(self, ctx:MySqlParser.CreateDatabaseOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#charSet. + def enterCharSet(self, ctx:MySqlParser.CharSetContext): + pass + + # Exit a parse tree produced by MySqlParser#charSet. + def exitCharSet(self, ctx:MySqlParser.CharSetContext): + pass + + + # Enter a parse tree produced by MySqlParser#ownerStatement. + def enterOwnerStatement(self, ctx:MySqlParser.OwnerStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#ownerStatement. + def exitOwnerStatement(self, ctx:MySqlParser.OwnerStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#preciseSchedule. + def enterPreciseSchedule(self, ctx:MySqlParser.PreciseScheduleContext): + pass + + # Exit a parse tree produced by MySqlParser#preciseSchedule. + def exitPreciseSchedule(self, ctx:MySqlParser.PreciseScheduleContext): + pass + + + # Enter a parse tree produced by MySqlParser#intervalSchedule. + def enterIntervalSchedule(self, ctx:MySqlParser.IntervalScheduleContext): + pass + + # Exit a parse tree produced by MySqlParser#intervalSchedule. + def exitIntervalSchedule(self, ctx:MySqlParser.IntervalScheduleContext): + pass + + + # Enter a parse tree produced by MySqlParser#timestampValue. + def enterTimestampValue(self, ctx:MySqlParser.TimestampValueContext): + pass + + # Exit a parse tree produced by MySqlParser#timestampValue. + def exitTimestampValue(self, ctx:MySqlParser.TimestampValueContext): + pass + + + # Enter a parse tree produced by MySqlParser#intervalExpr. + def enterIntervalExpr(self, ctx:MySqlParser.IntervalExprContext): + pass + + # Exit a parse tree produced by MySqlParser#intervalExpr. + def exitIntervalExpr(self, ctx:MySqlParser.IntervalExprContext): + pass + + + # Enter a parse tree produced by MySqlParser#intervalType. + def enterIntervalType(self, ctx:MySqlParser.IntervalTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#intervalType. + def exitIntervalType(self, ctx:MySqlParser.IntervalTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#enableType. + def enterEnableType(self, ctx:MySqlParser.EnableTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#enableType. + def exitEnableType(self, ctx:MySqlParser.EnableTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexType. + def enterIndexType(self, ctx:MySqlParser.IndexTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#indexType. + def exitIndexType(self, ctx:MySqlParser.IndexTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexOption. + def enterIndexOption(self, ctx:MySqlParser.IndexOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#indexOption. + def exitIndexOption(self, ctx:MySqlParser.IndexOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#procedureParameter. + def enterProcedureParameter(self, ctx:MySqlParser.ProcedureParameterContext): + pass + + # Exit a parse tree produced by MySqlParser#procedureParameter. + def exitProcedureParameter(self, ctx:MySqlParser.ProcedureParameterContext): + pass + + + # Enter a parse tree produced by MySqlParser#functionParameter. + def enterFunctionParameter(self, ctx:MySqlParser.FunctionParameterContext): + pass + + # Exit a parse tree produced by MySqlParser#functionParameter. + def exitFunctionParameter(self, ctx:MySqlParser.FunctionParameterContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineComment. + def enterRoutineComment(self, ctx:MySqlParser.RoutineCommentContext): + pass + + # Exit a parse tree produced by MySqlParser#routineComment. + def exitRoutineComment(self, ctx:MySqlParser.RoutineCommentContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineLanguage. + def enterRoutineLanguage(self, ctx:MySqlParser.RoutineLanguageContext): + pass + + # Exit a parse tree produced by MySqlParser#routineLanguage. + def exitRoutineLanguage(self, ctx:MySqlParser.RoutineLanguageContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineBehavior. + def enterRoutineBehavior(self, ctx:MySqlParser.RoutineBehaviorContext): + pass + + # Exit a parse tree produced by MySqlParser#routineBehavior. + def exitRoutineBehavior(self, ctx:MySqlParser.RoutineBehaviorContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineData. + def enterRoutineData(self, ctx:MySqlParser.RoutineDataContext): + pass + + # Exit a parse tree produced by MySqlParser#routineData. + def exitRoutineData(self, ctx:MySqlParser.RoutineDataContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineSecurity. + def enterRoutineSecurity(self, ctx:MySqlParser.RoutineSecurityContext): + pass + + # Exit a parse tree produced by MySqlParser#routineSecurity. + def exitRoutineSecurity(self, ctx:MySqlParser.RoutineSecurityContext): + pass + + + # Enter a parse tree produced by MySqlParser#serverOption. + def enterServerOption(self, ctx:MySqlParser.ServerOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#serverOption. + def exitServerOption(self, ctx:MySqlParser.ServerOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#createDefinitions. + def enterCreateDefinitions(self, ctx:MySqlParser.CreateDefinitionsContext): + pass + + # Exit a parse tree produced by MySqlParser#createDefinitions. + def exitCreateDefinitions(self, ctx:MySqlParser.CreateDefinitionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#columnDeclaration. + def enterColumnDeclaration(self, ctx:MySqlParser.ColumnDeclarationContext): + pass + + # Exit a parse tree produced by MySqlParser#columnDeclaration. + def exitColumnDeclaration(self, ctx:MySqlParser.ColumnDeclarationContext): + pass + + + # Enter a parse tree produced by MySqlParser#constraintDeclaration. + def enterConstraintDeclaration(self, ctx:MySqlParser.ConstraintDeclarationContext): + pass + + # Exit a parse tree produced by MySqlParser#constraintDeclaration. + def exitConstraintDeclaration(self, ctx:MySqlParser.ConstraintDeclarationContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexDeclaration. + def enterIndexDeclaration(self, ctx:MySqlParser.IndexDeclarationContext): + pass + + # Exit a parse tree produced by MySqlParser#indexDeclaration. + def exitIndexDeclaration(self, ctx:MySqlParser.IndexDeclarationContext): + pass + + + # Enter a parse tree produced by MySqlParser#columnDefinition. + def enterColumnDefinition(self, ctx:MySqlParser.ColumnDefinitionContext): + pass + + # Exit a parse tree produced by MySqlParser#columnDefinition. + def exitColumnDefinition(self, ctx:MySqlParser.ColumnDefinitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#nullColumnConstraint. + def enterNullColumnConstraint(self, ctx:MySqlParser.NullColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#nullColumnConstraint. + def exitNullColumnConstraint(self, ctx:MySqlParser.NullColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#defaultColumnConstraint. + def enterDefaultColumnConstraint(self, ctx:MySqlParser.DefaultColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#defaultColumnConstraint. + def exitDefaultColumnConstraint(self, ctx:MySqlParser.DefaultColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#visibilityColumnConstraint. + def enterVisibilityColumnConstraint(self, ctx:MySqlParser.VisibilityColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#visibilityColumnConstraint. + def exitVisibilityColumnConstraint(self, ctx:MySqlParser.VisibilityColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#invisibilityColumnConstraint. + def enterInvisibilityColumnConstraint(self, ctx:MySqlParser.InvisibilityColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#invisibilityColumnConstraint. + def exitInvisibilityColumnConstraint(self, ctx:MySqlParser.InvisibilityColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#autoIncrementColumnConstraint. + def enterAutoIncrementColumnConstraint(self, ctx:MySqlParser.AutoIncrementColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#autoIncrementColumnConstraint. + def exitAutoIncrementColumnConstraint(self, ctx:MySqlParser.AutoIncrementColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#primaryKeyColumnConstraint. + def enterPrimaryKeyColumnConstraint(self, ctx:MySqlParser.PrimaryKeyColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#primaryKeyColumnConstraint. + def exitPrimaryKeyColumnConstraint(self, ctx:MySqlParser.PrimaryKeyColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#uniqueKeyColumnConstraint. + def enterUniqueKeyColumnConstraint(self, ctx:MySqlParser.UniqueKeyColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#uniqueKeyColumnConstraint. + def exitUniqueKeyColumnConstraint(self, ctx:MySqlParser.UniqueKeyColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#commentColumnConstraint. + def enterCommentColumnConstraint(self, ctx:MySqlParser.CommentColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#commentColumnConstraint. + def exitCommentColumnConstraint(self, ctx:MySqlParser.CommentColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#formatColumnConstraint. + def enterFormatColumnConstraint(self, ctx:MySqlParser.FormatColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#formatColumnConstraint. + def exitFormatColumnConstraint(self, ctx:MySqlParser.FormatColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#storageColumnConstraint. + def enterStorageColumnConstraint(self, ctx:MySqlParser.StorageColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#storageColumnConstraint. + def exitStorageColumnConstraint(self, ctx:MySqlParser.StorageColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#referenceColumnConstraint. + def enterReferenceColumnConstraint(self, ctx:MySqlParser.ReferenceColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#referenceColumnConstraint. + def exitReferenceColumnConstraint(self, ctx:MySqlParser.ReferenceColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#collateColumnConstraint. + def enterCollateColumnConstraint(self, ctx:MySqlParser.CollateColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#collateColumnConstraint. + def exitCollateColumnConstraint(self, ctx:MySqlParser.CollateColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#generatedColumnConstraint. + def enterGeneratedColumnConstraint(self, ctx:MySqlParser.GeneratedColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#generatedColumnConstraint. + def exitGeneratedColumnConstraint(self, ctx:MySqlParser.GeneratedColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#serialDefaultColumnConstraint. + def enterSerialDefaultColumnConstraint(self, ctx:MySqlParser.SerialDefaultColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#serialDefaultColumnConstraint. + def exitSerialDefaultColumnConstraint(self, ctx:MySqlParser.SerialDefaultColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#checkColumnConstraint. + def enterCheckColumnConstraint(self, ctx:MySqlParser.CheckColumnConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#checkColumnConstraint. + def exitCheckColumnConstraint(self, ctx:MySqlParser.CheckColumnConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#primaryKeyTableConstraint. + def enterPrimaryKeyTableConstraint(self, ctx:MySqlParser.PrimaryKeyTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#primaryKeyTableConstraint. + def exitPrimaryKeyTableConstraint(self, ctx:MySqlParser.PrimaryKeyTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#uniqueKeyTableConstraint. + def enterUniqueKeyTableConstraint(self, ctx:MySqlParser.UniqueKeyTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#uniqueKeyTableConstraint. + def exitUniqueKeyTableConstraint(self, ctx:MySqlParser.UniqueKeyTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#foreignKeyTableConstraint. + def enterForeignKeyTableConstraint(self, ctx:MySqlParser.ForeignKeyTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#foreignKeyTableConstraint. + def exitForeignKeyTableConstraint(self, ctx:MySqlParser.ForeignKeyTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#checkTableConstraint. + def enterCheckTableConstraint(self, ctx:MySqlParser.CheckTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#checkTableConstraint. + def exitCheckTableConstraint(self, ctx:MySqlParser.CheckTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#referenceDefinition. + def enterReferenceDefinition(self, ctx:MySqlParser.ReferenceDefinitionContext): + pass + + # Exit a parse tree produced by MySqlParser#referenceDefinition. + def exitReferenceDefinition(self, ctx:MySqlParser.ReferenceDefinitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#referenceAction. + def enterReferenceAction(self, ctx:MySqlParser.ReferenceActionContext): + pass + + # Exit a parse tree produced by MySqlParser#referenceAction. + def exitReferenceAction(self, ctx:MySqlParser.ReferenceActionContext): + pass + + + # Enter a parse tree produced by MySqlParser#referenceControlType. + def enterReferenceControlType(self, ctx:MySqlParser.ReferenceControlTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#referenceControlType. + def exitReferenceControlType(self, ctx:MySqlParser.ReferenceControlTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleIndexDeclaration. + def enterSimpleIndexDeclaration(self, ctx:MySqlParser.SimpleIndexDeclarationContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleIndexDeclaration. + def exitSimpleIndexDeclaration(self, ctx:MySqlParser.SimpleIndexDeclarationContext): + pass + + + # Enter a parse tree produced by MySqlParser#specialIndexDeclaration. + def enterSpecialIndexDeclaration(self, ctx:MySqlParser.SpecialIndexDeclarationContext): + pass + + # Exit a parse tree produced by MySqlParser#specialIndexDeclaration. + def exitSpecialIndexDeclaration(self, ctx:MySqlParser.SpecialIndexDeclarationContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionEngine. + def enterTableOptionEngine(self, ctx:MySqlParser.TableOptionEngineContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionEngine. + def exitTableOptionEngine(self, ctx:MySqlParser.TableOptionEngineContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionEngineAttribute. + def enterTableOptionEngineAttribute(self, ctx:MySqlParser.TableOptionEngineAttributeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionEngineAttribute. + def exitTableOptionEngineAttribute(self, ctx:MySqlParser.TableOptionEngineAttributeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionAutoextendSize. + def enterTableOptionAutoextendSize(self, ctx:MySqlParser.TableOptionAutoextendSizeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionAutoextendSize. + def exitTableOptionAutoextendSize(self, ctx:MySqlParser.TableOptionAutoextendSizeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionAutoIncrement. + def enterTableOptionAutoIncrement(self, ctx:MySqlParser.TableOptionAutoIncrementContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionAutoIncrement. + def exitTableOptionAutoIncrement(self, ctx:MySqlParser.TableOptionAutoIncrementContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionAverage. + def enterTableOptionAverage(self, ctx:MySqlParser.TableOptionAverageContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionAverage. + def exitTableOptionAverage(self, ctx:MySqlParser.TableOptionAverageContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionCharset. + def enterTableOptionCharset(self, ctx:MySqlParser.TableOptionCharsetContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionCharset. + def exitTableOptionCharset(self, ctx:MySqlParser.TableOptionCharsetContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionChecksum. + def enterTableOptionChecksum(self, ctx:MySqlParser.TableOptionChecksumContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionChecksum. + def exitTableOptionChecksum(self, ctx:MySqlParser.TableOptionChecksumContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionCollate. + def enterTableOptionCollate(self, ctx:MySqlParser.TableOptionCollateContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionCollate. + def exitTableOptionCollate(self, ctx:MySqlParser.TableOptionCollateContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionComment. + def enterTableOptionComment(self, ctx:MySqlParser.TableOptionCommentContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionComment. + def exitTableOptionComment(self, ctx:MySqlParser.TableOptionCommentContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionCompression. + def enterTableOptionCompression(self, ctx:MySqlParser.TableOptionCompressionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionCompression. + def exitTableOptionCompression(self, ctx:MySqlParser.TableOptionCompressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionConnection. + def enterTableOptionConnection(self, ctx:MySqlParser.TableOptionConnectionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionConnection. + def exitTableOptionConnection(self, ctx:MySqlParser.TableOptionConnectionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionDataDirectory. + def enterTableOptionDataDirectory(self, ctx:MySqlParser.TableOptionDataDirectoryContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionDataDirectory. + def exitTableOptionDataDirectory(self, ctx:MySqlParser.TableOptionDataDirectoryContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionDelay. + def enterTableOptionDelay(self, ctx:MySqlParser.TableOptionDelayContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionDelay. + def exitTableOptionDelay(self, ctx:MySqlParser.TableOptionDelayContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionEncryption. + def enterTableOptionEncryption(self, ctx:MySqlParser.TableOptionEncryptionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionEncryption. + def exitTableOptionEncryption(self, ctx:MySqlParser.TableOptionEncryptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionPageCompressed. + def enterTableOptionPageCompressed(self, ctx:MySqlParser.TableOptionPageCompressedContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionPageCompressed. + def exitTableOptionPageCompressed(self, ctx:MySqlParser.TableOptionPageCompressedContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionPageCompressionLevel. + def enterTableOptionPageCompressionLevel(self, ctx:MySqlParser.TableOptionPageCompressionLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionPageCompressionLevel. + def exitTableOptionPageCompressionLevel(self, ctx:MySqlParser.TableOptionPageCompressionLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionEncryptionKeyId. + def enterTableOptionEncryptionKeyId(self, ctx:MySqlParser.TableOptionEncryptionKeyIdContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionEncryptionKeyId. + def exitTableOptionEncryptionKeyId(self, ctx:MySqlParser.TableOptionEncryptionKeyIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionIndexDirectory. + def enterTableOptionIndexDirectory(self, ctx:MySqlParser.TableOptionIndexDirectoryContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionIndexDirectory. + def exitTableOptionIndexDirectory(self, ctx:MySqlParser.TableOptionIndexDirectoryContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionInsertMethod. + def enterTableOptionInsertMethod(self, ctx:MySqlParser.TableOptionInsertMethodContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionInsertMethod. + def exitTableOptionInsertMethod(self, ctx:MySqlParser.TableOptionInsertMethodContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionKeyBlockSize. + def enterTableOptionKeyBlockSize(self, ctx:MySqlParser.TableOptionKeyBlockSizeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionKeyBlockSize. + def exitTableOptionKeyBlockSize(self, ctx:MySqlParser.TableOptionKeyBlockSizeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionMaxRows. + def enterTableOptionMaxRows(self, ctx:MySqlParser.TableOptionMaxRowsContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionMaxRows. + def exitTableOptionMaxRows(self, ctx:MySqlParser.TableOptionMaxRowsContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionMinRows. + def enterTableOptionMinRows(self, ctx:MySqlParser.TableOptionMinRowsContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionMinRows. + def exitTableOptionMinRows(self, ctx:MySqlParser.TableOptionMinRowsContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionPackKeys. + def enterTableOptionPackKeys(self, ctx:MySqlParser.TableOptionPackKeysContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionPackKeys. + def exitTableOptionPackKeys(self, ctx:MySqlParser.TableOptionPackKeysContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionPassword. + def enterTableOptionPassword(self, ctx:MySqlParser.TableOptionPasswordContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionPassword. + def exitTableOptionPassword(self, ctx:MySqlParser.TableOptionPasswordContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionRowFormat. + def enterTableOptionRowFormat(self, ctx:MySqlParser.TableOptionRowFormatContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionRowFormat. + def exitTableOptionRowFormat(self, ctx:MySqlParser.TableOptionRowFormatContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionStartTransaction. + def enterTableOptionStartTransaction(self, ctx:MySqlParser.TableOptionStartTransactionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionStartTransaction. + def exitTableOptionStartTransaction(self, ctx:MySqlParser.TableOptionStartTransactionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionSecondaryEngineAttribute. + def enterTableOptionSecondaryEngineAttribute(self, ctx:MySqlParser.TableOptionSecondaryEngineAttributeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionSecondaryEngineAttribute. + def exitTableOptionSecondaryEngineAttribute(self, ctx:MySqlParser.TableOptionSecondaryEngineAttributeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionRecalculation. + def enterTableOptionRecalculation(self, ctx:MySqlParser.TableOptionRecalculationContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionRecalculation. + def exitTableOptionRecalculation(self, ctx:MySqlParser.TableOptionRecalculationContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionPersistent. + def enterTableOptionPersistent(self, ctx:MySqlParser.TableOptionPersistentContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionPersistent. + def exitTableOptionPersistent(self, ctx:MySqlParser.TableOptionPersistentContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionSamplePage. + def enterTableOptionSamplePage(self, ctx:MySqlParser.TableOptionSamplePageContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionSamplePage. + def exitTableOptionSamplePage(self, ctx:MySqlParser.TableOptionSamplePageContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionTablespace. + def enterTableOptionTablespace(self, ctx:MySqlParser.TableOptionTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionTablespace. + def exitTableOptionTablespace(self, ctx:MySqlParser.TableOptionTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionTableType. + def enterTableOptionTableType(self, ctx:MySqlParser.TableOptionTableTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionTableType. + def exitTableOptionTableType(self, ctx:MySqlParser.TableOptionTableTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionTransactional. + def enterTableOptionTransactional(self, ctx:MySqlParser.TableOptionTransactionalContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionTransactional. + def exitTableOptionTransactional(self, ctx:MySqlParser.TableOptionTransactionalContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableOptionUnion. + def enterTableOptionUnion(self, ctx:MySqlParser.TableOptionUnionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableOptionUnion. + def exitTableOptionUnion(self, ctx:MySqlParser.TableOptionUnionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableType. + def enterTableType(self, ctx:MySqlParser.TableTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#tableType. + def exitTableType(self, ctx:MySqlParser.TableTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#tablespaceStorage. + def enterTablespaceStorage(self, ctx:MySqlParser.TablespaceStorageContext): + pass + + # Exit a parse tree produced by MySqlParser#tablespaceStorage. + def exitTablespaceStorage(self, ctx:MySqlParser.TablespaceStorageContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionDefinitions. + def enterPartitionDefinitions(self, ctx:MySqlParser.PartitionDefinitionsContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionDefinitions. + def exitPartitionDefinitions(self, ctx:MySqlParser.PartitionDefinitionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionFunctionHash. + def enterPartitionFunctionHash(self, ctx:MySqlParser.PartitionFunctionHashContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionFunctionHash. + def exitPartitionFunctionHash(self, ctx:MySqlParser.PartitionFunctionHashContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionFunctionKey. + def enterPartitionFunctionKey(self, ctx:MySqlParser.PartitionFunctionKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionFunctionKey. + def exitPartitionFunctionKey(self, ctx:MySqlParser.PartitionFunctionKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionFunctionRange. + def enterPartitionFunctionRange(self, ctx:MySqlParser.PartitionFunctionRangeContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionFunctionRange. + def exitPartitionFunctionRange(self, ctx:MySqlParser.PartitionFunctionRangeContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionFunctionList. + def enterPartitionFunctionList(self, ctx:MySqlParser.PartitionFunctionListContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionFunctionList. + def exitPartitionFunctionList(self, ctx:MySqlParser.PartitionFunctionListContext): + pass + + + # Enter a parse tree produced by MySqlParser#subPartitionFunctionHash. + def enterSubPartitionFunctionHash(self, ctx:MySqlParser.SubPartitionFunctionHashContext): + pass + + # Exit a parse tree produced by MySqlParser#subPartitionFunctionHash. + def exitSubPartitionFunctionHash(self, ctx:MySqlParser.SubPartitionFunctionHashContext): + pass + + + # Enter a parse tree produced by MySqlParser#subPartitionFunctionKey. + def enterSubPartitionFunctionKey(self, ctx:MySqlParser.SubPartitionFunctionKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#subPartitionFunctionKey. + def exitSubPartitionFunctionKey(self, ctx:MySqlParser.SubPartitionFunctionKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionComparison. + def enterPartitionComparison(self, ctx:MySqlParser.PartitionComparisonContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionComparison. + def exitPartitionComparison(self, ctx:MySqlParser.PartitionComparisonContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionListAtom. + def enterPartitionListAtom(self, ctx:MySqlParser.PartitionListAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionListAtom. + def exitPartitionListAtom(self, ctx:MySqlParser.PartitionListAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionListVector. + def enterPartitionListVector(self, ctx:MySqlParser.PartitionListVectorContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionListVector. + def exitPartitionListVector(self, ctx:MySqlParser.PartitionListVectorContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionSimple. + def enterPartitionSimple(self, ctx:MySqlParser.PartitionSimpleContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionSimple. + def exitPartitionSimple(self, ctx:MySqlParser.PartitionSimpleContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionDefinerAtom. + def enterPartitionDefinerAtom(self, ctx:MySqlParser.PartitionDefinerAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionDefinerAtom. + def exitPartitionDefinerAtom(self, ctx:MySqlParser.PartitionDefinerAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionDefinerVector. + def enterPartitionDefinerVector(self, ctx:MySqlParser.PartitionDefinerVectorContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionDefinerVector. + def exitPartitionDefinerVector(self, ctx:MySqlParser.PartitionDefinerVectorContext): + pass + + + # Enter a parse tree produced by MySqlParser#subpartitionDefinition. + def enterSubpartitionDefinition(self, ctx:MySqlParser.SubpartitionDefinitionContext): + pass + + # Exit a parse tree produced by MySqlParser#subpartitionDefinition. + def exitSubpartitionDefinition(self, ctx:MySqlParser.SubpartitionDefinitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionEngine. + def enterPartitionOptionEngine(self, ctx:MySqlParser.PartitionOptionEngineContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionEngine. + def exitPartitionOptionEngine(self, ctx:MySqlParser.PartitionOptionEngineContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionComment. + def enterPartitionOptionComment(self, ctx:MySqlParser.PartitionOptionCommentContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionComment. + def exitPartitionOptionComment(self, ctx:MySqlParser.PartitionOptionCommentContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionDataDirectory. + def enterPartitionOptionDataDirectory(self, ctx:MySqlParser.PartitionOptionDataDirectoryContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionDataDirectory. + def exitPartitionOptionDataDirectory(self, ctx:MySqlParser.PartitionOptionDataDirectoryContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionIndexDirectory. + def enterPartitionOptionIndexDirectory(self, ctx:MySqlParser.PartitionOptionIndexDirectoryContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionIndexDirectory. + def exitPartitionOptionIndexDirectory(self, ctx:MySqlParser.PartitionOptionIndexDirectoryContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionMaxRows. + def enterPartitionOptionMaxRows(self, ctx:MySqlParser.PartitionOptionMaxRowsContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionMaxRows. + def exitPartitionOptionMaxRows(self, ctx:MySqlParser.PartitionOptionMaxRowsContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionMinRows. + def enterPartitionOptionMinRows(self, ctx:MySqlParser.PartitionOptionMinRowsContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionMinRows. + def exitPartitionOptionMinRows(self, ctx:MySqlParser.PartitionOptionMinRowsContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionTablespace. + def enterPartitionOptionTablespace(self, ctx:MySqlParser.PartitionOptionTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionTablespace. + def exitPartitionOptionTablespace(self, ctx:MySqlParser.PartitionOptionTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionOptionNodeGroup. + def enterPartitionOptionNodeGroup(self, ctx:MySqlParser.PartitionOptionNodeGroupContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionOptionNodeGroup. + def exitPartitionOptionNodeGroup(self, ctx:MySqlParser.PartitionOptionNodeGroupContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterSimpleDatabase. + def enterAlterSimpleDatabase(self, ctx:MySqlParser.AlterSimpleDatabaseContext): + pass + + # Exit a parse tree produced by MySqlParser#alterSimpleDatabase. + def exitAlterSimpleDatabase(self, ctx:MySqlParser.AlterSimpleDatabaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterUpgradeName. + def enterAlterUpgradeName(self, ctx:MySqlParser.AlterUpgradeNameContext): + pass + + # Exit a parse tree produced by MySqlParser#alterUpgradeName. + def exitAlterUpgradeName(self, ctx:MySqlParser.AlterUpgradeNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterEvent. + def enterAlterEvent(self, ctx:MySqlParser.AlterEventContext): + pass + + # Exit a parse tree produced by MySqlParser#alterEvent. + def exitAlterEvent(self, ctx:MySqlParser.AlterEventContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterFunction. + def enterAlterFunction(self, ctx:MySqlParser.AlterFunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterFunction. + def exitAlterFunction(self, ctx:MySqlParser.AlterFunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterInstance. + def enterAlterInstance(self, ctx:MySqlParser.AlterInstanceContext): + pass + + # Exit a parse tree produced by MySqlParser#alterInstance. + def exitAlterInstance(self, ctx:MySqlParser.AlterInstanceContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterLogfileGroup. + def enterAlterLogfileGroup(self, ctx:MySqlParser.AlterLogfileGroupContext): + pass + + # Exit a parse tree produced by MySqlParser#alterLogfileGroup. + def exitAlterLogfileGroup(self, ctx:MySqlParser.AlterLogfileGroupContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterProcedure. + def enterAlterProcedure(self, ctx:MySqlParser.AlterProcedureContext): + pass + + # Exit a parse tree produced by MySqlParser#alterProcedure. + def exitAlterProcedure(self, ctx:MySqlParser.AlterProcedureContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterServer. + def enterAlterServer(self, ctx:MySqlParser.AlterServerContext): + pass + + # Exit a parse tree produced by MySqlParser#alterServer. + def exitAlterServer(self, ctx:MySqlParser.AlterServerContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterTable. + def enterAlterTable(self, ctx:MySqlParser.AlterTableContext): + pass + + # Exit a parse tree produced by MySqlParser#alterTable. + def exitAlterTable(self, ctx:MySqlParser.AlterTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterTablespace. + def enterAlterTablespace(self, ctx:MySqlParser.AlterTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#alterTablespace. + def exitAlterTablespace(self, ctx:MySqlParser.AlterTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterView. + def enterAlterView(self, ctx:MySqlParser.AlterViewContext): + pass + + # Exit a parse tree produced by MySqlParser#alterView. + def exitAlterView(self, ctx:MySqlParser.AlterViewContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByTableOption. + def enterAlterByTableOption(self, ctx:MySqlParser.AlterByTableOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByTableOption. + def exitAlterByTableOption(self, ctx:MySqlParser.AlterByTableOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddColumn. + def enterAlterByAddColumn(self, ctx:MySqlParser.AlterByAddColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddColumn. + def exitAlterByAddColumn(self, ctx:MySqlParser.AlterByAddColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddColumns. + def enterAlterByAddColumns(self, ctx:MySqlParser.AlterByAddColumnsContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddColumns. + def exitAlterByAddColumns(self, ctx:MySqlParser.AlterByAddColumnsContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddIndex. + def enterAlterByAddIndex(self, ctx:MySqlParser.AlterByAddIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddIndex. + def exitAlterByAddIndex(self, ctx:MySqlParser.AlterByAddIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddPrimaryKey. + def enterAlterByAddPrimaryKey(self, ctx:MySqlParser.AlterByAddPrimaryKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddPrimaryKey. + def exitAlterByAddPrimaryKey(self, ctx:MySqlParser.AlterByAddPrimaryKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddUniqueKey. + def enterAlterByAddUniqueKey(self, ctx:MySqlParser.AlterByAddUniqueKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddUniqueKey. + def exitAlterByAddUniqueKey(self, ctx:MySqlParser.AlterByAddUniqueKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddSpecialIndex. + def enterAlterByAddSpecialIndex(self, ctx:MySqlParser.AlterByAddSpecialIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddSpecialIndex. + def exitAlterByAddSpecialIndex(self, ctx:MySqlParser.AlterByAddSpecialIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddForeignKey. + def enterAlterByAddForeignKey(self, ctx:MySqlParser.AlterByAddForeignKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddForeignKey. + def exitAlterByAddForeignKey(self, ctx:MySqlParser.AlterByAddForeignKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddCheckTableConstraint. + def enterAlterByAddCheckTableConstraint(self, ctx:MySqlParser.AlterByAddCheckTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddCheckTableConstraint. + def exitAlterByAddCheckTableConstraint(self, ctx:MySqlParser.AlterByAddCheckTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAlterCheckTableConstraint. + def enterAlterByAlterCheckTableConstraint(self, ctx:MySqlParser.AlterByAlterCheckTableConstraintContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAlterCheckTableConstraint. + def exitAlterByAlterCheckTableConstraint(self, ctx:MySqlParser.AlterByAlterCheckTableConstraintContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterBySetAlgorithm. + def enterAlterBySetAlgorithm(self, ctx:MySqlParser.AlterBySetAlgorithmContext): + pass + + # Exit a parse tree produced by MySqlParser#alterBySetAlgorithm. + def exitAlterBySetAlgorithm(self, ctx:MySqlParser.AlterBySetAlgorithmContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByChangeDefault. + def enterAlterByChangeDefault(self, ctx:MySqlParser.AlterByChangeDefaultContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByChangeDefault. + def exitAlterByChangeDefault(self, ctx:MySqlParser.AlterByChangeDefaultContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByChangeColumn. + def enterAlterByChangeColumn(self, ctx:MySqlParser.AlterByChangeColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByChangeColumn. + def exitAlterByChangeColumn(self, ctx:MySqlParser.AlterByChangeColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRenameColumn. + def enterAlterByRenameColumn(self, ctx:MySqlParser.AlterByRenameColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRenameColumn. + def exitAlterByRenameColumn(self, ctx:MySqlParser.AlterByRenameColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByLock. + def enterAlterByLock(self, ctx:MySqlParser.AlterByLockContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByLock. + def exitAlterByLock(self, ctx:MySqlParser.AlterByLockContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByModifyColumn. + def enterAlterByModifyColumn(self, ctx:MySqlParser.AlterByModifyColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByModifyColumn. + def exitAlterByModifyColumn(self, ctx:MySqlParser.AlterByModifyColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropColumn. + def enterAlterByDropColumn(self, ctx:MySqlParser.AlterByDropColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropColumn. + def exitAlterByDropColumn(self, ctx:MySqlParser.AlterByDropColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropConstraintCheck. + def enterAlterByDropConstraintCheck(self, ctx:MySqlParser.AlterByDropConstraintCheckContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropConstraintCheck. + def exitAlterByDropConstraintCheck(self, ctx:MySqlParser.AlterByDropConstraintCheckContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropPrimaryKey. + def enterAlterByDropPrimaryKey(self, ctx:MySqlParser.AlterByDropPrimaryKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropPrimaryKey. + def exitAlterByDropPrimaryKey(self, ctx:MySqlParser.AlterByDropPrimaryKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropIndex. + def enterAlterByDropIndex(self, ctx:MySqlParser.AlterByDropIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropIndex. + def exitAlterByDropIndex(self, ctx:MySqlParser.AlterByDropIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRenameIndex. + def enterAlterByRenameIndex(self, ctx:MySqlParser.AlterByRenameIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRenameIndex. + def exitAlterByRenameIndex(self, ctx:MySqlParser.AlterByRenameIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAlterColumnDefault. + def enterAlterByAlterColumnDefault(self, ctx:MySqlParser.AlterByAlterColumnDefaultContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAlterColumnDefault. + def exitAlterByAlterColumnDefault(self, ctx:MySqlParser.AlterByAlterColumnDefaultContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAlterIndexVisibility. + def enterAlterByAlterIndexVisibility(self, ctx:MySqlParser.AlterByAlterIndexVisibilityContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAlterIndexVisibility. + def exitAlterByAlterIndexVisibility(self, ctx:MySqlParser.AlterByAlterIndexVisibilityContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropForeignKey. + def enterAlterByDropForeignKey(self, ctx:MySqlParser.AlterByDropForeignKeyContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropForeignKey. + def exitAlterByDropForeignKey(self, ctx:MySqlParser.AlterByDropForeignKeyContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDisableKeys. + def enterAlterByDisableKeys(self, ctx:MySqlParser.AlterByDisableKeysContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDisableKeys. + def exitAlterByDisableKeys(self, ctx:MySqlParser.AlterByDisableKeysContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByEnableKeys. + def enterAlterByEnableKeys(self, ctx:MySqlParser.AlterByEnableKeysContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByEnableKeys. + def exitAlterByEnableKeys(self, ctx:MySqlParser.AlterByEnableKeysContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRename. + def enterAlterByRename(self, ctx:MySqlParser.AlterByRenameContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRename. + def exitAlterByRename(self, ctx:MySqlParser.AlterByRenameContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByOrder. + def enterAlterByOrder(self, ctx:MySqlParser.AlterByOrderContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByOrder. + def exitAlterByOrder(self, ctx:MySqlParser.AlterByOrderContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByConvertCharset. + def enterAlterByConvertCharset(self, ctx:MySqlParser.AlterByConvertCharsetContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByConvertCharset. + def exitAlterByConvertCharset(self, ctx:MySqlParser.AlterByConvertCharsetContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDefaultCharset. + def enterAlterByDefaultCharset(self, ctx:MySqlParser.AlterByDefaultCharsetContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDefaultCharset. + def exitAlterByDefaultCharset(self, ctx:MySqlParser.AlterByDefaultCharsetContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDiscardTablespace. + def enterAlterByDiscardTablespace(self, ctx:MySqlParser.AlterByDiscardTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDiscardTablespace. + def exitAlterByDiscardTablespace(self, ctx:MySqlParser.AlterByDiscardTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByImportTablespace. + def enterAlterByImportTablespace(self, ctx:MySqlParser.AlterByImportTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByImportTablespace. + def exitAlterByImportTablespace(self, ctx:MySqlParser.AlterByImportTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByForce. + def enterAlterByForce(self, ctx:MySqlParser.AlterByForceContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByForce. + def exitAlterByForce(self, ctx:MySqlParser.AlterByForceContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByValidate. + def enterAlterByValidate(self, ctx:MySqlParser.AlterByValidateContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByValidate. + def exitAlterByValidate(self, ctx:MySqlParser.AlterByValidateContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddDefinitions. + def enterAlterByAddDefinitions(self, ctx:MySqlParser.AlterByAddDefinitionsContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddDefinitions. + def exitAlterByAddDefinitions(self, ctx:MySqlParser.AlterByAddDefinitionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterPartition. + def enterAlterPartition(self, ctx:MySqlParser.AlterPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterPartition. + def exitAlterPartition(self, ctx:MySqlParser.AlterPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAddPartition. + def enterAlterByAddPartition(self, ctx:MySqlParser.AlterByAddPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAddPartition. + def exitAlterByAddPartition(self, ctx:MySqlParser.AlterByAddPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDropPartition. + def enterAlterByDropPartition(self, ctx:MySqlParser.AlterByDropPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDropPartition. + def exitAlterByDropPartition(self, ctx:MySqlParser.AlterByDropPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByDiscardPartition. + def enterAlterByDiscardPartition(self, ctx:MySqlParser.AlterByDiscardPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByDiscardPartition. + def exitAlterByDiscardPartition(self, ctx:MySqlParser.AlterByDiscardPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByImportPartition. + def enterAlterByImportPartition(self, ctx:MySqlParser.AlterByImportPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByImportPartition. + def exitAlterByImportPartition(self, ctx:MySqlParser.AlterByImportPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByTruncatePartition. + def enterAlterByTruncatePartition(self, ctx:MySqlParser.AlterByTruncatePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByTruncatePartition. + def exitAlterByTruncatePartition(self, ctx:MySqlParser.AlterByTruncatePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByCoalescePartition. + def enterAlterByCoalescePartition(self, ctx:MySqlParser.AlterByCoalescePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByCoalescePartition. + def exitAlterByCoalescePartition(self, ctx:MySqlParser.AlterByCoalescePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByReorganizePartition. + def enterAlterByReorganizePartition(self, ctx:MySqlParser.AlterByReorganizePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByReorganizePartition. + def exitAlterByReorganizePartition(self, ctx:MySqlParser.AlterByReorganizePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByExchangePartition. + def enterAlterByExchangePartition(self, ctx:MySqlParser.AlterByExchangePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByExchangePartition. + def exitAlterByExchangePartition(self, ctx:MySqlParser.AlterByExchangePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByAnalyzePartition. + def enterAlterByAnalyzePartition(self, ctx:MySqlParser.AlterByAnalyzePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByAnalyzePartition. + def exitAlterByAnalyzePartition(self, ctx:MySqlParser.AlterByAnalyzePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByCheckPartition. + def enterAlterByCheckPartition(self, ctx:MySqlParser.AlterByCheckPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByCheckPartition. + def exitAlterByCheckPartition(self, ctx:MySqlParser.AlterByCheckPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByOptimizePartition. + def enterAlterByOptimizePartition(self, ctx:MySqlParser.AlterByOptimizePartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByOptimizePartition. + def exitAlterByOptimizePartition(self, ctx:MySqlParser.AlterByOptimizePartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRebuildPartition. + def enterAlterByRebuildPartition(self, ctx:MySqlParser.AlterByRebuildPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRebuildPartition. + def exitAlterByRebuildPartition(self, ctx:MySqlParser.AlterByRebuildPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRepairPartition. + def enterAlterByRepairPartition(self, ctx:MySqlParser.AlterByRepairPartitionContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRepairPartition. + def exitAlterByRepairPartition(self, ctx:MySqlParser.AlterByRepairPartitionContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByRemovePartitioning. + def enterAlterByRemovePartitioning(self, ctx:MySqlParser.AlterByRemovePartitioningContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByRemovePartitioning. + def exitAlterByRemovePartitioning(self, ctx:MySqlParser.AlterByRemovePartitioningContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterByUpgradePartitioning. + def enterAlterByUpgradePartitioning(self, ctx:MySqlParser.AlterByUpgradePartitioningContext): + pass + + # Exit a parse tree produced by MySqlParser#alterByUpgradePartitioning. + def exitAlterByUpgradePartitioning(self, ctx:MySqlParser.AlterByUpgradePartitioningContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropDatabase. + def enterDropDatabase(self, ctx:MySqlParser.DropDatabaseContext): + pass + + # Exit a parse tree produced by MySqlParser#dropDatabase. + def exitDropDatabase(self, ctx:MySqlParser.DropDatabaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropEvent. + def enterDropEvent(self, ctx:MySqlParser.DropEventContext): + pass + + # Exit a parse tree produced by MySqlParser#dropEvent. + def exitDropEvent(self, ctx:MySqlParser.DropEventContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropIndex. + def enterDropIndex(self, ctx:MySqlParser.DropIndexContext): + pass + + # Exit a parse tree produced by MySqlParser#dropIndex. + def exitDropIndex(self, ctx:MySqlParser.DropIndexContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropLogfileGroup. + def enterDropLogfileGroup(self, ctx:MySqlParser.DropLogfileGroupContext): + pass + + # Exit a parse tree produced by MySqlParser#dropLogfileGroup. + def exitDropLogfileGroup(self, ctx:MySqlParser.DropLogfileGroupContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropProcedure. + def enterDropProcedure(self, ctx:MySqlParser.DropProcedureContext): + pass + + # Exit a parse tree produced by MySqlParser#dropProcedure. + def exitDropProcedure(self, ctx:MySqlParser.DropProcedureContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropFunction. + def enterDropFunction(self, ctx:MySqlParser.DropFunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#dropFunction. + def exitDropFunction(self, ctx:MySqlParser.DropFunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropServer. + def enterDropServer(self, ctx:MySqlParser.DropServerContext): + pass + + # Exit a parse tree produced by MySqlParser#dropServer. + def exitDropServer(self, ctx:MySqlParser.DropServerContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropTable. + def enterDropTable(self, ctx:MySqlParser.DropTableContext): + pass + + # Exit a parse tree produced by MySqlParser#dropTable. + def exitDropTable(self, ctx:MySqlParser.DropTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropTablespace. + def enterDropTablespace(self, ctx:MySqlParser.DropTablespaceContext): + pass + + # Exit a parse tree produced by MySqlParser#dropTablespace. + def exitDropTablespace(self, ctx:MySqlParser.DropTablespaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropTrigger. + def enterDropTrigger(self, ctx:MySqlParser.DropTriggerContext): + pass + + # Exit a parse tree produced by MySqlParser#dropTrigger. + def exitDropTrigger(self, ctx:MySqlParser.DropTriggerContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropView. + def enterDropView(self, ctx:MySqlParser.DropViewContext): + pass + + # Exit a parse tree produced by MySqlParser#dropView. + def exitDropView(self, ctx:MySqlParser.DropViewContext): + pass + + + # Enter a parse tree produced by MySqlParser#dropRole. + def enterDropRole(self, ctx:MySqlParser.DropRoleContext): + pass + + # Exit a parse tree produced by MySqlParser#dropRole. + def exitDropRole(self, ctx:MySqlParser.DropRoleContext): + pass + + + # Enter a parse tree produced by MySqlParser#setRole. + def enterSetRole(self, ctx:MySqlParser.SetRoleContext): + pass + + # Exit a parse tree produced by MySqlParser#setRole. + def exitSetRole(self, ctx:MySqlParser.SetRoleContext): + pass + + + # Enter a parse tree produced by MySqlParser#renameTable. + def enterRenameTable(self, ctx:MySqlParser.RenameTableContext): + pass + + # Exit a parse tree produced by MySqlParser#renameTable. + def exitRenameTable(self, ctx:MySqlParser.RenameTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#renameTableClause. + def enterRenameTableClause(self, ctx:MySqlParser.RenameTableClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#renameTableClause. + def exitRenameTableClause(self, ctx:MySqlParser.RenameTableClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#truncateTable. + def enterTruncateTable(self, ctx:MySqlParser.TruncateTableContext): + pass + + # Exit a parse tree produced by MySqlParser#truncateTable. + def exitTruncateTable(self, ctx:MySqlParser.TruncateTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#callStatement. + def enterCallStatement(self, ctx:MySqlParser.CallStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#callStatement. + def exitCallStatement(self, ctx:MySqlParser.CallStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#deleteStatement. + def enterDeleteStatement(self, ctx:MySqlParser.DeleteStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#deleteStatement. + def exitDeleteStatement(self, ctx:MySqlParser.DeleteStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#doStatement. + def enterDoStatement(self, ctx:MySqlParser.DoStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#doStatement. + def exitDoStatement(self, ctx:MySqlParser.DoStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerStatement. + def enterHandlerStatement(self, ctx:MySqlParser.HandlerStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerStatement. + def exitHandlerStatement(self, ctx:MySqlParser.HandlerStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#insertStatement. + def enterInsertStatement(self, ctx:MySqlParser.InsertStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#insertStatement. + def exitInsertStatement(self, ctx:MySqlParser.InsertStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#loadDataStatement. + def enterLoadDataStatement(self, ctx:MySqlParser.LoadDataStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#loadDataStatement. + def exitLoadDataStatement(self, ctx:MySqlParser.LoadDataStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#loadXmlStatement. + def enterLoadXmlStatement(self, ctx:MySqlParser.LoadXmlStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#loadXmlStatement. + def exitLoadXmlStatement(self, ctx:MySqlParser.LoadXmlStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#replaceStatement. + def enterReplaceStatement(self, ctx:MySqlParser.ReplaceStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#replaceStatement. + def exitReplaceStatement(self, ctx:MySqlParser.ReplaceStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleSelect. + def enterSimpleSelect(self, ctx:MySqlParser.SimpleSelectContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleSelect. + def exitSimpleSelect(self, ctx:MySqlParser.SimpleSelectContext): + pass + + + # Enter a parse tree produced by MySqlParser#parenthesisSelect. + def enterParenthesisSelect(self, ctx:MySqlParser.ParenthesisSelectContext): + pass + + # Exit a parse tree produced by MySqlParser#parenthesisSelect. + def exitParenthesisSelect(self, ctx:MySqlParser.ParenthesisSelectContext): + pass + + + # Enter a parse tree produced by MySqlParser#unionSelect. + def enterUnionSelect(self, ctx:MySqlParser.UnionSelectContext): + pass + + # Exit a parse tree produced by MySqlParser#unionSelect. + def exitUnionSelect(self, ctx:MySqlParser.UnionSelectContext): + pass + + + # Enter a parse tree produced by MySqlParser#unionParenthesisSelect. + def enterUnionParenthesisSelect(self, ctx:MySqlParser.UnionParenthesisSelectContext): + pass + + # Exit a parse tree produced by MySqlParser#unionParenthesisSelect. + def exitUnionParenthesisSelect(self, ctx:MySqlParser.UnionParenthesisSelectContext): + pass + + + # Enter a parse tree produced by MySqlParser#withLateralStatement. + def enterWithLateralStatement(self, ctx:MySqlParser.WithLateralStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#withLateralStatement. + def exitWithLateralStatement(self, ctx:MySqlParser.WithLateralStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#updateStatement. + def enterUpdateStatement(self, ctx:MySqlParser.UpdateStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#updateStatement. + def exitUpdateStatement(self, ctx:MySqlParser.UpdateStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#valuesStatement. + def enterValuesStatement(self, ctx:MySqlParser.ValuesStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#valuesStatement. + def exitValuesStatement(self, ctx:MySqlParser.ValuesStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#insertStatementValue. + def enterInsertStatementValue(self, ctx:MySqlParser.InsertStatementValueContext): + pass + + # Exit a parse tree produced by MySqlParser#insertStatementValue. + def exitInsertStatementValue(self, ctx:MySqlParser.InsertStatementValueContext): + pass + + + # Enter a parse tree produced by MySqlParser#updatedElement. + def enterUpdatedElement(self, ctx:MySqlParser.UpdatedElementContext): + pass + + # Exit a parse tree produced by MySqlParser#updatedElement. + def exitUpdatedElement(self, ctx:MySqlParser.UpdatedElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#assignmentField. + def enterAssignmentField(self, ctx:MySqlParser.AssignmentFieldContext): + pass + + # Exit a parse tree produced by MySqlParser#assignmentField. + def exitAssignmentField(self, ctx:MySqlParser.AssignmentFieldContext): + pass + + + # Enter a parse tree produced by MySqlParser#lockClause. + def enterLockClause(self, ctx:MySqlParser.LockClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#lockClause. + def exitLockClause(self, ctx:MySqlParser.LockClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#singleDeleteStatement. + def enterSingleDeleteStatement(self, ctx:MySqlParser.SingleDeleteStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#singleDeleteStatement. + def exitSingleDeleteStatement(self, ctx:MySqlParser.SingleDeleteStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#multipleDeleteStatement. + def enterMultipleDeleteStatement(self, ctx:MySqlParser.MultipleDeleteStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#multipleDeleteStatement. + def exitMultipleDeleteStatement(self, ctx:MySqlParser.MultipleDeleteStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerOpenStatement. + def enterHandlerOpenStatement(self, ctx:MySqlParser.HandlerOpenStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerOpenStatement. + def exitHandlerOpenStatement(self, ctx:MySqlParser.HandlerOpenStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerReadIndexStatement. + def enterHandlerReadIndexStatement(self, ctx:MySqlParser.HandlerReadIndexStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerReadIndexStatement. + def exitHandlerReadIndexStatement(self, ctx:MySqlParser.HandlerReadIndexStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerReadStatement. + def enterHandlerReadStatement(self, ctx:MySqlParser.HandlerReadStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerReadStatement. + def exitHandlerReadStatement(self, ctx:MySqlParser.HandlerReadStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerCloseStatement. + def enterHandlerCloseStatement(self, ctx:MySqlParser.HandlerCloseStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerCloseStatement. + def exitHandlerCloseStatement(self, ctx:MySqlParser.HandlerCloseStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#singleUpdateStatement. + def enterSingleUpdateStatement(self, ctx:MySqlParser.SingleUpdateStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#singleUpdateStatement. + def exitSingleUpdateStatement(self, ctx:MySqlParser.SingleUpdateStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#multipleUpdateStatement. + def enterMultipleUpdateStatement(self, ctx:MySqlParser.MultipleUpdateStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#multipleUpdateStatement. + def exitMultipleUpdateStatement(self, ctx:MySqlParser.MultipleUpdateStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#orderByClause. + def enterOrderByClause(self, ctx:MySqlParser.OrderByClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#orderByClause. + def exitOrderByClause(self, ctx:MySqlParser.OrderByClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#orderByExpression. + def enterOrderByExpression(self, ctx:MySqlParser.OrderByExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#orderByExpression. + def exitOrderByExpression(self, ctx:MySqlParser.OrderByExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableSources. + def enterTableSources(self, ctx:MySqlParser.TableSourcesContext): + pass + + # Exit a parse tree produced by MySqlParser#tableSources. + def exitTableSources(self, ctx:MySqlParser.TableSourcesContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableSourceBase. + def enterTableSourceBase(self, ctx:MySqlParser.TableSourceBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#tableSourceBase. + def exitTableSourceBase(self, ctx:MySqlParser.TableSourceBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableSourceNested. + def enterTableSourceNested(self, ctx:MySqlParser.TableSourceNestedContext): + pass + + # Exit a parse tree produced by MySqlParser#tableSourceNested. + def exitTableSourceNested(self, ctx:MySqlParser.TableSourceNestedContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableJson. + def enterTableJson(self, ctx:MySqlParser.TableJsonContext): + pass + + # Exit a parse tree produced by MySqlParser#tableJson. + def exitTableJson(self, ctx:MySqlParser.TableJsonContext): + pass + + + # Enter a parse tree produced by MySqlParser#atomTableItem. + def enterAtomTableItem(self, ctx:MySqlParser.AtomTableItemContext): + pass + + # Exit a parse tree produced by MySqlParser#atomTableItem. + def exitAtomTableItem(self, ctx:MySqlParser.AtomTableItemContext): + pass + + + # Enter a parse tree produced by MySqlParser#subqueryTableItem. + def enterSubqueryTableItem(self, ctx:MySqlParser.SubqueryTableItemContext): + pass + + # Exit a parse tree produced by MySqlParser#subqueryTableItem. + def exitSubqueryTableItem(self, ctx:MySqlParser.SubqueryTableItemContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableSourcesItem. + def enterTableSourcesItem(self, ctx:MySqlParser.TableSourcesItemContext): + pass + + # Exit a parse tree produced by MySqlParser#tableSourcesItem. + def exitTableSourcesItem(self, ctx:MySqlParser.TableSourcesItemContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexHint. + def enterIndexHint(self, ctx:MySqlParser.IndexHintContext): + pass + + # Exit a parse tree produced by MySqlParser#indexHint. + def exitIndexHint(self, ctx:MySqlParser.IndexHintContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexHintType. + def enterIndexHintType(self, ctx:MySqlParser.IndexHintTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#indexHintType. + def exitIndexHintType(self, ctx:MySqlParser.IndexHintTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#innerJoin. + def enterInnerJoin(self, ctx:MySqlParser.InnerJoinContext): + pass + + # Exit a parse tree produced by MySqlParser#innerJoin. + def exitInnerJoin(self, ctx:MySqlParser.InnerJoinContext): + pass + + + # Enter a parse tree produced by MySqlParser#straightJoin. + def enterStraightJoin(self, ctx:MySqlParser.StraightJoinContext): + pass + + # Exit a parse tree produced by MySqlParser#straightJoin. + def exitStraightJoin(self, ctx:MySqlParser.StraightJoinContext): + pass + + + # Enter a parse tree produced by MySqlParser#outerJoin. + def enterOuterJoin(self, ctx:MySqlParser.OuterJoinContext): + pass + + # Exit a parse tree produced by MySqlParser#outerJoin. + def exitOuterJoin(self, ctx:MySqlParser.OuterJoinContext): + pass + + + # Enter a parse tree produced by MySqlParser#naturalJoin. + def enterNaturalJoin(self, ctx:MySqlParser.NaturalJoinContext): + pass + + # Exit a parse tree produced by MySqlParser#naturalJoin. + def exitNaturalJoin(self, ctx:MySqlParser.NaturalJoinContext): + pass + + + # Enter a parse tree produced by MySqlParser#joinSpec. + def enterJoinSpec(self, ctx:MySqlParser.JoinSpecContext): + pass + + # Exit a parse tree produced by MySqlParser#joinSpec. + def exitJoinSpec(self, ctx:MySqlParser.JoinSpecContext): + pass + + + # Enter a parse tree produced by MySqlParser#queryExpression. + def enterQueryExpression(self, ctx:MySqlParser.QueryExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#queryExpression. + def exitQueryExpression(self, ctx:MySqlParser.QueryExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#queryExpressionNointo. + def enterQueryExpressionNointo(self, ctx:MySqlParser.QueryExpressionNointoContext): + pass + + # Exit a parse tree produced by MySqlParser#queryExpressionNointo. + def exitQueryExpressionNointo(self, ctx:MySqlParser.QueryExpressionNointoContext): + pass + + + # Enter a parse tree produced by MySqlParser#querySpecification. + def enterQuerySpecification(self, ctx:MySqlParser.QuerySpecificationContext): + pass + + # Exit a parse tree produced by MySqlParser#querySpecification. + def exitQuerySpecification(self, ctx:MySqlParser.QuerySpecificationContext): + pass + + + # Enter a parse tree produced by MySqlParser#querySpecificationNointo. + def enterQuerySpecificationNointo(self, ctx:MySqlParser.QuerySpecificationNointoContext): + pass + + # Exit a parse tree produced by MySqlParser#querySpecificationNointo. + def exitQuerySpecificationNointo(self, ctx:MySqlParser.QuerySpecificationNointoContext): + pass + + + # Enter a parse tree produced by MySqlParser#unionParenthesis. + def enterUnionParenthesis(self, ctx:MySqlParser.UnionParenthesisContext): + pass + + # Exit a parse tree produced by MySqlParser#unionParenthesis. + def exitUnionParenthesis(self, ctx:MySqlParser.UnionParenthesisContext): + pass + + + # Enter a parse tree produced by MySqlParser#unionStatement. + def enterUnionStatement(self, ctx:MySqlParser.UnionStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#unionStatement. + def exitUnionStatement(self, ctx:MySqlParser.UnionStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#lateralStatement. + def enterLateralStatement(self, ctx:MySqlParser.LateralStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#lateralStatement. + def exitLateralStatement(self, ctx:MySqlParser.LateralStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonTable. + def enterJsonTable(self, ctx:MySqlParser.JsonTableContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonTable. + def exitJsonTable(self, ctx:MySqlParser.JsonTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonColumnList. + def enterJsonColumnList(self, ctx:MySqlParser.JsonColumnListContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonColumnList. + def exitJsonColumnList(self, ctx:MySqlParser.JsonColumnListContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonColumn. + def enterJsonColumn(self, ctx:MySqlParser.JsonColumnContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonColumn. + def exitJsonColumn(self, ctx:MySqlParser.JsonColumnContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonOnEmpty. + def enterJsonOnEmpty(self, ctx:MySqlParser.JsonOnEmptyContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonOnEmpty. + def exitJsonOnEmpty(self, ctx:MySqlParser.JsonOnEmptyContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonOnError. + def enterJsonOnError(self, ctx:MySqlParser.JsonOnErrorContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonOnError. + def exitJsonOnError(self, ctx:MySqlParser.JsonOnErrorContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectSpec. + def enterSelectSpec(self, ctx:MySqlParser.SelectSpecContext): + pass + + # Exit a parse tree produced by MySqlParser#selectSpec. + def exitSelectSpec(self, ctx:MySqlParser.SelectSpecContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectElements. + def enterSelectElements(self, ctx:MySqlParser.SelectElementsContext): + pass + + # Exit a parse tree produced by MySqlParser#selectElements. + def exitSelectElements(self, ctx:MySqlParser.SelectElementsContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectStarElement. + def enterSelectStarElement(self, ctx:MySqlParser.SelectStarElementContext): + pass + + # Exit a parse tree produced by MySqlParser#selectStarElement. + def exitSelectStarElement(self, ctx:MySqlParser.SelectStarElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectColumnElement. + def enterSelectColumnElement(self, ctx:MySqlParser.SelectColumnElementContext): + pass + + # Exit a parse tree produced by MySqlParser#selectColumnElement. + def exitSelectColumnElement(self, ctx:MySqlParser.SelectColumnElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectFunctionElement. + def enterSelectFunctionElement(self, ctx:MySqlParser.SelectFunctionElementContext): + pass + + # Exit a parse tree produced by MySqlParser#selectFunctionElement. + def exitSelectFunctionElement(self, ctx:MySqlParser.SelectFunctionElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectExpressionElement. + def enterSelectExpressionElement(self, ctx:MySqlParser.SelectExpressionElementContext): + pass + + # Exit a parse tree produced by MySqlParser#selectExpressionElement. + def exitSelectExpressionElement(self, ctx:MySqlParser.SelectExpressionElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectIntoVariables. + def enterSelectIntoVariables(self, ctx:MySqlParser.SelectIntoVariablesContext): + pass + + # Exit a parse tree produced by MySqlParser#selectIntoVariables. + def exitSelectIntoVariables(self, ctx:MySqlParser.SelectIntoVariablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectIntoDumpFile. + def enterSelectIntoDumpFile(self, ctx:MySqlParser.SelectIntoDumpFileContext): + pass + + # Exit a parse tree produced by MySqlParser#selectIntoDumpFile. + def exitSelectIntoDumpFile(self, ctx:MySqlParser.SelectIntoDumpFileContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectIntoTextFile. + def enterSelectIntoTextFile(self, ctx:MySqlParser.SelectIntoTextFileContext): + pass + + # Exit a parse tree produced by MySqlParser#selectIntoTextFile. + def exitSelectIntoTextFile(self, ctx:MySqlParser.SelectIntoTextFileContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectFieldsInto. + def enterSelectFieldsInto(self, ctx:MySqlParser.SelectFieldsIntoContext): + pass + + # Exit a parse tree produced by MySqlParser#selectFieldsInto. + def exitSelectFieldsInto(self, ctx:MySqlParser.SelectFieldsIntoContext): + pass + + + # Enter a parse tree produced by MySqlParser#selectLinesInto. + def enterSelectLinesInto(self, ctx:MySqlParser.SelectLinesIntoContext): + pass + + # Exit a parse tree produced by MySqlParser#selectLinesInto. + def exitSelectLinesInto(self, ctx:MySqlParser.SelectLinesIntoContext): + pass + + + # Enter a parse tree produced by MySqlParser#fromClause. + def enterFromClause(self, ctx:MySqlParser.FromClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#fromClause. + def exitFromClause(self, ctx:MySqlParser.FromClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#groupByClause. + def enterGroupByClause(self, ctx:MySqlParser.GroupByClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#groupByClause. + def exitGroupByClause(self, ctx:MySqlParser.GroupByClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#havingClause. + def enterHavingClause(self, ctx:MySqlParser.HavingClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#havingClause. + def exitHavingClause(self, ctx:MySqlParser.HavingClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#windowClause. + def enterWindowClause(self, ctx:MySqlParser.WindowClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#windowClause. + def exitWindowClause(self, ctx:MySqlParser.WindowClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#groupByItem. + def enterGroupByItem(self, ctx:MySqlParser.GroupByItemContext): + pass + + # Exit a parse tree produced by MySqlParser#groupByItem. + def exitGroupByItem(self, ctx:MySqlParser.GroupByItemContext): + pass + + + # Enter a parse tree produced by MySqlParser#limitClause. + def enterLimitClause(self, ctx:MySqlParser.LimitClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#limitClause. + def exitLimitClause(self, ctx:MySqlParser.LimitClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#limitClauseAtom. + def enterLimitClauseAtom(self, ctx:MySqlParser.LimitClauseAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#limitClauseAtom. + def exitLimitClauseAtom(self, ctx:MySqlParser.LimitClauseAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#startTransaction. + def enterStartTransaction(self, ctx:MySqlParser.StartTransactionContext): + pass + + # Exit a parse tree produced by MySqlParser#startTransaction. + def exitStartTransaction(self, ctx:MySqlParser.StartTransactionContext): + pass + + + # Enter a parse tree produced by MySqlParser#beginWork. + def enterBeginWork(self, ctx:MySqlParser.BeginWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#beginWork. + def exitBeginWork(self, ctx:MySqlParser.BeginWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#commitWork. + def enterCommitWork(self, ctx:MySqlParser.CommitWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#commitWork. + def exitCommitWork(self, ctx:MySqlParser.CommitWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#rollbackWork. + def enterRollbackWork(self, ctx:MySqlParser.RollbackWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#rollbackWork. + def exitRollbackWork(self, ctx:MySqlParser.RollbackWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#savepointStatement. + def enterSavepointStatement(self, ctx:MySqlParser.SavepointStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#savepointStatement. + def exitSavepointStatement(self, ctx:MySqlParser.SavepointStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#rollbackStatement. + def enterRollbackStatement(self, ctx:MySqlParser.RollbackStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#rollbackStatement. + def exitRollbackStatement(self, ctx:MySqlParser.RollbackStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#releaseStatement. + def enterReleaseStatement(self, ctx:MySqlParser.ReleaseStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#releaseStatement. + def exitReleaseStatement(self, ctx:MySqlParser.ReleaseStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#lockTables. + def enterLockTables(self, ctx:MySqlParser.LockTablesContext): + pass + + # Exit a parse tree produced by MySqlParser#lockTables. + def exitLockTables(self, ctx:MySqlParser.LockTablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#unlockTables. + def enterUnlockTables(self, ctx:MySqlParser.UnlockTablesContext): + pass + + # Exit a parse tree produced by MySqlParser#unlockTables. + def exitUnlockTables(self, ctx:MySqlParser.UnlockTablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#setAutocommitStatement. + def enterSetAutocommitStatement(self, ctx:MySqlParser.SetAutocommitStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#setAutocommitStatement. + def exitSetAutocommitStatement(self, ctx:MySqlParser.SetAutocommitStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#setTransactionStatement. + def enterSetTransactionStatement(self, ctx:MySqlParser.SetTransactionStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#setTransactionStatement. + def exitSetTransactionStatement(self, ctx:MySqlParser.SetTransactionStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#transactionMode. + def enterTransactionMode(self, ctx:MySqlParser.TransactionModeContext): + pass + + # Exit a parse tree produced by MySqlParser#transactionMode. + def exitTransactionMode(self, ctx:MySqlParser.TransactionModeContext): + pass + + + # Enter a parse tree produced by MySqlParser#lockTableElement. + def enterLockTableElement(self, ctx:MySqlParser.LockTableElementContext): + pass + + # Exit a parse tree produced by MySqlParser#lockTableElement. + def exitLockTableElement(self, ctx:MySqlParser.LockTableElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#lockAction. + def enterLockAction(self, ctx:MySqlParser.LockActionContext): + pass + + # Exit a parse tree produced by MySqlParser#lockAction. + def exitLockAction(self, ctx:MySqlParser.LockActionContext): + pass + + + # Enter a parse tree produced by MySqlParser#transactionOption. + def enterTransactionOption(self, ctx:MySqlParser.TransactionOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#transactionOption. + def exitTransactionOption(self, ctx:MySqlParser.TransactionOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#transactionLevel. + def enterTransactionLevel(self, ctx:MySqlParser.TransactionLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#transactionLevel. + def exitTransactionLevel(self, ctx:MySqlParser.TransactionLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#changeMaster. + def enterChangeMaster(self, ctx:MySqlParser.ChangeMasterContext): + pass + + # Exit a parse tree produced by MySqlParser#changeMaster. + def exitChangeMaster(self, ctx:MySqlParser.ChangeMasterContext): + pass + + + # Enter a parse tree produced by MySqlParser#changeReplicationFilter. + def enterChangeReplicationFilter(self, ctx:MySqlParser.ChangeReplicationFilterContext): + pass + + # Exit a parse tree produced by MySqlParser#changeReplicationFilter. + def exitChangeReplicationFilter(self, ctx:MySqlParser.ChangeReplicationFilterContext): + pass + + + # Enter a parse tree produced by MySqlParser#purgeBinaryLogs. + def enterPurgeBinaryLogs(self, ctx:MySqlParser.PurgeBinaryLogsContext): + pass + + # Exit a parse tree produced by MySqlParser#purgeBinaryLogs. + def exitPurgeBinaryLogs(self, ctx:MySqlParser.PurgeBinaryLogsContext): + pass + + + # Enter a parse tree produced by MySqlParser#resetMaster. + def enterResetMaster(self, ctx:MySqlParser.ResetMasterContext): + pass + + # Exit a parse tree produced by MySqlParser#resetMaster. + def exitResetMaster(self, ctx:MySqlParser.ResetMasterContext): + pass + + + # Enter a parse tree produced by MySqlParser#resetSlave. + def enterResetSlave(self, ctx:MySqlParser.ResetSlaveContext): + pass + + # Exit a parse tree produced by MySqlParser#resetSlave. + def exitResetSlave(self, ctx:MySqlParser.ResetSlaveContext): + pass + + + # Enter a parse tree produced by MySqlParser#startSlave. + def enterStartSlave(self, ctx:MySqlParser.StartSlaveContext): + pass + + # Exit a parse tree produced by MySqlParser#startSlave. + def exitStartSlave(self, ctx:MySqlParser.StartSlaveContext): + pass + + + # Enter a parse tree produced by MySqlParser#stopSlave. + def enterStopSlave(self, ctx:MySqlParser.StopSlaveContext): + pass + + # Exit a parse tree produced by MySqlParser#stopSlave. + def exitStopSlave(self, ctx:MySqlParser.StopSlaveContext): + pass + + + # Enter a parse tree produced by MySqlParser#startGroupReplication. + def enterStartGroupReplication(self, ctx:MySqlParser.StartGroupReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#startGroupReplication. + def exitStartGroupReplication(self, ctx:MySqlParser.StartGroupReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#stopGroupReplication. + def enterStopGroupReplication(self, ctx:MySqlParser.StopGroupReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#stopGroupReplication. + def exitStopGroupReplication(self, ctx:MySqlParser.StopGroupReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterStringOption. + def enterMasterStringOption(self, ctx:MySqlParser.MasterStringOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterStringOption. + def exitMasterStringOption(self, ctx:MySqlParser.MasterStringOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterDecimalOption. + def enterMasterDecimalOption(self, ctx:MySqlParser.MasterDecimalOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterDecimalOption. + def exitMasterDecimalOption(self, ctx:MySqlParser.MasterDecimalOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterBoolOption. + def enterMasterBoolOption(self, ctx:MySqlParser.MasterBoolOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterBoolOption. + def exitMasterBoolOption(self, ctx:MySqlParser.MasterBoolOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterRealOption. + def enterMasterRealOption(self, ctx:MySqlParser.MasterRealOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterRealOption. + def exitMasterRealOption(self, ctx:MySqlParser.MasterRealOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterUidListOption. + def enterMasterUidListOption(self, ctx:MySqlParser.MasterUidListOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterUidListOption. + def exitMasterUidListOption(self, ctx:MySqlParser.MasterUidListOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#stringMasterOption. + def enterStringMasterOption(self, ctx:MySqlParser.StringMasterOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#stringMasterOption. + def exitStringMasterOption(self, ctx:MySqlParser.StringMasterOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#decimalMasterOption. + def enterDecimalMasterOption(self, ctx:MySqlParser.DecimalMasterOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#decimalMasterOption. + def exitDecimalMasterOption(self, ctx:MySqlParser.DecimalMasterOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#boolMasterOption. + def enterBoolMasterOption(self, ctx:MySqlParser.BoolMasterOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#boolMasterOption. + def exitBoolMasterOption(self, ctx:MySqlParser.BoolMasterOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#channelOption. + def enterChannelOption(self, ctx:MySqlParser.ChannelOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#channelOption. + def exitChannelOption(self, ctx:MySqlParser.ChannelOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#doDbReplication. + def enterDoDbReplication(self, ctx:MySqlParser.DoDbReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#doDbReplication. + def exitDoDbReplication(self, ctx:MySqlParser.DoDbReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#ignoreDbReplication. + def enterIgnoreDbReplication(self, ctx:MySqlParser.IgnoreDbReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#ignoreDbReplication. + def exitIgnoreDbReplication(self, ctx:MySqlParser.IgnoreDbReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#doTableReplication. + def enterDoTableReplication(self, ctx:MySqlParser.DoTableReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#doTableReplication. + def exitDoTableReplication(self, ctx:MySqlParser.DoTableReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#ignoreTableReplication. + def enterIgnoreTableReplication(self, ctx:MySqlParser.IgnoreTableReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#ignoreTableReplication. + def exitIgnoreTableReplication(self, ctx:MySqlParser.IgnoreTableReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#wildDoTableReplication. + def enterWildDoTableReplication(self, ctx:MySqlParser.WildDoTableReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#wildDoTableReplication. + def exitWildDoTableReplication(self, ctx:MySqlParser.WildDoTableReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#wildIgnoreTableReplication. + def enterWildIgnoreTableReplication(self, ctx:MySqlParser.WildIgnoreTableReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#wildIgnoreTableReplication. + def exitWildIgnoreTableReplication(self, ctx:MySqlParser.WildIgnoreTableReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#rewriteDbReplication. + def enterRewriteDbReplication(self, ctx:MySqlParser.RewriteDbReplicationContext): + pass + + # Exit a parse tree produced by MySqlParser#rewriteDbReplication. + def exitRewriteDbReplication(self, ctx:MySqlParser.RewriteDbReplicationContext): + pass + + + # Enter a parse tree produced by MySqlParser#tablePair. + def enterTablePair(self, ctx:MySqlParser.TablePairContext): + pass + + # Exit a parse tree produced by MySqlParser#tablePair. + def exitTablePair(self, ctx:MySqlParser.TablePairContext): + pass + + + # Enter a parse tree produced by MySqlParser#threadType. + def enterThreadType(self, ctx:MySqlParser.ThreadTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#threadType. + def exitThreadType(self, ctx:MySqlParser.ThreadTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#gtidsUntilOption. + def enterGtidsUntilOption(self, ctx:MySqlParser.GtidsUntilOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#gtidsUntilOption. + def exitGtidsUntilOption(self, ctx:MySqlParser.GtidsUntilOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#masterLogUntilOption. + def enterMasterLogUntilOption(self, ctx:MySqlParser.MasterLogUntilOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#masterLogUntilOption. + def exitMasterLogUntilOption(self, ctx:MySqlParser.MasterLogUntilOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#relayLogUntilOption. + def enterRelayLogUntilOption(self, ctx:MySqlParser.RelayLogUntilOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#relayLogUntilOption. + def exitRelayLogUntilOption(self, ctx:MySqlParser.RelayLogUntilOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#sqlGapsUntilOption. + def enterSqlGapsUntilOption(self, ctx:MySqlParser.SqlGapsUntilOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#sqlGapsUntilOption. + def exitSqlGapsUntilOption(self, ctx:MySqlParser.SqlGapsUntilOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#userConnectionOption. + def enterUserConnectionOption(self, ctx:MySqlParser.UserConnectionOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#userConnectionOption. + def exitUserConnectionOption(self, ctx:MySqlParser.UserConnectionOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#passwordConnectionOption. + def enterPasswordConnectionOption(self, ctx:MySqlParser.PasswordConnectionOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#passwordConnectionOption. + def exitPasswordConnectionOption(self, ctx:MySqlParser.PasswordConnectionOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#defaultAuthConnectionOption. + def enterDefaultAuthConnectionOption(self, ctx:MySqlParser.DefaultAuthConnectionOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#defaultAuthConnectionOption. + def exitDefaultAuthConnectionOption(self, ctx:MySqlParser.DefaultAuthConnectionOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#pluginDirConnectionOption. + def enterPluginDirConnectionOption(self, ctx:MySqlParser.PluginDirConnectionOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#pluginDirConnectionOption. + def exitPluginDirConnectionOption(self, ctx:MySqlParser.PluginDirConnectionOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#gtuidSet. + def enterGtuidSet(self, ctx:MySqlParser.GtuidSetContext): + pass + + # Exit a parse tree produced by MySqlParser#gtuidSet. + def exitGtuidSet(self, ctx:MySqlParser.GtuidSetContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaStartTransaction. + def enterXaStartTransaction(self, ctx:MySqlParser.XaStartTransactionContext): + pass + + # Exit a parse tree produced by MySqlParser#xaStartTransaction. + def exitXaStartTransaction(self, ctx:MySqlParser.XaStartTransactionContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaEndTransaction. + def enterXaEndTransaction(self, ctx:MySqlParser.XaEndTransactionContext): + pass + + # Exit a parse tree produced by MySqlParser#xaEndTransaction. + def exitXaEndTransaction(self, ctx:MySqlParser.XaEndTransactionContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaPrepareStatement. + def enterXaPrepareStatement(self, ctx:MySqlParser.XaPrepareStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#xaPrepareStatement. + def exitXaPrepareStatement(self, ctx:MySqlParser.XaPrepareStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaCommitWork. + def enterXaCommitWork(self, ctx:MySqlParser.XaCommitWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#xaCommitWork. + def exitXaCommitWork(self, ctx:MySqlParser.XaCommitWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaRollbackWork. + def enterXaRollbackWork(self, ctx:MySqlParser.XaRollbackWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#xaRollbackWork. + def exitXaRollbackWork(self, ctx:MySqlParser.XaRollbackWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#xaRecoverWork. + def enterXaRecoverWork(self, ctx:MySqlParser.XaRecoverWorkContext): + pass + + # Exit a parse tree produced by MySqlParser#xaRecoverWork. + def exitXaRecoverWork(self, ctx:MySqlParser.XaRecoverWorkContext): + pass + + + # Enter a parse tree produced by MySqlParser#prepareStatement. + def enterPrepareStatement(self, ctx:MySqlParser.PrepareStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#prepareStatement. + def exitPrepareStatement(self, ctx:MySqlParser.PrepareStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#executeStatement. + def enterExecuteStatement(self, ctx:MySqlParser.ExecuteStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#executeStatement. + def exitExecuteStatement(self, ctx:MySqlParser.ExecuteStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#deallocatePrepare. + def enterDeallocatePrepare(self, ctx:MySqlParser.DeallocatePrepareContext): + pass + + # Exit a parse tree produced by MySqlParser#deallocatePrepare. + def exitDeallocatePrepare(self, ctx:MySqlParser.DeallocatePrepareContext): + pass + + + # Enter a parse tree produced by MySqlParser#routineBody. + def enterRoutineBody(self, ctx:MySqlParser.RoutineBodyContext): + pass + + # Exit a parse tree produced by MySqlParser#routineBody. + def exitRoutineBody(self, ctx:MySqlParser.RoutineBodyContext): + pass + + + # Enter a parse tree produced by MySqlParser#blockStatement. + def enterBlockStatement(self, ctx:MySqlParser.BlockStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#blockStatement. + def exitBlockStatement(self, ctx:MySqlParser.BlockStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#caseStatement. + def enterCaseStatement(self, ctx:MySqlParser.CaseStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#caseStatement. + def exitCaseStatement(self, ctx:MySqlParser.CaseStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#ifStatement. + def enterIfStatement(self, ctx:MySqlParser.IfStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#ifStatement. + def exitIfStatement(self, ctx:MySqlParser.IfStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#iterateStatement. + def enterIterateStatement(self, ctx:MySqlParser.IterateStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#iterateStatement. + def exitIterateStatement(self, ctx:MySqlParser.IterateStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#leaveStatement. + def enterLeaveStatement(self, ctx:MySqlParser.LeaveStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#leaveStatement. + def exitLeaveStatement(self, ctx:MySqlParser.LeaveStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#loopStatement. + def enterLoopStatement(self, ctx:MySqlParser.LoopStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#loopStatement. + def exitLoopStatement(self, ctx:MySqlParser.LoopStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#repeatStatement. + def enterRepeatStatement(self, ctx:MySqlParser.RepeatStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#repeatStatement. + def exitRepeatStatement(self, ctx:MySqlParser.RepeatStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#returnStatement. + def enterReturnStatement(self, ctx:MySqlParser.ReturnStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#returnStatement. + def exitReturnStatement(self, ctx:MySqlParser.ReturnStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#whileStatement. + def enterWhileStatement(self, ctx:MySqlParser.WhileStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#whileStatement. + def exitWhileStatement(self, ctx:MySqlParser.WhileStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#CloseCursor. + def enterCloseCursor(self, ctx:MySqlParser.CloseCursorContext): + pass + + # Exit a parse tree produced by MySqlParser#CloseCursor. + def exitCloseCursor(self, ctx:MySqlParser.CloseCursorContext): + pass + + + # Enter a parse tree produced by MySqlParser#FetchCursor. + def enterFetchCursor(self, ctx:MySqlParser.FetchCursorContext): + pass + + # Exit a parse tree produced by MySqlParser#FetchCursor. + def exitFetchCursor(self, ctx:MySqlParser.FetchCursorContext): + pass + + + # Enter a parse tree produced by MySqlParser#OpenCursor. + def enterOpenCursor(self, ctx:MySqlParser.OpenCursorContext): + pass + + # Exit a parse tree produced by MySqlParser#OpenCursor. + def exitOpenCursor(self, ctx:MySqlParser.OpenCursorContext): + pass + + + # Enter a parse tree produced by MySqlParser#declareVariable. + def enterDeclareVariable(self, ctx:MySqlParser.DeclareVariableContext): + pass + + # Exit a parse tree produced by MySqlParser#declareVariable. + def exitDeclareVariable(self, ctx:MySqlParser.DeclareVariableContext): + pass + + + # Enter a parse tree produced by MySqlParser#declareCondition. + def enterDeclareCondition(self, ctx:MySqlParser.DeclareConditionContext): + pass + + # Exit a parse tree produced by MySqlParser#declareCondition. + def exitDeclareCondition(self, ctx:MySqlParser.DeclareConditionContext): + pass + + + # Enter a parse tree produced by MySqlParser#declareCursor. + def enterDeclareCursor(self, ctx:MySqlParser.DeclareCursorContext): + pass + + # Exit a parse tree produced by MySqlParser#declareCursor. + def exitDeclareCursor(self, ctx:MySqlParser.DeclareCursorContext): + pass + + + # Enter a parse tree produced by MySqlParser#declareHandler. + def enterDeclareHandler(self, ctx:MySqlParser.DeclareHandlerContext): + pass + + # Exit a parse tree produced by MySqlParser#declareHandler. + def exitDeclareHandler(self, ctx:MySqlParser.DeclareHandlerContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionCode. + def enterHandlerConditionCode(self, ctx:MySqlParser.HandlerConditionCodeContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionCode. + def exitHandlerConditionCode(self, ctx:MySqlParser.HandlerConditionCodeContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionState. + def enterHandlerConditionState(self, ctx:MySqlParser.HandlerConditionStateContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionState. + def exitHandlerConditionState(self, ctx:MySqlParser.HandlerConditionStateContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionName. + def enterHandlerConditionName(self, ctx:MySqlParser.HandlerConditionNameContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionName. + def exitHandlerConditionName(self, ctx:MySqlParser.HandlerConditionNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionWarning. + def enterHandlerConditionWarning(self, ctx:MySqlParser.HandlerConditionWarningContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionWarning. + def exitHandlerConditionWarning(self, ctx:MySqlParser.HandlerConditionWarningContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionNotfound. + def enterHandlerConditionNotfound(self, ctx:MySqlParser.HandlerConditionNotfoundContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionNotfound. + def exitHandlerConditionNotfound(self, ctx:MySqlParser.HandlerConditionNotfoundContext): + pass + + + # Enter a parse tree produced by MySqlParser#handlerConditionException. + def enterHandlerConditionException(self, ctx:MySqlParser.HandlerConditionExceptionContext): + pass + + # Exit a parse tree produced by MySqlParser#handlerConditionException. + def exitHandlerConditionException(self, ctx:MySqlParser.HandlerConditionExceptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#procedureSqlStatement. + def enterProcedureSqlStatement(self, ctx:MySqlParser.ProcedureSqlStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#procedureSqlStatement. + def exitProcedureSqlStatement(self, ctx:MySqlParser.ProcedureSqlStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#caseAlternative. + def enterCaseAlternative(self, ctx:MySqlParser.CaseAlternativeContext): + pass + + # Exit a parse tree produced by MySqlParser#caseAlternative. + def exitCaseAlternative(self, ctx:MySqlParser.CaseAlternativeContext): + pass + + + # Enter a parse tree produced by MySqlParser#elifAlternative. + def enterElifAlternative(self, ctx:MySqlParser.ElifAlternativeContext): + pass + + # Exit a parse tree produced by MySqlParser#elifAlternative. + def exitElifAlternative(self, ctx:MySqlParser.ElifAlternativeContext): + pass + + + # Enter a parse tree produced by MySqlParser#alterUserMysqlV56. + def enterAlterUserMysqlV56(self, ctx:MySqlParser.AlterUserMysqlV56Context): + pass + + # Exit a parse tree produced by MySqlParser#alterUserMysqlV56. + def exitAlterUserMysqlV56(self, ctx:MySqlParser.AlterUserMysqlV56Context): + pass + + + # Enter a parse tree produced by MySqlParser#alterUserMysqlV80. + def enterAlterUserMysqlV80(self, ctx:MySqlParser.AlterUserMysqlV80Context): + pass + + # Exit a parse tree produced by MySqlParser#alterUserMysqlV80. + def exitAlterUserMysqlV80(self, ctx:MySqlParser.AlterUserMysqlV80Context): + pass + + + # Enter a parse tree produced by MySqlParser#createUserMysqlV56. + def enterCreateUserMysqlV56(self, ctx:MySqlParser.CreateUserMysqlV56Context): + pass + + # Exit a parse tree produced by MySqlParser#createUserMysqlV56. + def exitCreateUserMysqlV56(self, ctx:MySqlParser.CreateUserMysqlV56Context): + pass + + + # Enter a parse tree produced by MySqlParser#createUserMysqlV80. + def enterCreateUserMysqlV80(self, ctx:MySqlParser.CreateUserMysqlV80Context): + pass + + # Exit a parse tree produced by MySqlParser#createUserMysqlV80. + def exitCreateUserMysqlV80(self, ctx:MySqlParser.CreateUserMysqlV80Context): + pass + + + # Enter a parse tree produced by MySqlParser#dropUser. + def enterDropUser(self, ctx:MySqlParser.DropUserContext): + pass + + # Exit a parse tree produced by MySqlParser#dropUser. + def exitDropUser(self, ctx:MySqlParser.DropUserContext): + pass + + + # Enter a parse tree produced by MySqlParser#grantStatement. + def enterGrantStatement(self, ctx:MySqlParser.GrantStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#grantStatement. + def exitGrantStatement(self, ctx:MySqlParser.GrantStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#roleOption. + def enterRoleOption(self, ctx:MySqlParser.RoleOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#roleOption. + def exitRoleOption(self, ctx:MySqlParser.RoleOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#grantProxy. + def enterGrantProxy(self, ctx:MySqlParser.GrantProxyContext): + pass + + # Exit a parse tree produced by MySqlParser#grantProxy. + def exitGrantProxy(self, ctx:MySqlParser.GrantProxyContext): + pass + + + # Enter a parse tree produced by MySqlParser#renameUser. + def enterRenameUser(self, ctx:MySqlParser.RenameUserContext): + pass + + # Exit a parse tree produced by MySqlParser#renameUser. + def exitRenameUser(self, ctx:MySqlParser.RenameUserContext): + pass + + + # Enter a parse tree produced by MySqlParser#detailRevoke. + def enterDetailRevoke(self, ctx:MySqlParser.DetailRevokeContext): + pass + + # Exit a parse tree produced by MySqlParser#detailRevoke. + def exitDetailRevoke(self, ctx:MySqlParser.DetailRevokeContext): + pass + + + # Enter a parse tree produced by MySqlParser#shortRevoke. + def enterShortRevoke(self, ctx:MySqlParser.ShortRevokeContext): + pass + + # Exit a parse tree produced by MySqlParser#shortRevoke. + def exitShortRevoke(self, ctx:MySqlParser.ShortRevokeContext): + pass + + + # Enter a parse tree produced by MySqlParser#roleRevoke. + def enterRoleRevoke(self, ctx:MySqlParser.RoleRevokeContext): + pass + + # Exit a parse tree produced by MySqlParser#roleRevoke. + def exitRoleRevoke(self, ctx:MySqlParser.RoleRevokeContext): + pass + + + # Enter a parse tree produced by MySqlParser#revokeProxy. + def enterRevokeProxy(self, ctx:MySqlParser.RevokeProxyContext): + pass + + # Exit a parse tree produced by MySqlParser#revokeProxy. + def exitRevokeProxy(self, ctx:MySqlParser.RevokeProxyContext): + pass + + + # Enter a parse tree produced by MySqlParser#setPasswordStatement. + def enterSetPasswordStatement(self, ctx:MySqlParser.SetPasswordStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#setPasswordStatement. + def exitSetPasswordStatement(self, ctx:MySqlParser.SetPasswordStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#userSpecification. + def enterUserSpecification(self, ctx:MySqlParser.UserSpecificationContext): + pass + + # Exit a parse tree produced by MySqlParser#userSpecification. + def exitUserSpecification(self, ctx:MySqlParser.UserSpecificationContext): + pass + + + # Enter a parse tree produced by MySqlParser#hashAuthOption. + def enterHashAuthOption(self, ctx:MySqlParser.HashAuthOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#hashAuthOption. + def exitHashAuthOption(self, ctx:MySqlParser.HashAuthOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#randomAuthOption. + def enterRandomAuthOption(self, ctx:MySqlParser.RandomAuthOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#randomAuthOption. + def exitRandomAuthOption(self, ctx:MySqlParser.RandomAuthOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#stringAuthOption. + def enterStringAuthOption(self, ctx:MySqlParser.StringAuthOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#stringAuthOption. + def exitStringAuthOption(self, ctx:MySqlParser.StringAuthOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#moduleAuthOption. + def enterModuleAuthOption(self, ctx:MySqlParser.ModuleAuthOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#moduleAuthOption. + def exitModuleAuthOption(self, ctx:MySqlParser.ModuleAuthOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleAuthOption. + def enterSimpleAuthOption(self, ctx:MySqlParser.SimpleAuthOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleAuthOption. + def exitSimpleAuthOption(self, ctx:MySqlParser.SimpleAuthOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#authOptionClause. + def enterAuthOptionClause(self, ctx:MySqlParser.AuthOptionClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#authOptionClause. + def exitAuthOptionClause(self, ctx:MySqlParser.AuthOptionClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#module. + def enterModule(self, ctx:MySqlParser.ModuleContext): + pass + + # Exit a parse tree produced by MySqlParser#module. + def exitModule(self, ctx:MySqlParser.ModuleContext): + pass + + + # Enter a parse tree produced by MySqlParser#passwordModuleOption. + def enterPasswordModuleOption(self, ctx:MySqlParser.PasswordModuleOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#passwordModuleOption. + def exitPasswordModuleOption(self, ctx:MySqlParser.PasswordModuleOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tlsOption. + def enterTlsOption(self, ctx:MySqlParser.TlsOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#tlsOption. + def exitTlsOption(self, ctx:MySqlParser.TlsOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#userResourceOption. + def enterUserResourceOption(self, ctx:MySqlParser.UserResourceOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#userResourceOption. + def exitUserResourceOption(self, ctx:MySqlParser.UserResourceOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#userPasswordOption. + def enterUserPasswordOption(self, ctx:MySqlParser.UserPasswordOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#userPasswordOption. + def exitUserPasswordOption(self, ctx:MySqlParser.UserPasswordOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#userLockOption. + def enterUserLockOption(self, ctx:MySqlParser.UserLockOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#userLockOption. + def exitUserLockOption(self, ctx:MySqlParser.UserLockOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#privelegeClause. + def enterPrivelegeClause(self, ctx:MySqlParser.PrivelegeClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#privelegeClause. + def exitPrivelegeClause(self, ctx:MySqlParser.PrivelegeClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#privilege. + def enterPrivilege(self, ctx:MySqlParser.PrivilegeContext): + pass + + # Exit a parse tree produced by MySqlParser#privilege. + def exitPrivilege(self, ctx:MySqlParser.PrivilegeContext): + pass + + + # Enter a parse tree produced by MySqlParser#currentSchemaPriviLevel. + def enterCurrentSchemaPriviLevel(self, ctx:MySqlParser.CurrentSchemaPriviLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#currentSchemaPriviLevel. + def exitCurrentSchemaPriviLevel(self, ctx:MySqlParser.CurrentSchemaPriviLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#globalPrivLevel. + def enterGlobalPrivLevel(self, ctx:MySqlParser.GlobalPrivLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#globalPrivLevel. + def exitGlobalPrivLevel(self, ctx:MySqlParser.GlobalPrivLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#definiteSchemaPrivLevel. + def enterDefiniteSchemaPrivLevel(self, ctx:MySqlParser.DefiniteSchemaPrivLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#definiteSchemaPrivLevel. + def exitDefiniteSchemaPrivLevel(self, ctx:MySqlParser.DefiniteSchemaPrivLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#definiteFullTablePrivLevel. + def enterDefiniteFullTablePrivLevel(self, ctx:MySqlParser.DefiniteFullTablePrivLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#definiteFullTablePrivLevel. + def exitDefiniteFullTablePrivLevel(self, ctx:MySqlParser.DefiniteFullTablePrivLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#definiteFullTablePrivLevel2. + def enterDefiniteFullTablePrivLevel2(self, ctx:MySqlParser.DefiniteFullTablePrivLevel2Context): + pass + + # Exit a parse tree produced by MySqlParser#definiteFullTablePrivLevel2. + def exitDefiniteFullTablePrivLevel2(self, ctx:MySqlParser.DefiniteFullTablePrivLevel2Context): + pass + + + # Enter a parse tree produced by MySqlParser#definiteTablePrivLevel. + def enterDefiniteTablePrivLevel(self, ctx:MySqlParser.DefiniteTablePrivLevelContext): + pass + + # Exit a parse tree produced by MySqlParser#definiteTablePrivLevel. + def exitDefiniteTablePrivLevel(self, ctx:MySqlParser.DefiniteTablePrivLevelContext): + pass + + + # Enter a parse tree produced by MySqlParser#renameUserClause. + def enterRenameUserClause(self, ctx:MySqlParser.RenameUserClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#renameUserClause. + def exitRenameUserClause(self, ctx:MySqlParser.RenameUserClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#analyzeTable. + def enterAnalyzeTable(self, ctx:MySqlParser.AnalyzeTableContext): + pass + + # Exit a parse tree produced by MySqlParser#analyzeTable. + def exitAnalyzeTable(self, ctx:MySqlParser.AnalyzeTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#checkTable. + def enterCheckTable(self, ctx:MySqlParser.CheckTableContext): + pass + + # Exit a parse tree produced by MySqlParser#checkTable. + def exitCheckTable(self, ctx:MySqlParser.CheckTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#checksumTable. + def enterChecksumTable(self, ctx:MySqlParser.ChecksumTableContext): + pass + + # Exit a parse tree produced by MySqlParser#checksumTable. + def exitChecksumTable(self, ctx:MySqlParser.ChecksumTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#optimizeTable. + def enterOptimizeTable(self, ctx:MySqlParser.OptimizeTableContext): + pass + + # Exit a parse tree produced by MySqlParser#optimizeTable. + def exitOptimizeTable(self, ctx:MySqlParser.OptimizeTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#repairTable. + def enterRepairTable(self, ctx:MySqlParser.RepairTableContext): + pass + + # Exit a parse tree produced by MySqlParser#repairTable. + def exitRepairTable(self, ctx:MySqlParser.RepairTableContext): + pass + + + # Enter a parse tree produced by MySqlParser#checkTableOption. + def enterCheckTableOption(self, ctx:MySqlParser.CheckTableOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#checkTableOption. + def exitCheckTableOption(self, ctx:MySqlParser.CheckTableOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#createUdfunction. + def enterCreateUdfunction(self, ctx:MySqlParser.CreateUdfunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#createUdfunction. + def exitCreateUdfunction(self, ctx:MySqlParser.CreateUdfunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#installPlugin. + def enterInstallPlugin(self, ctx:MySqlParser.InstallPluginContext): + pass + + # Exit a parse tree produced by MySqlParser#installPlugin. + def exitInstallPlugin(self, ctx:MySqlParser.InstallPluginContext): + pass + + + # Enter a parse tree produced by MySqlParser#uninstallPlugin. + def enterUninstallPlugin(self, ctx:MySqlParser.UninstallPluginContext): + pass + + # Exit a parse tree produced by MySqlParser#uninstallPlugin. + def exitUninstallPlugin(self, ctx:MySqlParser.UninstallPluginContext): + pass + + + # Enter a parse tree produced by MySqlParser#setVariable. + def enterSetVariable(self, ctx:MySqlParser.SetVariableContext): + pass + + # Exit a parse tree produced by MySqlParser#setVariable. + def exitSetVariable(self, ctx:MySqlParser.SetVariableContext): + pass + + + # Enter a parse tree produced by MySqlParser#setCharset. + def enterSetCharset(self, ctx:MySqlParser.SetCharsetContext): + pass + + # Exit a parse tree produced by MySqlParser#setCharset. + def exitSetCharset(self, ctx:MySqlParser.SetCharsetContext): + pass + + + # Enter a parse tree produced by MySqlParser#setNames. + def enterSetNames(self, ctx:MySqlParser.SetNamesContext): + pass + + # Exit a parse tree produced by MySqlParser#setNames. + def exitSetNames(self, ctx:MySqlParser.SetNamesContext): + pass + + + # Enter a parse tree produced by MySqlParser#setPassword. + def enterSetPassword(self, ctx:MySqlParser.SetPasswordContext): + pass + + # Exit a parse tree produced by MySqlParser#setPassword. + def exitSetPassword(self, ctx:MySqlParser.SetPasswordContext): + pass + + + # Enter a parse tree produced by MySqlParser#setTransaction. + def enterSetTransaction(self, ctx:MySqlParser.SetTransactionContext): + pass + + # Exit a parse tree produced by MySqlParser#setTransaction. + def exitSetTransaction(self, ctx:MySqlParser.SetTransactionContext): + pass + + + # Enter a parse tree produced by MySqlParser#setAutocommit. + def enterSetAutocommit(self, ctx:MySqlParser.SetAutocommitContext): + pass + + # Exit a parse tree produced by MySqlParser#setAutocommit. + def exitSetAutocommit(self, ctx:MySqlParser.SetAutocommitContext): + pass + + + # Enter a parse tree produced by MySqlParser#setNewValueInsideTrigger. + def enterSetNewValueInsideTrigger(self, ctx:MySqlParser.SetNewValueInsideTriggerContext): + pass + + # Exit a parse tree produced by MySqlParser#setNewValueInsideTrigger. + def exitSetNewValueInsideTrigger(self, ctx:MySqlParser.SetNewValueInsideTriggerContext): + pass + + + # Enter a parse tree produced by MySqlParser#showMasterLogs. + def enterShowMasterLogs(self, ctx:MySqlParser.ShowMasterLogsContext): + pass + + # Exit a parse tree produced by MySqlParser#showMasterLogs. + def exitShowMasterLogs(self, ctx:MySqlParser.ShowMasterLogsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showLogEvents. + def enterShowLogEvents(self, ctx:MySqlParser.ShowLogEventsContext): + pass + + # Exit a parse tree produced by MySqlParser#showLogEvents. + def exitShowLogEvents(self, ctx:MySqlParser.ShowLogEventsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showObjectFilter. + def enterShowObjectFilter(self, ctx:MySqlParser.ShowObjectFilterContext): + pass + + # Exit a parse tree produced by MySqlParser#showObjectFilter. + def exitShowObjectFilter(self, ctx:MySqlParser.ShowObjectFilterContext): + pass + + + # Enter a parse tree produced by MySqlParser#showColumns. + def enterShowColumns(self, ctx:MySqlParser.ShowColumnsContext): + pass + + # Exit a parse tree produced by MySqlParser#showColumns. + def exitShowColumns(self, ctx:MySqlParser.ShowColumnsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showCreateDb. + def enterShowCreateDb(self, ctx:MySqlParser.ShowCreateDbContext): + pass + + # Exit a parse tree produced by MySqlParser#showCreateDb. + def exitShowCreateDb(self, ctx:MySqlParser.ShowCreateDbContext): + pass + + + # Enter a parse tree produced by MySqlParser#showCreateFullIdObject. + def enterShowCreateFullIdObject(self, ctx:MySqlParser.ShowCreateFullIdObjectContext): + pass + + # Exit a parse tree produced by MySqlParser#showCreateFullIdObject. + def exitShowCreateFullIdObject(self, ctx:MySqlParser.ShowCreateFullIdObjectContext): + pass + + + # Enter a parse tree produced by MySqlParser#showCreateUser. + def enterShowCreateUser(self, ctx:MySqlParser.ShowCreateUserContext): + pass + + # Exit a parse tree produced by MySqlParser#showCreateUser. + def exitShowCreateUser(self, ctx:MySqlParser.ShowCreateUserContext): + pass + + + # Enter a parse tree produced by MySqlParser#showEngine. + def enterShowEngine(self, ctx:MySqlParser.ShowEngineContext): + pass + + # Exit a parse tree produced by MySqlParser#showEngine. + def exitShowEngine(self, ctx:MySqlParser.ShowEngineContext): + pass + + + # Enter a parse tree produced by MySqlParser#showGlobalInfo. + def enterShowGlobalInfo(self, ctx:MySqlParser.ShowGlobalInfoContext): + pass + + # Exit a parse tree produced by MySqlParser#showGlobalInfo. + def exitShowGlobalInfo(self, ctx:MySqlParser.ShowGlobalInfoContext): + pass + + + # Enter a parse tree produced by MySqlParser#showErrors. + def enterShowErrors(self, ctx:MySqlParser.ShowErrorsContext): + pass + + # Exit a parse tree produced by MySqlParser#showErrors. + def exitShowErrors(self, ctx:MySqlParser.ShowErrorsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showCountErrors. + def enterShowCountErrors(self, ctx:MySqlParser.ShowCountErrorsContext): + pass + + # Exit a parse tree produced by MySqlParser#showCountErrors. + def exitShowCountErrors(self, ctx:MySqlParser.ShowCountErrorsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showSchemaFilter. + def enterShowSchemaFilter(self, ctx:MySqlParser.ShowSchemaFilterContext): + pass + + # Exit a parse tree produced by MySqlParser#showSchemaFilter. + def exitShowSchemaFilter(self, ctx:MySqlParser.ShowSchemaFilterContext): + pass + + + # Enter a parse tree produced by MySqlParser#showRoutine. + def enterShowRoutine(self, ctx:MySqlParser.ShowRoutineContext): + pass + + # Exit a parse tree produced by MySqlParser#showRoutine. + def exitShowRoutine(self, ctx:MySqlParser.ShowRoutineContext): + pass + + + # Enter a parse tree produced by MySqlParser#showGrants. + def enterShowGrants(self, ctx:MySqlParser.ShowGrantsContext): + pass + + # Exit a parse tree produced by MySqlParser#showGrants. + def exitShowGrants(self, ctx:MySqlParser.ShowGrantsContext): + pass + + + # Enter a parse tree produced by MySqlParser#showIndexes. + def enterShowIndexes(self, ctx:MySqlParser.ShowIndexesContext): + pass + + # Exit a parse tree produced by MySqlParser#showIndexes. + def exitShowIndexes(self, ctx:MySqlParser.ShowIndexesContext): + pass + + + # Enter a parse tree produced by MySqlParser#showOpenTables. + def enterShowOpenTables(self, ctx:MySqlParser.ShowOpenTablesContext): + pass + + # Exit a parse tree produced by MySqlParser#showOpenTables. + def exitShowOpenTables(self, ctx:MySqlParser.ShowOpenTablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#showProfile. + def enterShowProfile(self, ctx:MySqlParser.ShowProfileContext): + pass + + # Exit a parse tree produced by MySqlParser#showProfile. + def exitShowProfile(self, ctx:MySqlParser.ShowProfileContext): + pass + + + # Enter a parse tree produced by MySqlParser#showSlaveStatus. + def enterShowSlaveStatus(self, ctx:MySqlParser.ShowSlaveStatusContext): + pass + + # Exit a parse tree produced by MySqlParser#showSlaveStatus. + def exitShowSlaveStatus(self, ctx:MySqlParser.ShowSlaveStatusContext): + pass + + + # Enter a parse tree produced by MySqlParser#variableClause. + def enterVariableClause(self, ctx:MySqlParser.VariableClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#variableClause. + def exitVariableClause(self, ctx:MySqlParser.VariableClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#showCommonEntity. + def enterShowCommonEntity(self, ctx:MySqlParser.ShowCommonEntityContext): + pass + + # Exit a parse tree produced by MySqlParser#showCommonEntity. + def exitShowCommonEntity(self, ctx:MySqlParser.ShowCommonEntityContext): + pass + + + # Enter a parse tree produced by MySqlParser#showFilter. + def enterShowFilter(self, ctx:MySqlParser.ShowFilterContext): + pass + + # Exit a parse tree produced by MySqlParser#showFilter. + def exitShowFilter(self, ctx:MySqlParser.ShowFilterContext): + pass + + + # Enter a parse tree produced by MySqlParser#showGlobalInfoClause. + def enterShowGlobalInfoClause(self, ctx:MySqlParser.ShowGlobalInfoClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#showGlobalInfoClause. + def exitShowGlobalInfoClause(self, ctx:MySqlParser.ShowGlobalInfoClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#showSchemaEntity. + def enterShowSchemaEntity(self, ctx:MySqlParser.ShowSchemaEntityContext): + pass + + # Exit a parse tree produced by MySqlParser#showSchemaEntity. + def exitShowSchemaEntity(self, ctx:MySqlParser.ShowSchemaEntityContext): + pass + + + # Enter a parse tree produced by MySqlParser#showProfileType. + def enterShowProfileType(self, ctx:MySqlParser.ShowProfileTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#showProfileType. + def exitShowProfileType(self, ctx:MySqlParser.ShowProfileTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#binlogStatement. + def enterBinlogStatement(self, ctx:MySqlParser.BinlogStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#binlogStatement. + def exitBinlogStatement(self, ctx:MySqlParser.BinlogStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#cacheIndexStatement. + def enterCacheIndexStatement(self, ctx:MySqlParser.CacheIndexStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#cacheIndexStatement. + def exitCacheIndexStatement(self, ctx:MySqlParser.CacheIndexStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#flushStatement. + def enterFlushStatement(self, ctx:MySqlParser.FlushStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#flushStatement. + def exitFlushStatement(self, ctx:MySqlParser.FlushStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#killStatement. + def enterKillStatement(self, ctx:MySqlParser.KillStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#killStatement. + def exitKillStatement(self, ctx:MySqlParser.KillStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#loadIndexIntoCache. + def enterLoadIndexIntoCache(self, ctx:MySqlParser.LoadIndexIntoCacheContext): + pass + + # Exit a parse tree produced by MySqlParser#loadIndexIntoCache. + def exitLoadIndexIntoCache(self, ctx:MySqlParser.LoadIndexIntoCacheContext): + pass + + + # Enter a parse tree produced by MySqlParser#resetStatement. + def enterResetStatement(self, ctx:MySqlParser.ResetStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#resetStatement. + def exitResetStatement(self, ctx:MySqlParser.ResetStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#shutdownStatement. + def enterShutdownStatement(self, ctx:MySqlParser.ShutdownStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#shutdownStatement. + def exitShutdownStatement(self, ctx:MySqlParser.ShutdownStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableIndexes. + def enterTableIndexes(self, ctx:MySqlParser.TableIndexesContext): + pass + + # Exit a parse tree produced by MySqlParser#tableIndexes. + def exitTableIndexes(self, ctx:MySqlParser.TableIndexesContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleFlushOption. + def enterSimpleFlushOption(self, ctx:MySqlParser.SimpleFlushOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleFlushOption. + def exitSimpleFlushOption(self, ctx:MySqlParser.SimpleFlushOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#channelFlushOption. + def enterChannelFlushOption(self, ctx:MySqlParser.ChannelFlushOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#channelFlushOption. + def exitChannelFlushOption(self, ctx:MySqlParser.ChannelFlushOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableFlushOption. + def enterTableFlushOption(self, ctx:MySqlParser.TableFlushOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#tableFlushOption. + def exitTableFlushOption(self, ctx:MySqlParser.TableFlushOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#flushTableOption. + def enterFlushTableOption(self, ctx:MySqlParser.FlushTableOptionContext): + pass + + # Exit a parse tree produced by MySqlParser#flushTableOption. + def exitFlushTableOption(self, ctx:MySqlParser.FlushTableOptionContext): + pass + + + # Enter a parse tree produced by MySqlParser#loadedTableIndexes. + def enterLoadedTableIndexes(self, ctx:MySqlParser.LoadedTableIndexesContext): + pass + + # Exit a parse tree produced by MySqlParser#loadedTableIndexes. + def exitLoadedTableIndexes(self, ctx:MySqlParser.LoadedTableIndexesContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleDescribeStatement. + def enterSimpleDescribeStatement(self, ctx:MySqlParser.SimpleDescribeStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleDescribeStatement. + def exitSimpleDescribeStatement(self, ctx:MySqlParser.SimpleDescribeStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#fullDescribeStatement. + def enterFullDescribeStatement(self, ctx:MySqlParser.FullDescribeStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#fullDescribeStatement. + def exitFullDescribeStatement(self, ctx:MySqlParser.FullDescribeStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#helpStatement. + def enterHelpStatement(self, ctx:MySqlParser.HelpStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#helpStatement. + def exitHelpStatement(self, ctx:MySqlParser.HelpStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#useStatement. + def enterUseStatement(self, ctx:MySqlParser.UseStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#useStatement. + def exitUseStatement(self, ctx:MySqlParser.UseStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#signalStatement. + def enterSignalStatement(self, ctx:MySqlParser.SignalStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#signalStatement. + def exitSignalStatement(self, ctx:MySqlParser.SignalStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#resignalStatement. + def enterResignalStatement(self, ctx:MySqlParser.ResignalStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#resignalStatement. + def exitResignalStatement(self, ctx:MySqlParser.ResignalStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#signalConditionInformation. + def enterSignalConditionInformation(self, ctx:MySqlParser.SignalConditionInformationContext): + pass + + # Exit a parse tree produced by MySqlParser#signalConditionInformation. + def exitSignalConditionInformation(self, ctx:MySqlParser.SignalConditionInformationContext): + pass + + + # Enter a parse tree produced by MySqlParser#withStatement. + def enterWithStatement(self, ctx:MySqlParser.WithStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#withStatement. + def exitWithStatement(self, ctx:MySqlParser.WithStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableStatement. + def enterTableStatement(self, ctx:MySqlParser.TableStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#tableStatement. + def exitTableStatement(self, ctx:MySqlParser.TableStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#diagnosticsStatement. + def enterDiagnosticsStatement(self, ctx:MySqlParser.DiagnosticsStatementContext): + pass + + # Exit a parse tree produced by MySqlParser#diagnosticsStatement. + def exitDiagnosticsStatement(self, ctx:MySqlParser.DiagnosticsStatementContext): + pass + + + # Enter a parse tree produced by MySqlParser#diagnosticsConditionInformationName. + def enterDiagnosticsConditionInformationName(self, ctx:MySqlParser.DiagnosticsConditionInformationNameContext): + pass + + # Exit a parse tree produced by MySqlParser#diagnosticsConditionInformationName. + def exitDiagnosticsConditionInformationName(self, ctx:MySqlParser.DiagnosticsConditionInformationNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#describeStatements. + def enterDescribeStatements(self, ctx:MySqlParser.DescribeStatementsContext): + pass + + # Exit a parse tree produced by MySqlParser#describeStatements. + def exitDescribeStatements(self, ctx:MySqlParser.DescribeStatementsContext): + pass + + + # Enter a parse tree produced by MySqlParser#describeConnection. + def enterDescribeConnection(self, ctx:MySqlParser.DescribeConnectionContext): + pass + + # Exit a parse tree produced by MySqlParser#describeConnection. + def exitDescribeConnection(self, ctx:MySqlParser.DescribeConnectionContext): + pass + + + # Enter a parse tree produced by MySqlParser#fullId. + def enterFullId(self, ctx:MySqlParser.FullIdContext): + pass + + # Exit a parse tree produced by MySqlParser#fullId. + def exitFullId(self, ctx:MySqlParser.FullIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#tableName. + def enterTableName(self, ctx:MySqlParser.TableNameContext): + pass + + # Exit a parse tree produced by MySqlParser#tableName. + def exitTableName(self, ctx:MySqlParser.TableNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#roleName. + def enterRoleName(self, ctx:MySqlParser.RoleNameContext): + pass + + # Exit a parse tree produced by MySqlParser#roleName. + def exitRoleName(self, ctx:MySqlParser.RoleNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#fullColumnName. + def enterFullColumnName(self, ctx:MySqlParser.FullColumnNameContext): + pass + + # Exit a parse tree produced by MySqlParser#fullColumnName. + def exitFullColumnName(self, ctx:MySqlParser.FullColumnNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexColumnName. + def enterIndexColumnName(self, ctx:MySqlParser.IndexColumnNameContext): + pass + + # Exit a parse tree produced by MySqlParser#indexColumnName. + def exitIndexColumnName(self, ctx:MySqlParser.IndexColumnNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#userName. + def enterUserName(self, ctx:MySqlParser.UserNameContext): + pass + + # Exit a parse tree produced by MySqlParser#userName. + def exitUserName(self, ctx:MySqlParser.UserNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#mysqlVariable. + def enterMysqlVariable(self, ctx:MySqlParser.MysqlVariableContext): + pass + + # Exit a parse tree produced by MySqlParser#mysqlVariable. + def exitMysqlVariable(self, ctx:MySqlParser.MysqlVariableContext): + pass + + + # Enter a parse tree produced by MySqlParser#charsetName. + def enterCharsetName(self, ctx:MySqlParser.CharsetNameContext): + pass + + # Exit a parse tree produced by MySqlParser#charsetName. + def exitCharsetName(self, ctx:MySqlParser.CharsetNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#collationName. + def enterCollationName(self, ctx:MySqlParser.CollationNameContext): + pass + + # Exit a parse tree produced by MySqlParser#collationName. + def exitCollationName(self, ctx:MySqlParser.CollationNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#engineName. + def enterEngineName(self, ctx:MySqlParser.EngineNameContext): + pass + + # Exit a parse tree produced by MySqlParser#engineName. + def exitEngineName(self, ctx:MySqlParser.EngineNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#engineNameBase. + def enterEngineNameBase(self, ctx:MySqlParser.EngineNameBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#engineNameBase. + def exitEngineNameBase(self, ctx:MySqlParser.EngineNameBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#uuidSet. + def enterUuidSet(self, ctx:MySqlParser.UuidSetContext): + pass + + # Exit a parse tree produced by MySqlParser#uuidSet. + def exitUuidSet(self, ctx:MySqlParser.UuidSetContext): + pass + + + # Enter a parse tree produced by MySqlParser#xid. + def enterXid(self, ctx:MySqlParser.XidContext): + pass + + # Exit a parse tree produced by MySqlParser#xid. + def exitXid(self, ctx:MySqlParser.XidContext): + pass + + + # Enter a parse tree produced by MySqlParser#xuidStringId. + def enterXuidStringId(self, ctx:MySqlParser.XuidStringIdContext): + pass + + # Exit a parse tree produced by MySqlParser#xuidStringId. + def exitXuidStringId(self, ctx:MySqlParser.XuidStringIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#authPlugin. + def enterAuthPlugin(self, ctx:MySqlParser.AuthPluginContext): + pass + + # Exit a parse tree produced by MySqlParser#authPlugin. + def exitAuthPlugin(self, ctx:MySqlParser.AuthPluginContext): + pass + + + # Enter a parse tree produced by MySqlParser#uid. + def enterUid(self, ctx:MySqlParser.UidContext): + pass + + # Exit a parse tree produced by MySqlParser#uid. + def exitUid(self, ctx:MySqlParser.UidContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleId. + def enterSimpleId(self, ctx:MySqlParser.SimpleIdContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleId. + def exitSimpleId(self, ctx:MySqlParser.SimpleIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#dottedId. + def enterDottedId(self, ctx:MySqlParser.DottedIdContext): + pass + + # Exit a parse tree produced by MySqlParser#dottedId. + def exitDottedId(self, ctx:MySqlParser.DottedIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#decimalLiteral. + def enterDecimalLiteral(self, ctx:MySqlParser.DecimalLiteralContext): + pass + + # Exit a parse tree produced by MySqlParser#decimalLiteral. + def exitDecimalLiteral(self, ctx:MySqlParser.DecimalLiteralContext): + pass + + + # Enter a parse tree produced by MySqlParser#fileSizeLiteral. + def enterFileSizeLiteral(self, ctx:MySqlParser.FileSizeLiteralContext): + pass + + # Exit a parse tree produced by MySqlParser#fileSizeLiteral. + def exitFileSizeLiteral(self, ctx:MySqlParser.FileSizeLiteralContext): + pass + + + # Enter a parse tree produced by MySqlParser#stringLiteral. + def enterStringLiteral(self, ctx:MySqlParser.StringLiteralContext): + pass + + # Exit a parse tree produced by MySqlParser#stringLiteral. + def exitStringLiteral(self, ctx:MySqlParser.StringLiteralContext): + pass + + + # Enter a parse tree produced by MySqlParser#booleanLiteral. + def enterBooleanLiteral(self, ctx:MySqlParser.BooleanLiteralContext): + pass + + # Exit a parse tree produced by MySqlParser#booleanLiteral. + def exitBooleanLiteral(self, ctx:MySqlParser.BooleanLiteralContext): + pass + + + # Enter a parse tree produced by MySqlParser#hexadecimalLiteral. + def enterHexadecimalLiteral(self, ctx:MySqlParser.HexadecimalLiteralContext): + pass + + # Exit a parse tree produced by MySqlParser#hexadecimalLiteral. + def exitHexadecimalLiteral(self, ctx:MySqlParser.HexadecimalLiteralContext): + pass + + + # Enter a parse tree produced by MySqlParser#nullNotnull. + def enterNullNotnull(self, ctx:MySqlParser.NullNotnullContext): + pass + + # Exit a parse tree produced by MySqlParser#nullNotnull. + def exitNullNotnull(self, ctx:MySqlParser.NullNotnullContext): + pass + + + # Enter a parse tree produced by MySqlParser#constant. + def enterConstant(self, ctx:MySqlParser.ConstantContext): + pass + + # Exit a parse tree produced by MySqlParser#constant. + def exitConstant(self, ctx:MySqlParser.ConstantContext): + pass + + + # Enter a parse tree produced by MySqlParser#stringDataType. + def enterStringDataType(self, ctx:MySqlParser.StringDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#stringDataType. + def exitStringDataType(self, ctx:MySqlParser.StringDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#nationalVaryingStringDataType. + def enterNationalVaryingStringDataType(self, ctx:MySqlParser.NationalVaryingStringDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#nationalVaryingStringDataType. + def exitNationalVaryingStringDataType(self, ctx:MySqlParser.NationalVaryingStringDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#nationalStringDataType. + def enterNationalStringDataType(self, ctx:MySqlParser.NationalStringDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#nationalStringDataType. + def exitNationalStringDataType(self, ctx:MySqlParser.NationalStringDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#dimensionDataType. + def enterDimensionDataType(self, ctx:MySqlParser.DimensionDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#dimensionDataType. + def exitDimensionDataType(self, ctx:MySqlParser.DimensionDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleDataType. + def enterSimpleDataType(self, ctx:MySqlParser.SimpleDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleDataType. + def exitSimpleDataType(self, ctx:MySqlParser.SimpleDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#collectionDataType. + def enterCollectionDataType(self, ctx:MySqlParser.CollectionDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#collectionDataType. + def exitCollectionDataType(self, ctx:MySqlParser.CollectionDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#spatialDataType. + def enterSpatialDataType(self, ctx:MySqlParser.SpatialDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#spatialDataType. + def exitSpatialDataType(self, ctx:MySqlParser.SpatialDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#longVarcharDataType. + def enterLongVarcharDataType(self, ctx:MySqlParser.LongVarcharDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#longVarcharDataType. + def exitLongVarcharDataType(self, ctx:MySqlParser.LongVarcharDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#longVarbinaryDataType. + def enterLongVarbinaryDataType(self, ctx:MySqlParser.LongVarbinaryDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#longVarbinaryDataType. + def exitLongVarbinaryDataType(self, ctx:MySqlParser.LongVarbinaryDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#collectionOptions. + def enterCollectionOptions(self, ctx:MySqlParser.CollectionOptionsContext): + pass + + # Exit a parse tree produced by MySqlParser#collectionOptions. + def exitCollectionOptions(self, ctx:MySqlParser.CollectionOptionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#convertedDataType. + def enterConvertedDataType(self, ctx:MySqlParser.ConvertedDataTypeContext): + pass + + # Exit a parse tree produced by MySqlParser#convertedDataType. + def exitConvertedDataType(self, ctx:MySqlParser.ConvertedDataTypeContext): + pass + + + # Enter a parse tree produced by MySqlParser#lengthOneDimension. + def enterLengthOneDimension(self, ctx:MySqlParser.LengthOneDimensionContext): + pass + + # Exit a parse tree produced by MySqlParser#lengthOneDimension. + def exitLengthOneDimension(self, ctx:MySqlParser.LengthOneDimensionContext): + pass + + + # Enter a parse tree produced by MySqlParser#lengthTwoDimension. + def enterLengthTwoDimension(self, ctx:MySqlParser.LengthTwoDimensionContext): + pass + + # Exit a parse tree produced by MySqlParser#lengthTwoDimension. + def exitLengthTwoDimension(self, ctx:MySqlParser.LengthTwoDimensionContext): + pass + + + # Enter a parse tree produced by MySqlParser#lengthTwoOptionalDimension. + def enterLengthTwoOptionalDimension(self, ctx:MySqlParser.LengthTwoOptionalDimensionContext): + pass + + # Exit a parse tree produced by MySqlParser#lengthTwoOptionalDimension. + def exitLengthTwoOptionalDimension(self, ctx:MySqlParser.LengthTwoOptionalDimensionContext): + pass + + + # Enter a parse tree produced by MySqlParser#uidList. + def enterUidList(self, ctx:MySqlParser.UidListContext): + pass + + # Exit a parse tree produced by MySqlParser#uidList. + def exitUidList(self, ctx:MySqlParser.UidListContext): + pass + + + # Enter a parse tree produced by MySqlParser#fullColumnNameList. + def enterFullColumnNameList(self, ctx:MySqlParser.FullColumnNameListContext): + pass + + # Exit a parse tree produced by MySqlParser#fullColumnNameList. + def exitFullColumnNameList(self, ctx:MySqlParser.FullColumnNameListContext): + pass + + + # Enter a parse tree produced by MySqlParser#tables. + def enterTables(self, ctx:MySqlParser.TablesContext): + pass + + # Exit a parse tree produced by MySqlParser#tables. + def exitTables(self, ctx:MySqlParser.TablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#indexColumnNames. + def enterIndexColumnNames(self, ctx:MySqlParser.IndexColumnNamesContext): + pass + + # Exit a parse tree produced by MySqlParser#indexColumnNames. + def exitIndexColumnNames(self, ctx:MySqlParser.IndexColumnNamesContext): + pass + + + # Enter a parse tree produced by MySqlParser#expressions. + def enterExpressions(self, ctx:MySqlParser.ExpressionsContext): + pass + + # Exit a parse tree produced by MySqlParser#expressions. + def exitExpressions(self, ctx:MySqlParser.ExpressionsContext): + pass + + + # Enter a parse tree produced by MySqlParser#expressionsWithDefaults. + def enterExpressionsWithDefaults(self, ctx:MySqlParser.ExpressionsWithDefaultsContext): + pass + + # Exit a parse tree produced by MySqlParser#expressionsWithDefaults. + def exitExpressionsWithDefaults(self, ctx:MySqlParser.ExpressionsWithDefaultsContext): + pass + + + # Enter a parse tree produced by MySqlParser#constants. + def enterConstants(self, ctx:MySqlParser.ConstantsContext): + pass + + # Exit a parse tree produced by MySqlParser#constants. + def exitConstants(self, ctx:MySqlParser.ConstantsContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleStrings. + def enterSimpleStrings(self, ctx:MySqlParser.SimpleStringsContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleStrings. + def exitSimpleStrings(self, ctx:MySqlParser.SimpleStringsContext): + pass + + + # Enter a parse tree produced by MySqlParser#userVariables. + def enterUserVariables(self, ctx:MySqlParser.UserVariablesContext): + pass + + # Exit a parse tree produced by MySqlParser#userVariables. + def exitUserVariables(self, ctx:MySqlParser.UserVariablesContext): + pass + + + # Enter a parse tree produced by MySqlParser#defaultValue. + def enterDefaultValue(self, ctx:MySqlParser.DefaultValueContext): + pass + + # Exit a parse tree produced by MySqlParser#defaultValue. + def exitDefaultValue(self, ctx:MySqlParser.DefaultValueContext): + pass + + + # Enter a parse tree produced by MySqlParser#currentTimestamp. + def enterCurrentTimestamp(self, ctx:MySqlParser.CurrentTimestampContext): + pass + + # Exit a parse tree produced by MySqlParser#currentTimestamp. + def exitCurrentTimestamp(self, ctx:MySqlParser.CurrentTimestampContext): + pass + + + # Enter a parse tree produced by MySqlParser#expressionOrDefault. + def enterExpressionOrDefault(self, ctx:MySqlParser.ExpressionOrDefaultContext): + pass + + # Exit a parse tree produced by MySqlParser#expressionOrDefault. + def exitExpressionOrDefault(self, ctx:MySqlParser.ExpressionOrDefaultContext): + pass + + + # Enter a parse tree produced by MySqlParser#ifExists. + def enterIfExists(self, ctx:MySqlParser.IfExistsContext): + pass + + # Exit a parse tree produced by MySqlParser#ifExists. + def exitIfExists(self, ctx:MySqlParser.IfExistsContext): + pass + + + # Enter a parse tree produced by MySqlParser#ifNotExists. + def enterIfNotExists(self, ctx:MySqlParser.IfNotExistsContext): + pass + + # Exit a parse tree produced by MySqlParser#ifNotExists. + def exitIfNotExists(self, ctx:MySqlParser.IfNotExistsContext): + pass + + + # Enter a parse tree produced by MySqlParser#orReplace. + def enterOrReplace(self, ctx:MySqlParser.OrReplaceContext): + pass + + # Exit a parse tree produced by MySqlParser#orReplace. + def exitOrReplace(self, ctx:MySqlParser.OrReplaceContext): + pass + + + # Enter a parse tree produced by MySqlParser#waitNowaitClause. + def enterWaitNowaitClause(self, ctx:MySqlParser.WaitNowaitClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#waitNowaitClause. + def exitWaitNowaitClause(self, ctx:MySqlParser.WaitNowaitClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#specificFunctionCall. + def enterSpecificFunctionCall(self, ctx:MySqlParser.SpecificFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#specificFunctionCall. + def exitSpecificFunctionCall(self, ctx:MySqlParser.SpecificFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#aggregateFunctionCall. + def enterAggregateFunctionCall(self, ctx:MySqlParser.AggregateFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#aggregateFunctionCall. + def exitAggregateFunctionCall(self, ctx:MySqlParser.AggregateFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#nonAggregateFunctionCall. + def enterNonAggregateFunctionCall(self, ctx:MySqlParser.NonAggregateFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#nonAggregateFunctionCall. + def exitNonAggregateFunctionCall(self, ctx:MySqlParser.NonAggregateFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#scalarFunctionCall. + def enterScalarFunctionCall(self, ctx:MySqlParser.ScalarFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#scalarFunctionCall. + def exitScalarFunctionCall(self, ctx:MySqlParser.ScalarFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#udfFunctionCall. + def enterUdfFunctionCall(self, ctx:MySqlParser.UdfFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#udfFunctionCall. + def exitUdfFunctionCall(self, ctx:MySqlParser.UdfFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#passwordFunctionCall. + def enterPasswordFunctionCall(self, ctx:MySqlParser.PasswordFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#passwordFunctionCall. + def exitPasswordFunctionCall(self, ctx:MySqlParser.PasswordFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#simpleFunctionCall. + def enterSimpleFunctionCall(self, ctx:MySqlParser.SimpleFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#simpleFunctionCall. + def exitSimpleFunctionCall(self, ctx:MySqlParser.SimpleFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#dataTypeFunctionCall. + def enterDataTypeFunctionCall(self, ctx:MySqlParser.DataTypeFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#dataTypeFunctionCall. + def exitDataTypeFunctionCall(self, ctx:MySqlParser.DataTypeFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#valuesFunctionCall. + def enterValuesFunctionCall(self, ctx:MySqlParser.ValuesFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#valuesFunctionCall. + def exitValuesFunctionCall(self, ctx:MySqlParser.ValuesFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#caseExpressionFunctionCall. + def enterCaseExpressionFunctionCall(self, ctx:MySqlParser.CaseExpressionFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#caseExpressionFunctionCall. + def exitCaseExpressionFunctionCall(self, ctx:MySqlParser.CaseExpressionFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#caseFunctionCall. + def enterCaseFunctionCall(self, ctx:MySqlParser.CaseFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#caseFunctionCall. + def exitCaseFunctionCall(self, ctx:MySqlParser.CaseFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#charFunctionCall. + def enterCharFunctionCall(self, ctx:MySqlParser.CharFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#charFunctionCall. + def exitCharFunctionCall(self, ctx:MySqlParser.CharFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#positionFunctionCall. + def enterPositionFunctionCall(self, ctx:MySqlParser.PositionFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#positionFunctionCall. + def exitPositionFunctionCall(self, ctx:MySqlParser.PositionFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#substrFunctionCall. + def enterSubstrFunctionCall(self, ctx:MySqlParser.SubstrFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#substrFunctionCall. + def exitSubstrFunctionCall(self, ctx:MySqlParser.SubstrFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#trimFunctionCall. + def enterTrimFunctionCall(self, ctx:MySqlParser.TrimFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#trimFunctionCall. + def exitTrimFunctionCall(self, ctx:MySqlParser.TrimFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#weightFunctionCall. + def enterWeightFunctionCall(self, ctx:MySqlParser.WeightFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#weightFunctionCall. + def exitWeightFunctionCall(self, ctx:MySqlParser.WeightFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#extractFunctionCall. + def enterExtractFunctionCall(self, ctx:MySqlParser.ExtractFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#extractFunctionCall. + def exitExtractFunctionCall(self, ctx:MySqlParser.ExtractFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#getFormatFunctionCall. + def enterGetFormatFunctionCall(self, ctx:MySqlParser.GetFormatFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#getFormatFunctionCall. + def exitGetFormatFunctionCall(self, ctx:MySqlParser.GetFormatFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonValueFunctionCall. + def enterJsonValueFunctionCall(self, ctx:MySqlParser.JsonValueFunctionCallContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonValueFunctionCall. + def exitJsonValueFunctionCall(self, ctx:MySqlParser.JsonValueFunctionCallContext): + pass + + + # Enter a parse tree produced by MySqlParser#caseFuncAlternative. + def enterCaseFuncAlternative(self, ctx:MySqlParser.CaseFuncAlternativeContext): + pass + + # Exit a parse tree produced by MySqlParser#caseFuncAlternative. + def exitCaseFuncAlternative(self, ctx:MySqlParser.CaseFuncAlternativeContext): + pass + + + # Enter a parse tree produced by MySqlParser#levelWeightList. + def enterLevelWeightList(self, ctx:MySqlParser.LevelWeightListContext): + pass + + # Exit a parse tree produced by MySqlParser#levelWeightList. + def exitLevelWeightList(self, ctx:MySqlParser.LevelWeightListContext): + pass + + + # Enter a parse tree produced by MySqlParser#levelWeightRange. + def enterLevelWeightRange(self, ctx:MySqlParser.LevelWeightRangeContext): + pass + + # Exit a parse tree produced by MySqlParser#levelWeightRange. + def exitLevelWeightRange(self, ctx:MySqlParser.LevelWeightRangeContext): + pass + + + # Enter a parse tree produced by MySqlParser#levelInWeightListElement. + def enterLevelInWeightListElement(self, ctx:MySqlParser.LevelInWeightListElementContext): + pass + + # Exit a parse tree produced by MySqlParser#levelInWeightListElement. + def exitLevelInWeightListElement(self, ctx:MySqlParser.LevelInWeightListElementContext): + pass + + + # Enter a parse tree produced by MySqlParser#aggregateWindowedFunction. + def enterAggregateWindowedFunction(self, ctx:MySqlParser.AggregateWindowedFunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#aggregateWindowedFunction. + def exitAggregateWindowedFunction(self, ctx:MySqlParser.AggregateWindowedFunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#nonAggregateWindowedFunction. + def enterNonAggregateWindowedFunction(self, ctx:MySqlParser.NonAggregateWindowedFunctionContext): + pass + + # Exit a parse tree produced by MySqlParser#nonAggregateWindowedFunction. + def exitNonAggregateWindowedFunction(self, ctx:MySqlParser.NonAggregateWindowedFunctionContext): + pass + + + # Enter a parse tree produced by MySqlParser#overClause. + def enterOverClause(self, ctx:MySqlParser.OverClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#overClause. + def exitOverClause(self, ctx:MySqlParser.OverClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#windowSpec. + def enterWindowSpec(self, ctx:MySqlParser.WindowSpecContext): + pass + + # Exit a parse tree produced by MySqlParser#windowSpec. + def exitWindowSpec(self, ctx:MySqlParser.WindowSpecContext): + pass + + + # Enter a parse tree produced by MySqlParser#windowName. + def enterWindowName(self, ctx:MySqlParser.WindowNameContext): + pass + + # Exit a parse tree produced by MySqlParser#windowName. + def exitWindowName(self, ctx:MySqlParser.WindowNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#frameClause. + def enterFrameClause(self, ctx:MySqlParser.FrameClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#frameClause. + def exitFrameClause(self, ctx:MySqlParser.FrameClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#frameUnits. + def enterFrameUnits(self, ctx:MySqlParser.FrameUnitsContext): + pass + + # Exit a parse tree produced by MySqlParser#frameUnits. + def exitFrameUnits(self, ctx:MySqlParser.FrameUnitsContext): + pass + + + # Enter a parse tree produced by MySqlParser#frameExtent. + def enterFrameExtent(self, ctx:MySqlParser.FrameExtentContext): + pass + + # Exit a parse tree produced by MySqlParser#frameExtent. + def exitFrameExtent(self, ctx:MySqlParser.FrameExtentContext): + pass + + + # Enter a parse tree produced by MySqlParser#frameBetween. + def enterFrameBetween(self, ctx:MySqlParser.FrameBetweenContext): + pass + + # Exit a parse tree produced by MySqlParser#frameBetween. + def exitFrameBetween(self, ctx:MySqlParser.FrameBetweenContext): + pass + + + # Enter a parse tree produced by MySqlParser#frameRange. + def enterFrameRange(self, ctx:MySqlParser.FrameRangeContext): + pass + + # Exit a parse tree produced by MySqlParser#frameRange. + def exitFrameRange(self, ctx:MySqlParser.FrameRangeContext): + pass + + + # Enter a parse tree produced by MySqlParser#partitionClause. + def enterPartitionClause(self, ctx:MySqlParser.PartitionClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#partitionClause. + def exitPartitionClause(self, ctx:MySqlParser.PartitionClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#scalarFunctionName. + def enterScalarFunctionName(self, ctx:MySqlParser.ScalarFunctionNameContext): + pass + + # Exit a parse tree produced by MySqlParser#scalarFunctionName. + def exitScalarFunctionName(self, ctx:MySqlParser.ScalarFunctionNameContext): + pass + + + # Enter a parse tree produced by MySqlParser#passwordFunctionClause. + def enterPasswordFunctionClause(self, ctx:MySqlParser.PasswordFunctionClauseContext): + pass + + # Exit a parse tree produced by MySqlParser#passwordFunctionClause. + def exitPasswordFunctionClause(self, ctx:MySqlParser.PasswordFunctionClauseContext): + pass + + + # Enter a parse tree produced by MySqlParser#functionArgs. + def enterFunctionArgs(self, ctx:MySqlParser.FunctionArgsContext): + pass + + # Exit a parse tree produced by MySqlParser#functionArgs. + def exitFunctionArgs(self, ctx:MySqlParser.FunctionArgsContext): + pass + + + # Enter a parse tree produced by MySqlParser#functionArg. + def enterFunctionArg(self, ctx:MySqlParser.FunctionArgContext): + pass + + # Exit a parse tree produced by MySqlParser#functionArg. + def exitFunctionArg(self, ctx:MySqlParser.FunctionArgContext): + pass + + + # Enter a parse tree produced by MySqlParser#isExpression. + def enterIsExpression(self, ctx:MySqlParser.IsExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#isExpression. + def exitIsExpression(self, ctx:MySqlParser.IsExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#notExpression. + def enterNotExpression(self, ctx:MySqlParser.NotExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#notExpression. + def exitNotExpression(self, ctx:MySqlParser.NotExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#logicalExpression. + def enterLogicalExpression(self, ctx:MySqlParser.LogicalExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#logicalExpression. + def exitLogicalExpression(self, ctx:MySqlParser.LogicalExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#predicateExpression. + def enterPredicateExpression(self, ctx:MySqlParser.PredicateExpressionContext): + pass + + # Exit a parse tree produced by MySqlParser#predicateExpression. + def exitPredicateExpression(self, ctx:MySqlParser.PredicateExpressionContext): + pass + + + # Enter a parse tree produced by MySqlParser#soundsLikePredicate. + def enterSoundsLikePredicate(self, ctx:MySqlParser.SoundsLikePredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#soundsLikePredicate. + def exitSoundsLikePredicate(self, ctx:MySqlParser.SoundsLikePredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#expressionAtomPredicate. + def enterExpressionAtomPredicate(self, ctx:MySqlParser.ExpressionAtomPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#expressionAtomPredicate. + def exitExpressionAtomPredicate(self, ctx:MySqlParser.ExpressionAtomPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#subqueryComparisonPredicate. + def enterSubqueryComparisonPredicate(self, ctx:MySqlParser.SubqueryComparisonPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#subqueryComparisonPredicate. + def exitSubqueryComparisonPredicate(self, ctx:MySqlParser.SubqueryComparisonPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonMemberOfPredicate. + def enterJsonMemberOfPredicate(self, ctx:MySqlParser.JsonMemberOfPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonMemberOfPredicate. + def exitJsonMemberOfPredicate(self, ctx:MySqlParser.JsonMemberOfPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#binaryComparisonPredicate. + def enterBinaryComparisonPredicate(self, ctx:MySqlParser.BinaryComparisonPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#binaryComparisonPredicate. + def exitBinaryComparisonPredicate(self, ctx:MySqlParser.BinaryComparisonPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#inPredicate. + def enterInPredicate(self, ctx:MySqlParser.InPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#inPredicate. + def exitInPredicate(self, ctx:MySqlParser.InPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#betweenPredicate. + def enterBetweenPredicate(self, ctx:MySqlParser.BetweenPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#betweenPredicate. + def exitBetweenPredicate(self, ctx:MySqlParser.BetweenPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#isNullPredicate. + def enterIsNullPredicate(self, ctx:MySqlParser.IsNullPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#isNullPredicate. + def exitIsNullPredicate(self, ctx:MySqlParser.IsNullPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#likePredicate. + def enterLikePredicate(self, ctx:MySqlParser.LikePredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#likePredicate. + def exitLikePredicate(self, ctx:MySqlParser.LikePredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#regexpPredicate. + def enterRegexpPredicate(self, ctx:MySqlParser.RegexpPredicateContext): + pass + + # Exit a parse tree produced by MySqlParser#regexpPredicate. + def exitRegexpPredicate(self, ctx:MySqlParser.RegexpPredicateContext): + pass + + + # Enter a parse tree produced by MySqlParser#unaryExpressionAtom. + def enterUnaryExpressionAtom(self, ctx:MySqlParser.UnaryExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#unaryExpressionAtom. + def exitUnaryExpressionAtom(self, ctx:MySqlParser.UnaryExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#collateExpressionAtom. + def enterCollateExpressionAtom(self, ctx:MySqlParser.CollateExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#collateExpressionAtom. + def exitCollateExpressionAtom(self, ctx:MySqlParser.CollateExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#variableAssignExpressionAtom. + def enterVariableAssignExpressionAtom(self, ctx:MySqlParser.VariableAssignExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#variableAssignExpressionAtom. + def exitVariableAssignExpressionAtom(self, ctx:MySqlParser.VariableAssignExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#mysqlVariableExpressionAtom. + def enterMysqlVariableExpressionAtom(self, ctx:MySqlParser.MysqlVariableExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#mysqlVariableExpressionAtom. + def exitMysqlVariableExpressionAtom(self, ctx:MySqlParser.MysqlVariableExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#nestedExpressionAtom. + def enterNestedExpressionAtom(self, ctx:MySqlParser.NestedExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#nestedExpressionAtom. + def exitNestedExpressionAtom(self, ctx:MySqlParser.NestedExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#nestedRowExpressionAtom. + def enterNestedRowExpressionAtom(self, ctx:MySqlParser.NestedRowExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#nestedRowExpressionAtom. + def exitNestedRowExpressionAtom(self, ctx:MySqlParser.NestedRowExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#mathExpressionAtom. + def enterMathExpressionAtom(self, ctx:MySqlParser.MathExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#mathExpressionAtom. + def exitMathExpressionAtom(self, ctx:MySqlParser.MathExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#existsExpressionAtom. + def enterExistsExpressionAtom(self, ctx:MySqlParser.ExistsExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#existsExpressionAtom. + def exitExistsExpressionAtom(self, ctx:MySqlParser.ExistsExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#intervalExpressionAtom. + def enterIntervalExpressionAtom(self, ctx:MySqlParser.IntervalExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#intervalExpressionAtom. + def exitIntervalExpressionAtom(self, ctx:MySqlParser.IntervalExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonExpressionAtom. + def enterJsonExpressionAtom(self, ctx:MySqlParser.JsonExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonExpressionAtom. + def exitJsonExpressionAtom(self, ctx:MySqlParser.JsonExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#subqueryExpressionAtom. + def enterSubqueryExpressionAtom(self, ctx:MySqlParser.SubqueryExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#subqueryExpressionAtom. + def exitSubqueryExpressionAtom(self, ctx:MySqlParser.SubqueryExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#constantExpressionAtom. + def enterConstantExpressionAtom(self, ctx:MySqlParser.ConstantExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#constantExpressionAtom. + def exitConstantExpressionAtom(self, ctx:MySqlParser.ConstantExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#functionCallExpressionAtom. + def enterFunctionCallExpressionAtom(self, ctx:MySqlParser.FunctionCallExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#functionCallExpressionAtom. + def exitFunctionCallExpressionAtom(self, ctx:MySqlParser.FunctionCallExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#binaryExpressionAtom. + def enterBinaryExpressionAtom(self, ctx:MySqlParser.BinaryExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#binaryExpressionAtom. + def exitBinaryExpressionAtom(self, ctx:MySqlParser.BinaryExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#fullColumnNameExpressionAtom. + def enterFullColumnNameExpressionAtom(self, ctx:MySqlParser.FullColumnNameExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#fullColumnNameExpressionAtom. + def exitFullColumnNameExpressionAtom(self, ctx:MySqlParser.FullColumnNameExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#bitExpressionAtom. + def enterBitExpressionAtom(self, ctx:MySqlParser.BitExpressionAtomContext): + pass + + # Exit a parse tree produced by MySqlParser#bitExpressionAtom. + def exitBitExpressionAtom(self, ctx:MySqlParser.BitExpressionAtomContext): + pass + + + # Enter a parse tree produced by MySqlParser#unaryOperator. + def enterUnaryOperator(self, ctx:MySqlParser.UnaryOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#unaryOperator. + def exitUnaryOperator(self, ctx:MySqlParser.UnaryOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#comparisonOperator. + def enterComparisonOperator(self, ctx:MySqlParser.ComparisonOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#comparisonOperator. + def exitComparisonOperator(self, ctx:MySqlParser.ComparisonOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#logicalOperator. + def enterLogicalOperator(self, ctx:MySqlParser.LogicalOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#logicalOperator. + def exitLogicalOperator(self, ctx:MySqlParser.LogicalOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#bitOperator. + def enterBitOperator(self, ctx:MySqlParser.BitOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#bitOperator. + def exitBitOperator(self, ctx:MySqlParser.BitOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#mathOperator. + def enterMathOperator(self, ctx:MySqlParser.MathOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#mathOperator. + def exitMathOperator(self, ctx:MySqlParser.MathOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#jsonOperator. + def enterJsonOperator(self, ctx:MySqlParser.JsonOperatorContext): + pass + + # Exit a parse tree produced by MySqlParser#jsonOperator. + def exitJsonOperator(self, ctx:MySqlParser.JsonOperatorContext): + pass + + + # Enter a parse tree produced by MySqlParser#charsetNameBase. + def enterCharsetNameBase(self, ctx:MySqlParser.CharsetNameBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#charsetNameBase. + def exitCharsetNameBase(self, ctx:MySqlParser.CharsetNameBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#transactionLevelBase. + def enterTransactionLevelBase(self, ctx:MySqlParser.TransactionLevelBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#transactionLevelBase. + def exitTransactionLevelBase(self, ctx:MySqlParser.TransactionLevelBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#privilegesBase. + def enterPrivilegesBase(self, ctx:MySqlParser.PrivilegesBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#privilegesBase. + def exitPrivilegesBase(self, ctx:MySqlParser.PrivilegesBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#intervalTypeBase. + def enterIntervalTypeBase(self, ctx:MySqlParser.IntervalTypeBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#intervalTypeBase. + def exitIntervalTypeBase(self, ctx:MySqlParser.IntervalTypeBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#dataTypeBase. + def enterDataTypeBase(self, ctx:MySqlParser.DataTypeBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#dataTypeBase. + def exitDataTypeBase(self, ctx:MySqlParser.DataTypeBaseContext): + pass + + + # Enter a parse tree produced by MySqlParser#keywordsCanBeId. + def enterKeywordsCanBeId(self, ctx:MySqlParser.KeywordsCanBeIdContext): + pass + + # Exit a parse tree produced by MySqlParser#keywordsCanBeId. + def exitKeywordsCanBeId(self, ctx:MySqlParser.KeywordsCanBeIdContext): + pass + + + # Enter a parse tree produced by MySqlParser#functionNameBase. + def enterFunctionNameBase(self, ctx:MySqlParser.FunctionNameBaseContext): + pass + + # Exit a parse tree produced by MySqlParser#functionNameBase. + def exitFunctionNameBase(self, ctx:MySqlParser.FunctionNameBaseContext): + pass + + + +del MySqlParser \ No newline at end of file diff --git a/pymysqlreplication/ddl_parser/TableSchemaAlterationListener.py b/pymysqlreplication/ddl_parser/TableSchemaAlterationListener.py new file mode 100644 index 00000000..22ae7ff5 --- /dev/null +++ b/pymysqlreplication/ddl_parser/TableSchemaAlterationListener.py @@ -0,0 +1,40 @@ +from typing import Dict + +from MySqlParserListener import MySqlParserListener +from pymysqlreplication.table import Table +from pymysqlreplication.column import Column + +class TableSchemaAlterationListener(MySqlParserListener): + def __init__(self, table_map, schema): + self.__schema: str = schema + self.__table: str = None + self.__table_map: Dict[int, Table] = table_map + + def enterTableName(self, ctx): + self.__table = ctx.getText() + + def enterAlterByAddColumn(self, ctx): + columm_name = ctx.uid(0).getText() + column_type = ctx.columnDefinition().getText() + + table = self.__table_map[f"{self.__schema}.{self.__table}"] + table.columns.append(Column(name=columm_name, column=column_type)) + + def enterAlterByDropColumn(self, ctx): + columm_name = ctx.uid(0).getText() + + table = self.__table_map[f"{self.__schema}.{self.__table}"] + table.columns = [column for column in table.columns if column.name != columm_name] + + def enterAlterByModifyColumn(self, ctx): + raise NotImplementedError() + + def enterAlterByRenameColumn(self, ctx): + old_columm_name = ctx.uid(0).getText() + new_columm_name = ctx.uid(1).getText() + + table = self.__table_map[f"{self.__schema}.{self.__table}"] + for column in table.columns: + if column.name == old_columm_name: + column.name = new_columm_name + break diff --git a/pymysqlreplication/event.py b/pymysqlreplication/event.py index 2d6afbbd..6a4935bc 100644 --- a/pymysqlreplication/event.py +++ b/pymysqlreplication/event.py @@ -3,11 +3,15 @@ import datetime import decimal import zlib +from typing import Union, Optional from pymysqlreplication.constants.STATUS_VAR_KEY import * +from pymysqlreplication.ddl_parser.TableSchemaAlterationListener import TableSchemaAlterationListener from pymysqlreplication.exceptions import StatusVariableMismatch from pymysqlreplication.util.bytes import parse_decimal_from_bytes -from typing import Union, Optional +from antlr4 import InputStream, CommonTokenStream, ParseTreeWalker +from pymysqlreplication.ddl_parser.MySqlLexer import MySqlLexer +from pymysqlreplication.ddl_parser.MySqlParser import MySqlParser class BinLogEvent(object): @@ -26,6 +30,7 @@ def __init__( ignore_decode_errors=False, verify_checksum=False, optional_meta_data=False, + table_id_to_name=None, ): self.packet = from_packet self.table_map = table_map @@ -469,8 +474,20 @@ def __init__(self, from_packet, event_size, table_map, ctl_connection, **kwargs) event_size - 13 - self.status_vars_length - self.schema_length - 1 ) self.query = query.decode("utf-8", errors="backslashreplace") + if not self.optional_meta_data: + self.__sync_table_map_with_query() # string[EOF] query + def __sync_table_map_with_query(self, table_map): + input_stream = InputStream(self.query) + lexer = MySqlLexer(input_stream) + token_stream = CommonTokenStream(lexer) + parser = MySqlParser(token_stream) + tree = parser.root() + walker = ParseTreeWalker() + my_listener = TableSchemaAlterationListener() + walker.walk(my_listener, tree) + def _dump(self): super()._dump() print("Schema: %s" % (self.schema)) diff --git a/pymysqlreplication/packet.py b/pymysqlreplication/packet.py index 3edbd74f..4bbd3f0b 100644 --- a/pymysqlreplication/packet.py +++ b/pymysqlreplication/packet.py @@ -229,6 +229,7 @@ def __init__( ignore_decode_errors, verify_checksum, optional_meta_data, + table_id_to_name, ): # -1 because we ignore the ok byte self.read_bytes = 0 @@ -282,6 +283,7 @@ def __init__( ignore_decode_errors=ignore_decode_errors, verify_checksum=verify_checksum, optional_meta_data=optional_meta_data, + table_id_to_name=table_id_to_name, ) if not self.event._processed: self.event = None diff --git a/pymysqlreplication/row_event.py b/pymysqlreplication/row_event.py index 1818c149..303acca6 100644 --- a/pymysqlreplication/row_event.py +++ b/pymysqlreplication/row_event.py @@ -23,9 +23,15 @@ def __init__(self, from_packet, event_size, table_map, ctl_connection, **kwargs) self.__ignored_tables = kwargs["ignored_tables"] self.__only_schemas = kwargs["only_schemas"] self.__ignored_schemas = kwargs["ignored_schemas"] + self.__optional_meta_data = kwargs["optional_meta_data"] + self.__table_id_to_name = kwargs["table_id_to_name"] # Header - self.table_id = self._read_table_id() + table_id = self._read_table_id() + if self.__optional_meta_data: + self.table_id = table_id + else: + self.table_id = self.__table_id_to_name[table_id] # Additional information try: @@ -645,8 +651,9 @@ def __init__(self, from_packet, event_size, table_map, ctl_connection, **kwargs) self.__ignored_schemas = kwargs["ignored_schemas"] self.__freeze_schema = kwargs["freeze_schema"] self.__optional_meta_data = kwargs["optional_meta_data"] + self.__table_id_to_name = kwargs["table_id_to_name"] # Post-Header - self.table_id = self._read_table_id() + table_id = self._read_table_id() if self.table_id in table_map and self.__freeze_schema: self._processed = False @@ -660,6 +667,12 @@ def __init__(self, from_packet, event_size, table_map, ctl_connection, **kwargs) self.packet.advance(1) self.table_length = struct.unpack("!B", self.packet.read(1))[0] self.table = self.packet.read(self.table_length).decode() + if self.__optional_meta_data: + self.table_id = table_id + else: + table_schema_name = f"{self.schema}.{self.table}" + self.__table_id_to_name[table_id] = table_schema_name + self.table_id = table_schema_name if self.__only_tables is not None and self.table not in self.__only_tables: self._processed = False @@ -694,7 +707,10 @@ def __init__(self, from_packet, event_size, table_map, ctl_connection, **kwargs) ## Refer to definition of and call to row.event._is_null() to interpret bitmap corresponding to columns self.null_bitmask = self.packet.read((self.column_count + 7) / 8) self.table_obj = Table(self.table_id, self.schema, self.table, self.columns) - table_map[self.table_id] = self.table_obj + if self.optional_metadata: + table_map[self.table_id] = self.table_obj + else: + table_map[f"{self.schema}.{self.table}"] = self.table_obj self.optional_metadata = self._get_optional_meta_data() self._sync_column_info()